summaryrefslogtreecommitdiffstats
path: root/abs/not_built/core
diff options
context:
space:
mode:
Diffstat (limited to 'abs/not_built/core')
-rw-r--r--abs/not_built/core/LinHES-timezone/Makefile62
-rw-r--r--abs/not_built/core/LinHES-timezone/PKGBUILD30
-rw-r--r--abs/not_built/core/LinHES-timezone/Tux.csv1268
-rw-r--r--abs/not_built/core/LinHES-timezone/WorldTZ_102.zipbin0 -> 1628730 bytes
-rw-r--r--abs/not_built/core/LinHES-timezone/create_map_include.c186
-rw-r--r--abs/not_built/core/LinHES-timezone/extract_map_data.c188
-rw-r--r--abs/not_built/core/LinHES-timezone/linhes_timezone.c1120
-rw-r--r--abs/not_built/core/alsa-oss/PKGBUILD20
-rw-r--r--abs/not_built/core/aufs2-util/PKGBUILD24
-rw-r--r--abs/not_built/core/cdrdao/PKGBUILD21
-rw-r--r--abs/not_built/core/cdrdao/cdrdao-1.2.2-gcc43.patch73
-rw-r--r--abs/not_built/core/cdrdao/gcc4.patch23
-rw-r--r--abs/not_built/core/cdrkit/PKGBUILD42
-rw-r--r--abs/not_built/core/ceton-scripts/PKGBUILD24
-rw-r--r--abs/not_built/core/ceton-scripts/ccm.patch13
-rw-r--r--abs/not_built/core/ceton-scripts/cqcm.patch13
-rw-r--r--abs/not_built/core/cloog-ppl/PKGBUILD32
-rw-r--r--abs/not_built/core/coreutils/0001-ls-color-each-symlink-to-relative-name-in-properly.patch135
-rw-r--r--abs/not_built/core/coreutils/PKGBUILD66
-rw-r--r--abs/not_built/core/coreutils/coreutils-pam.patch428
-rw-r--r--abs/not_built/core/coreutils/coreutils.install21
-rw-r--r--abs/not_built/core/coreutils/su.pam9
-rw-r--r--abs/not_built/core/cpio/PKGBUILD30
-rw-r--r--abs/not_built/core/cpio/cpio-gcc43.patch139
-rw-r--r--abs/not_built/core/cpio/cpio.install21
-rw-r--r--abs/not_built/core/dash/PKGBUILD32
-rw-r--r--abs/not_built/core/db4.5/PKGBUILD41
-rw-r--r--abs/not_built/core/dhcp/ChangeLog11
-rw-r--r--abs/not_built/core/dhcp/PKGBUILD77
-rw-r--r--abs/not_built/core/dhcp/dhclient-script-pathFixes.patch118
-rw-r--r--abs/not_built/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch39
-rw-r--r--abs/not_built/core/dhcp/dhcp.conf.d6
-rw-r--r--abs/not_built/core/dhcp/dhcp.install11
-rwxr-xr-xabs/not_built/core/dhcp/dhcpd40
-rw-r--r--abs/not_built/core/directfb/PKGBUILD32
-rw-r--r--abs/not_built/core/directfb/directfb.changelog35
-rw-r--r--abs/not_built/core/diskless-legacy/PKGBUILD14
-rwxr-xr-xabs/not_built/core/diskless-legacy/config_diskless_frontend.bash704
-rw-r--r--abs/not_built/core/dvd+rw-tools/PKGBUILD32
-rw-r--r--abs/not_built/core/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch22
-rw-r--r--abs/not_built/core/eggdbus/PKGBUILD24
-rw-r--r--abs/not_built/core/evieext/PKGBUILD25
-rw-r--r--abs/not_built/core/fam/PKGBUILD47
-rwxr-xr-xabs/not_built/core/fam/fam44
-rw-r--r--abs/not_built/core/fam/fam-2.7.0-buildfixes.patch69
-rw-r--r--abs/not_built/core/fam/fam-2.7.0-dnotify.patch975
-rw-r--r--abs/not_built/core/fam/fam-2.7.0-largefiles.patch8
-rw-r--r--abs/not_built/core/fam/fam-2.7.0-limits.patch11
-rw-r--r--abs/not_built/core/feh/PKGBUILD31
-rw-r--r--abs/not_built/core/feh/__changelog1
-rw-r--r--abs/not_built/core/fltk/PKGBUILD26
-rw-r--r--abs/not_built/core/fontcacheproto/PKGBUILD21
-rw-r--r--abs/not_built/core/ftgl/PKGBUILD27
-rw-r--r--abs/not_built/core/fxload/PKGBUILD22
-rw-r--r--abs/not_built/core/gen-init-cpio/Makefile42
-rw-r--r--abs/not_built/core/gen-init-cpio/PKGBUILD26
-rw-r--r--abs/not_built/core/gen-init-cpio/gen_init_cpio.c592
-rw-r--r--abs/not_built/core/giblib/PKGBUILD26
-rw-r--r--abs/not_built/core/glibc/PKGBUILD153
-rw-r--r--abs/not_built/core/glibc/glibc-2.15-fix-res_query-assert.patch51
-rw-r--r--abs/not_built/core/glibc/glibc-2.15-revert-c5a0802a.patch226
-rw-r--r--abs/not_built/core/glibc/glibc.install20
-rwxr-xr-xabs/not_built/core/glibc/locale-gen42
-rw-r--r--abs/not_built/core/glibc/locale.gen.txt23
-rwxr-xr-xabs/not_built/core/glibc/nscd.rcd65
-rw-r--r--abs/not_built/core/glibc/nscd.service17
-rw-r--r--abs/not_built/core/glibc/nscd.tmpfiles1
-rw-r--r--abs/not_built/core/grub-gfx/040_all_grub-0.96-nxstack.patch623
-rw-r--r--abs/not_built/core/grub-gfx/05-grub-0.97-initrdaddr.diff16
-rw-r--r--abs/not_built/core/grub-gfx/PKGBUILD106
-rw-r--r--abs/not_built/core/grub-gfx/ext4.patch263
-rw-r--r--abs/not_built/core/grub-gfx/grub-0.97-graphics.patch1293
-rw-r--r--abs/not_built/core/grub-gfx/grub-gfx.install46
-rw-r--r--abs/not_built/core/grub-gfx/grub-inode-size.patch94
-rw-r--r--abs/not_built/core/grub-gfx/i2o.patch45
-rwxr-xr-xabs/not_built/core/grub-gfx/install-grub187
-rw-r--r--abs/not_built/core/grub-gfx/intelmac.patch67
-rw-r--r--abs/not_built/core/grub-gfx/menu.lst47
-rw-r--r--abs/not_built/core/grub-gfx/more-raid.patch100
-rw-r--r--abs/not_built/core/grub-gfx/special-devices.patch18
-rw-r--r--abs/not_built/core/grub-gfx/splash.xpm.gzbin0 -> 4019 bytes
-rw-r--r--abs/not_built/core/hal-info/PKGBUILD25
-rw-r--r--abs/not_built/core/hal/PKGBUILD83
-rw-r--r--abs/not_built/core/hal/cryptsetup_location.patch36
-rw-r--r--abs/not_built/core/hal/dbus-error-init.patch231
-rw-r--r--abs/not_built/core/hal/fix-libusb-detection.patch66
-rw-r--r--abs/not_built/core/hal/fix-udev-compatibility.patch31
-rw-r--r--abs/not_built/core/hal/hal54
-rw-r--r--abs/not_built/core/hal/hal-0.5.9-hide-diagnostic.patch14
-rw-r--r--abs/not_built/core/hal/hal-HDAPS-blacklist.patch30
-rw-r--r--abs/not_built/core/hal/hal-KVM-evdev.patch36
-rw-r--r--abs/not_built/core/hal/hal-policy.patch32
-rw-r--r--abs/not_built/core/hal/hal-remove-dell-killswitch.patch201
-rw-r--r--abs/not_built/core/hal/hal-use-at-console.patch45
-rw-r--r--abs/not_built/core/hal/hal-xen-unignore-axes.patch39
-rw-r--r--abs/not_built/core/hal/hal.install24
-rw-r--r--abs/not_built/core/hal/handle-input-touchpad.patch101
-rw-r--r--abs/not_built/core/hal/macbook-fix-ioperm.patch41
-rw-r--r--abs/not_built/core/hal/ntfs-mount-fix.patch18
-rw-r--r--abs/not_built/core/hal/ntfs3g-valid-options.patch11
-rw-r--r--abs/not_built/core/hal/path-max.patch31
-rw-r--r--abs/not_built/core/heirloom-mailx/PKGBUILD64
-rw-r--r--abs/not_built/core/hwdetect/PKGBUILD19
-rwxr-xr-xabs/not_built/core/hwdetect/hwdetect592
-rw-r--r--abs/not_built/core/jack/40-hpet-permissions.rules2
-rw-r--r--abs/not_built/core/jack/99-audio.conf2
-rw-r--r--abs/not_built/core/jack/PKGBUILD58
-rw-r--r--abs/not_built/core/jack/jack.install5
-rw-r--r--abs/not_built/core/kakasi/PKGBUILD20
-rw-r--r--abs/not_built/core/kdelibs3/PKGBUILD57
-rw-r--r--abs/not_built/core/kdelibs3/__changelog1
-rwxr-xr-xabs/not_built/core/kdelibs3/kde3.profile15
-rw-r--r--abs/not_built/core/kdelibs3/kdelibs3.install11
-rw-r--r--abs/not_built/core/libcl/PKGBUILD38
-rw-r--r--abs/not_built/core/libdc1394/PKGBUILD25
-rw-r--r--abs/not_built/core/libdc1394/__changelog1
-rw-r--r--abs/not_built/core/libfetch/Makefile89
-rw-r--r--abs/not_built/core/libfetch/PKGBUILD46
l---------abs/not_built/core/libfetch/libfetch-2.33-1-i686.pkg.tar.gz1
-rw-r--r--abs/not_built/core/libgsf/PKGBUILD61
-rw-r--r--abs/not_built/core/libgsf/libgsf-gnome.install19
-rw-r--r--abs/not_built/core/libsmbios/PKGBUILD40
-rw-r--r--abs/not_built/core/libwmf/PKGBUILD41
-rw-r--r--abs/not_built/core/libwmf/libpng14.patch12
-rw-r--r--abs/not_built/core/libwmf/libwmf-0.2.8.4-useafterfree.patch10
-rw-r--r--abs/not_built/core/libwmf/libwmf.install13
-rw-r--r--abs/not_built/core/libx86/PKGBUILD38
-rw-r--r--abs/not_built/core/libx86/libx86-ifmask.patch21
-rw-r--r--abs/not_built/core/libxfontcache/LICENSE99
-rw-r--r--abs/not_built/core/libxfontcache/PKGBUILD28
-rw-r--r--abs/not_built/core/libxtrap/PKGBUILD27
-rw-r--r--abs/not_built/core/libxxf86misc/PKGBUILD28
-rw-r--r--abs/not_built/core/linhes-live/PKGBUILD32
-rwxr-xr-xabs/not_built/core/linhes-live/bin/gen_fstab122
-rwxr-xr-xabs/not_built/core/linhes-live/bin/km76
-rw-r--r--abs/not_built/core/linhes-live/etc/live-shutdown90
-rw-r--r--abs/not_built/core/linhes-live/etc/live-sysinit73
-rwxr-xr-xabs/not_built/core/linhes-live/etc/loginroot3
-rwxr-xr-xabs/not_built/core/linhes-live/etc/rc.shutdown-live168
-rwxr-xr-xabs/not_built/core/linhes-live/etc/rc.sysinit-live469
-rwxr-xr-xabs/not_built/core/linhes-live/etc/ulogin57
-rwxr-xr-xabs/not_built/core/linhes-live/lib/initcpio/gen_larch_init12
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/hooks/larch1125
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/hooks/larch233
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/hooks/larch2_aufs33
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/hooks/larch3196
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/install/larch115
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/install/larch215
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/install/larch2_aufs15
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/install/larch318
-rwxr-xr-xabs/not_built/core/linhes-live/lib/initcpio/kinit6
-rw-r--r--abs/not_built/core/linhes-live/lib/initcpio/mkinitcpio.conf54
-rw-r--r--abs/not_built/core/linuxtv-dvb-apps/PKGBUILD37
-rw-r--r--abs/not_built/core/linuxtv-dvb-apps/linuxtv-dvb-apps.install8
-rw-r--r--abs/not_built/core/lshw/PKGBUILD34
-rw-r--r--abs/not_built/core/lshw/abi_stdlib.diff23
-rw-r--r--abs/not_built/core/lzop/PKGBUILD26
-rw-r--r--abs/not_built/core/mailx/PKGBUILD24
-rw-r--r--abs/not_built/core/mailx/mailx-8.1.1.patch32
-rw-r--r--abs/not_built/core/mailx/mailx-gcc4.patch12
-rw-r--r--abs/not_built/core/mcpp/PKGBUILD23
-rw-r--r--abs/not_built/core/mcpp/mcpp-2.6.4-patch22
-rw-r--r--abs/not_built/core/mjpegtools/PKGBUILD41
-rw-r--r--abs/not_built/core/mjpegtools/__changelog2
-rw-r--r--abs/not_built/core/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch11
-rw-r--r--abs/not_built/core/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch24
-rw-r--r--abs/not_built/core/mjpegtools/mjpegtools.install16
-rw-r--r--abs/not_built/core/mjpegtools/png2yuv-fix-memleak.patch10
-rw-r--r--abs/not_built/core/mythstream/PKGBUILD37
-rw-r--r--abs/not_built/core/mythstream/mythstream.0.24.patch529
-rw-r--r--abs/not_built/core/mythstream/mythstream.install23
-rw-r--r--abs/not_built/core/mythstream/streams.res281
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/morethemes/PKGBUILD66
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/morethemes/retro-wide_video-ui.xml-filetypes.patch22
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythplugins/PKGBUILD129
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythplugins/mythburn.py.patch303
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythplugins/mythplugins-mythzoneminder.install3
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythsmolt/PKGBUILD23
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythsmolt/mythsmolt.patch8
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythsmolt/smolt_init_login.sh39
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/myththemes/PKGBUILD38
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/PKGBUILD109
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/__changelog1
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/git_version.patch12
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/HOST_SETTINGS.xml94
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/is.xml3
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/library.xml.patch12
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/linhes.xml59
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mainmenu.xml.patch37
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythbackup.xml20
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythrestore.xml20
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/optical_menu.xml.patch16
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/original/create_patch.sh5
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/setup.xml111
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/siriusmenu.xml419
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update.xml9
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update2.xml20
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/util_menu.xml.patch16
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/xmmenu.xml574
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/myth.sh4
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/mythbackend38
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/mythbackend.lr9
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/mythbackend.sh117
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/mythfrontend.lr9
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/mythtv.install63
-rwxr-xr-xabs/not_built/core/mythtv/stable-0.24/mythtv/pretty9
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythtv/smolt_jump.patch10
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythweb/PKGBUILD46
-rw-r--r--abs/not_built/core/mythtv/stable-0.24/mythweb/mythweb.php.patch11
-rw-r--r--abs/not_built/core/mythtv/trunk/morethemes/PKGBUILD54
-rw-r--r--abs/not_built/core/mythtv/trunk/mytharchive/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythbrowser/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythgallery/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythgame/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythmovies/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythmusic/PKGBUILD54
-rw-r--r--abs/not_built/core/mythtv/trunk/mythnetvision/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythnews/PKGBUILD51
-rwxr-xr-xabs/not_built/core/mythtv/trunk/myththemes/PKGBUILD50
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/PKGBUILD97
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml94
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/is.xml3
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch12
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/linhes.xml59
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch38
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythbackup.xml20
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythrestore.xml20
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/optical_menu.xml.patch16
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/menu-xml/original/create_patch.sh5
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/setup.xml111
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/siriusmenu.xml419
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update.xml20
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update2.xml26
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/util_menu.xml.patch16
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/menu-xml/xmmenu.xml574
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/myth.sh4
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/mythbackend38
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/mythbackend.lr9
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/mythbackend.sh117
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/mythfrontend.lr9
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/mythtv.install30
-rwxr-xr-xabs/not_built/core/mythtv/trunk/mythtv/pretty9
-rw-r--r--abs/not_built/core/mythtv/trunk/mythtv/smolt_jump.patch30
-rw-r--r--abs/not_built/core/mythtv/trunk/mythvideo/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythweather/PKGBUILD51
-rw-r--r--abs/not_built/core/mythtv/trunk/mythweb/PKGBUILD50
-rw-r--r--abs/not_built/core/mythtv/trunk/mythweb/mythweb.install10
-rw-r--r--abs/not_built/core/mythtv/trunk/mythzoneminder/PKGBUILD51
-rw-r--r--abs/not_built/core/ndiswrapper-utils/PKGBUILD27
-rw-r--r--abs/not_built/core/ndiswrapper/PKGBUILD42
-rw-r--r--abs/not_built/core/ndiswrapper/kernel-2.6.35.patch98
-rw-r--r--abs/not_built/core/ndiswrapper/kernel-2.6.36.patch27
-rw-r--r--abs/not_built/core/ndiswrapper/ndiswrapper.install23
-rw-r--r--abs/not_built/core/ndiswrapper/ndiswrapper_kernel-2.6.38.patch24
-rw-r--r--abs/not_built/core/netcfg/PKGBUILD27
-rw-r--r--abs/not_built/core/netkit-telnet-ssl/PKGBUILD33
-rw-r--r--abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl-0.17.24+0.1_arch.diff2591
-rw-r--r--abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl.install5
-rw-r--r--abs/not_built/core/netkit-telnet-ssl/telnet.xinetd10
-rw-r--r--abs/not_built/core/ntfs-3g/25-ntfs-config-write-policy.fdi42
-rw-r--r--abs/not_built/core/ntfs-3g/PKGBUILD33
-rw-r--r--abs/not_built/core/ntfsprogs/PKGBUILD24
-rw-r--r--abs/not_built/core/ntfsprogs/ntfsprogs.install24
-rwxr-xr-xabs/not_built/core/nuvexport/MP4.pm316
-rw-r--r--abs/not_built/core/nuvexport/PKGBUILD33
-rwxr-xr-xabs/not_built/core/nuvexport/XviD.pm197
-rw-r--r--abs/not_built/core/nuvexport/nuvexport-ipod-disable.patch12
-rw-r--r--abs/not_built/core/nvidia-173xx-utils/20-nvidia.conf5
-rw-r--r--abs/not_built/core/nvidia-173xx-utils/PKGBUILD68
-rw-r--r--abs/not_built/core/nvidia-173xx-utils/nvidia.install6
-rw-r--r--abs/not_built/core/nvidia-173xx/PKGBUILD41
-rw-r--r--abs/not_built/core/nvidia-173xx/nvidia.install14
-rw-r--r--abs/not_built/core/nvidia-96xx-utils/PKGBUILD63
-rw-r--r--abs/not_built/core/nvidia-96xx-utils/nvidia.install6
-rw-r--r--abs/not_built/core/nvidia-96xx-utils/supported-cards.txt236
-rw-r--r--abs/not_built/core/nvidia-96xx/PKGBUILD40
-rw-r--r--abs/not_built/core/nvidia-96xx/kernel-2.6.36.patch10
-rw-r--r--abs/not_built/core/nvidia-96xx/nvidia-96.43.11-2.6.30.patch103
-rw-r--r--abs/not_built/core/nvidia-96xx/nvidia-legacy-2.6.39.patch10
-rw-r--r--abs/not_built/core/nvidia-96xx/nvidia.install14
-rw-r--r--abs/not_built/core/perl_modules/perl-class-data-inheritable/PKGBUILD23
-rw-r--r--abs/not_built/core/perl_modules/perl-compress-raw-zlib/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-compress-zlib/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-data-dumper/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-devel-stacktrace/PKGBUILD28
-rw-r--r--abs/not_built/core/perl_modules/perl-exception-class/PKGBUILD22
-rw-r--r--abs/not_built/core/perl_modules/perl-getopt-long/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-getopt-lucid/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-image-imlib2/PKGBUILD50
-rw-r--r--abs/not_built/core/perl_modules/perl-io-compress-zlib/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-javascript/PKGBUILD28
-rw-r--r--abs/not_built/core/perl_modules/perl-lingua-en-numbers/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-list-member/PKGBUILD24
-rw-r--r--abs/not_built/core/perl_modules/perl-log-log4perl/PKGBUILD23
-rw-r--r--abs/not_built/core/perl_modules/perl-mime-parser/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-parse-yapp/PKGBUILD25
-rw-r--r--abs/not_built/core/perl_modules/perl-pathtools/PKGBUILD23
-rw-r--r--abs/not_built/core/perl_modules/perl-pathtools/license.txt6
-rw-r--r--abs/not_built/core/perl_modules/perl-proc-processtable/PKGBUILD31
-rw-r--r--abs/not_built/core/perl_modules/perl-text-bidi/PKGBUILD23
-rw-r--r--abs/not_built/core/perl_modules/perl-text-kakasi/PKGBUILD23
-rw-r--r--abs/not_built/core/perl_modules/perl-time-format/PKGBUILD21
-rw-r--r--abs/not_built/core/perl_modules/perl-x-osd/PKGBUILD32
-rwxr-xr-xabs/not_built/core/perl_modules/perl-xml-xql/PKGBUILD34
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/all-wcprops29
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/entries95
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/format1
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/prop-base/PKGBUILD.svn-base5
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/prop-base/convertX.install.svn-base5
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/prop-base/download.php?id=9719.svn-base5
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/prop-base/wis-go-0.9.8-2.6.17.patch.svn-base5
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/text-base/PKGBUILD.svn-base31
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/text-base/convertX.install.svn-base31
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/text-base/download.php?id=9719.svn-base460
-rw-r--r--abs/not_built/core/plextor-convertX-driver/.svn/text-base/wis-go-0.9.8-2.6.17.patch.svn-base76
-rwxr-xr-xabs/not_built/core/plextor-convertX-driver/PKGBUILD36
-rwxr-xr-xabs/not_built/core/plextor-convertX-driver/convertX.install34
-rw-r--r--abs/not_built/core/plextor-convertX-driver/wis-go7007-2.6.26-nopage.diff26
-rw-r--r--abs/not_built/core/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch83
-rw-r--r--abs/not_built/core/procinfo-ng/PKGBUILD38
-rw-r--r--abs/not_built/core/procps/ChangeLog10
-rw-r--r--abs/not_built/core/procps/PKGBUILD27
-rw-r--r--abs/not_built/core/procps/sysctl.conf13
-rw-r--r--abs/not_built/core/projectm-complete/PKGBUILD32
-rw-r--r--abs/not_built/core/projectm-complete/error-handling.patch308
-rw-r--r--abs/not_built/core/projectm-complete/libprojectm-2.0.1-pcfix.patch25
-rw-r--r--abs/not_built/core/pvr150-firmware/PKGBUILD17
-rw-r--r--abs/not_built/core/python2/PKGBUILD84
-rw-r--r--abs/not_built/core/python_modules/bluez-python/PKGBUILD20
-rwxr-xr-xabs/not_built/core/python_modules/cddb-py/PKGBUILD26
-rw-r--r--abs/not_built/core/python_modules/gnome-python-extras/PKGBUILD26
-rw-r--r--abs/not_built/core/python_modules/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch61
-rw-r--r--abs/not_built/core/python_modules/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch22
-rw-r--r--abs/not_built/core/python_modules/imdbpy/PKGBUILD37
-rw-r--r--abs/not_built/core/python_modules/pycrypto/PKGBUILD23
-rw-r--r--abs/not_built/core/python_modules/python-beaker/PKGBUILD21
-rw-r--r--abs/not_built/core/python_modules/python-beautifulsoup4/PKGBUILD51
-rw-r--r--abs/not_built/core/python_modules/python-beautifulsoup4/__changelog2
-rw-r--r--abs/not_built/core/python_modules/python-chardet/PKGBUILD20
-rw-r--r--abs/not_built/core/python_modules/python-geoip/PKGBUILD21
-rw-r--r--abs/not_built/core/python_modules/python-libconcord/PKGBUILD22
-rw-r--r--abs/not_built/core/python_modules/python-mako/PKGBUILD21
-rw-r--r--abs/not_built/core/python_modules/python-markupsafe/PKGBUILD23
-rw-r--r--abs/not_built/core/python_modules/python-numeric/PKGBUILD35
-rw-r--r--abs/not_built/core/python_modules/python-pymedia/PKGBUILD35
-rw-r--r--abs/not_built/core/python_modules/python-pymedia/pymedia-1.3.7.3-amd64-gentoo.diff64
-rw-r--r--abs/not_built/core/python_modules/python-pyserial/PKGBUILD21
-rw-r--r--abs/not_built/core/python_modules/python-simplejson/ChangeLog5
-rw-r--r--abs/not_built/core/python_modules/python-simplejson/PKGBUILD26
-rw-r--r--abs/not_built/core/python_modules/python2-distribute/PKGBUILD24
-rw-r--r--abs/not_built/core/python_modules/python2-distribute/distribute-0.6.14_python2_and_3.patch51
-rw-r--r--abs/not_built/core/python_modules/pyusb/PKGBUILD18
-rw-r--r--abs/not_built/core/python_modules/pyxdg/PKGBUILD20
-rw-r--r--abs/not_built/core/rp-pppoe/PKGBUILD25
-rwxr-xr-xabs/not_built/core/rp-pppoe/adsl35
-rw-r--r--abs/not_built/core/speex/PKGBUILD28
-rw-r--r--abs/not_built/core/systemd/systemd-tools/0001-Reinstate-TIMEOUT-handling.patch124
-rw-r--r--abs/not_built/core/systemd/systemd-tools/PKGBUILD205
-rw-r--r--abs/not_built/core/systemd/systemd-tools/initcpio-hook-udev20
-rw-r--r--abs/not_built/core/systemd/systemd-tools/initcpio-install-timestamp14
-rw-r--r--abs/not_built/core/systemd/systemd-tools/initcpio-install-udev28
-rw-r--r--abs/not_built/core/systemd/systemd-tools/locale.sh60
-rw-r--r--abs/not_built/core/systemd/systemd-tools/systemd-tools.install35
-rw-r--r--abs/not_built/core/systemd/systemd-tools/systemd.install37
-rw-r--r--abs/not_built/core/test-pattern/PKGBUILD16
-rwxr-xr-xabs/not_built/core/test-pattern/test_pattern.bash326
-rw-r--r--abs/not_built/core/tftp-hpa/LICENSE32
-rw-r--r--abs/not_built/core/tftp-hpa/PKGBUILD29
-rw-r--r--abs/not_built/core/tftp-hpa/tftpd.conf4
-rwxr-xr-xabs/not_built/core/tftp-hpa/tftpd.rc38
-rw-r--r--abs/not_built/core/tiacx-firmware/PKGBUILD22
-rw-r--r--abs/not_built/core/tiacx-firmware/tiacx-firmware.install18
-rw-r--r--abs/not_built/core/tiacx/PKGBUILD41
-rw-r--r--abs/not_built/core/tiacx/acx.install19
-rw-r--r--abs/not_built/core/tiacx/kernel-2.6.27.patch82
-rw-r--r--abs/not_built/core/tiacx/kernel-2.6.30.patch16
-rw-r--r--abs/not_built/core/tiacx/kernel-2.6.31.patch88
-rw-r--r--abs/not_built/core/tiacx/kernel-2.6.33.patch11
-rw-r--r--abs/not_built/core/transcode/PKGBUILD76
-rw-r--r--abs/not_built/core/transcode/transcode-1.1.5-jpeg-7.patch16
-rw-r--r--abs/not_built/core/transcode/transcode-1.1.5-mpa.patch10
-rw-r--r--abs/not_built/core/trapproto/PKGBUILD22
-rw-r--r--abs/not_built/core/ttf-bitstream-vera/PKGBUILD24
-rw-r--r--abs/not_built/core/ttf-bitstream-vera/vera.install20
-rw-r--r--abs/not_built/core/tweaker/PKGBUILD45
-rwxr-xr-xabs/not_built/core/tweaker/bin/LocalIPCheck.pl47
-rwxr-xr-xabs/not_built/core/tweaker/bin/SQLtweaker.sh86
-rwxr-xr-xabs/not_built/core/tweaker/bin/create-linhes-sql.sh166
-rwxr-xr-xabs/not_built/core/tweaker/bin/tweaker.pl333
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_EXAMPLE.pl134
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_RAM.pl81
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_audio.pl390
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_cpu.pl163
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_dragon.pl65
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_fingerprint_hardware.sh98
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_general.pl590
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_general.pl.orig579
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_graphics.pl149
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_keymap.sh66
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_localization.pl72
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_misc.pl13
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_scrub_sql.pl96
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_tuners.pl491
-rw-r--r--abs/not_built/core/tweaker/bin/twk_tuners_notes.txt55
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_upgrade.pl190
-rwxr-xr-xabs/not_built/core/tweaker/bin/twk_what_has_changed.sh183
-rw-r--r--abs/not_built/core/tweaker/fs/etc/asound.conf15
-rw-r--r--abs/not_built/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini429
-rw-r--r--abs/not_built/core/tweaker/fs/var/lib/alsa/ALC888.asound.state354
-rw-r--r--abs/not_built/core/tweaker/fs/var/lib/alsa/AV710.asound.state567
-rw-r--r--abs/not_built/core/tweaker/lib/Tweaker/Definitions.pm66
-rw-r--r--abs/not_built/core/tweaker/lib/Tweaker/Script.pm353
-rw-r--r--abs/not_built/core/tweaker/log4perl.conf13
-rw-r--r--abs/not_built/core/tweaker/tcf/EXAMPLE.tcf38
-rw-r--r--abs/not_built/core/tweaker/tcf/focus.tcf113
-rw-r--r--abs/not_built/core/tweaker/tcf/os.tcf10
-rw-r--r--abs/not_built/core/tweaker/tcf/tcf.dtd11
-rw-r--r--abs/not_built/core/tweaker/tcf/tweaker-core.tcf47
-rw-r--r--abs/not_built/core/tweaker/tcf/userland.tcf0
-rw-r--r--abs/not_built/core/tweaker/tweaker.install39
-rw-r--r--abs/not_built/core/tweaker/tweaker.sh4
-rw-r--r--abs/not_built/core/v4l-dvb/PKGBUILD49
-rw-r--r--abs/not_built/core/v4l-dvb/v4l-dvb.install12
-rw-r--r--abs/not_built/core/vbetool/PKGBUILD31
-rw-r--r--abs/not_built/core/vdpauinfo-legacy/PKGBUILD26
-rwxr-xr-xabs/not_built/core/vdpauinfo-legacy/vdpauinfo2
-rw-r--r--abs/not_built/core/xf86-input-acecad/LICENSE24
-rw-r--r--abs/not_built/core/xf86-input-acecad/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-input-aiptek/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-input-synaptics/10-synaptics.conf8
-rw-r--r--abs/not_built/core/xf86-input-synaptics/PKGBUILD39
-rw-r--r--abs/not_built/core/xf86-input-wacom/70-wacom.rules8
-rw-r--r--abs/not_built/core/xf86-input-wacom/PKGBUILD30
-rw-r--r--abs/not_built/core/xf86-video-apm/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-ark/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-ast/PKGBUILD25
-rw-r--r--abs/not_built/core/xf86-video-ati/PKGBUILD31
-rw-r--r--abs/not_built/core/xf86-video-chips/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-cirrus/LICENSE22
-rw-r--r--abs/not_built/core/xf86-video-cirrus/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-dummy/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-fbdev/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-geode/PKGBUILD30
-rw-r--r--abs/not_built/core/xf86-video-glint/LICENSE84
-rw-r--r--abs/not_built/core/xf86-video-glint/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-i128/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-i740/LICENSE47
-rw-r--r--abs/not_built/core/xf86-video-i740/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-mach64/LICENSE209
-rw-r--r--abs/not_built/core/xf86-video-mach64/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-mga/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-neomagic/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-nouveau/PKGBUILD41
-rw-r--r--abs/not_built/core/xf86-video-nouveau/xf86-video-nouveau.install16
-rw-r--r--abs/not_built/core/xf86-video-nv/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-openchrome/LICENSE.txt26
-rw-r--r--abs/not_built/core/xf86-video-openchrome/PKGBUILD35
-rw-r--r--abs/not_built/core/xf86-video-openchrome/drm_stdint.patch10
-rw-r--r--abs/not_built/core/xf86-video-openchrome/svn-r839.patch1447
-rw-r--r--abs/not_built/core/xf86-video-r128/LICENSE219
-rw-r--r--abs/not_built/core/xf86-video-r128/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-rendition/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-s3/LICENSE25
-rw-r--r--abs/not_built/core/xf86-video-s3/PKGBUILD29
-rw-r--r--abs/not_built/core/xf86-video-s3virge/LICENSE25
-rw-r--r--abs/not_built/core/xf86-video-s3virge/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-savage/LICENSE97
-rw-r--r--abs/not_built/core/xf86-video-savage/PKGBUILD29
-rw-r--r--abs/not_built/core/xf86-video-siliconmotion/PKGBUILD28
-rw-r--r--abs/not_built/core/xf86-video-sis/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-sisusb/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-tdfx/LICENSE160
-rw-r--r--abs/not_built/core/xf86-video-tdfx/PKGBUILD29
-rw-r--r--abs/not_built/core/xf86-video-trident/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-tseng/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-unichrome/LICENSE23
-rw-r--r--abs/not_built/core/xf86-video-unichrome/PKGBUILD30
-rw-r--r--abs/not_built/core/xf86-video-unichrome/drm-include.patch11
-rw-r--r--abs/not_built/core/xf86-video-v4l/LICENSE826
-rw-r--r--abs/not_built/core/xf86-video-v4l/PKGBUILD27
-rw-r--r--abs/not_built/core/xf86-video-voodoo/PKGBUILD26
-rw-r--r--abs/not_built/core/xf86-video-xgi/PKGBUILD25
-rw-r--r--abs/not_built/core/xf86-video-xgixp/PKGBUILD25
-rw-r--r--abs/not_built/core/xf86bigfontproto/PKGBUILD25
-rw-r--r--abs/not_built/core/xmlrpc-c/PKGBUILD39
-rw-r--r--abs/not_built/core/xorg-apps/LICENSE1354
-rw-r--r--abs/not_built/core/xorg-apps/PKGBUILD16
-rw-r--r--abs/not_built/core/xorg-fonts-75dpi/PKGBUILD41
-rw-r--r--abs/not_built/core/xorg-fonts-75dpi/xfonts.install20
-rw-r--r--abs/not_built/core/xorg-res-utils/LICENSE.listres42
-rw-r--r--abs/not_built/core/xorg-res-utils/LICENSE.viewres42
-rw-r--r--abs/not_built/core/xorg-res-utils/PKGBUILD38
-rw-r--r--abs/not_built/core/xorg-utils/LICENSE.xdpyinfo26
-rw-r--r--abs/not_built/core/xorg-utils/LICENSE.xfd25
-rw-r--r--abs/not_built/core/xorg-utils/LICENSE.xlsfonts22
-rw-r--r--abs/not_built/core/xorg-utils/LICENSE.xprop45
-rw-r--r--abs/not_built/core/xorg-utils/PKGBUILD56
-rw-r--r--abs/not_built/core/xorg-xkb-utils/LICENSE.setxkbmap22
-rw-r--r--abs/not_built/core/xorg-xkb-utils/LICENSE.xkbevd22
-rw-r--r--abs/not_built/core/xorg-xkb-utils/LICENSE.xkbutils22
-rw-r--r--abs/not_built/core/xorg-xkb-utils/PKGBUILD42
-rw-r--r--abs/not_built/core/xorg-xmessage/PKGBUILD23
502 files changed, 42233 insertions, 0 deletions
diff --git a/abs/not_built/core/LinHES-timezone/Makefile b/abs/not_built/core/LinHES-timezone/Makefile
new file mode 100644
index 0000000..d543638
--- /dev/null
+++ b/abs/not_built/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/not_built/core/LinHES-timezone/PKGBUILD b/abs/not_built/core/LinHES-timezone/PKGBUILD
new file mode 100644
index 0000000..8864102
--- /dev/null
+++ b/abs/not_built/core/LinHES-timezone/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 23123 2009-01-03 02:43:02Z kevin $
+# Maintainer: Greg Frost <gregfrost1@bigpond.com>
+pkgname=LinHES-timezone
+pkgver=1
+pkgrel=10
+pkgdesc="GUI timezone selector used by LinHES-config."
+arch=('i686' 'x86_64')
+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'
+ '96e8dd40e3b7c9f5ba2423dc4243758b')
diff --git a/abs/not_built/core/LinHES-timezone/Tux.csv b/abs/not_built/core/LinHES-timezone/Tux.csv
new file mode 100644
index 0000000..c781230
--- /dev/null
+++ b/abs/not_built/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/not_built/core/LinHES-timezone/WorldTZ_102.zip b/abs/not_built/core/LinHES-timezone/WorldTZ_102.zip
new file mode 100644
index 0000000..3112bd4
--- /dev/null
+++ b/abs/not_built/core/LinHES-timezone/WorldTZ_102.zip
Binary files differ
diff --git a/abs/not_built/core/LinHES-timezone/create_map_include.c b/abs/not_built/core/LinHES-timezone/create_map_include.c
new file mode 100644
index 0000000..dbdbb52
--- /dev/null
+++ b/abs/not_built/core/LinHES-timezone/create_map_include.c
@@ -0,0 +1,186 @@
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+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/not_built/core/LinHES-timezone/extract_map_data.c b/abs/not_built/core/LinHES-timezone/extract_map_data.c
new file mode 100644
index 0000000..8fd8e52
--- /dev/null
+++ b/abs/not_built/core/LinHES-timezone/extract_map_data.c
@@ -0,0 +1,188 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <math.h>
+#include <unistd.h>
+
+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/not_built/core/LinHES-timezone/linhes_timezone.c b/abs/not_built/core/LinHES-timezone/linhes_timezone.c
new file mode 100644
index 0000000..1cf04b2
--- /dev/null
+++ b/abs/not_built/core/LinHES-timezone/linhes_timezone.c
@@ -0,0 +1,1120 @@
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+#include <stdio.h>
+#define _GNU_SOURCE
+#include <string.h>
+#include <strings.h>
+#include <X11/Xlib.h>
+#include <X11/Intrinsic.h>
+#include <X11/IntrinsicI.h>
+#include <lirc/lirc_client.h>
+#include <pthread.h>
+
+#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 \" <td value=\\\"-34.993\\\"\" ;"
+ "echo Longitude ; "
+ "echo \" <td value=\\\"138.6\\\"\" ;"
+ "echo TimeZone ; "
+ "echo \" <td value=\\\"+09:30\\\"\"";
+ }
+ else
+ {
+ timezone_info_command =
+ "wget http://www.geobytes.com/IpLocator.htm -O - 2> /dev/null |"
+ "grep \"<td \" |"
+ "grep -i -E -A1 \"Latitude|Longitude|TimeZone\" | grep -v \"^--$\"";
+ }
+
+ guess_data = popen (timezone_info_command, "r");
+
+ if (!guess_data)
+ {
+ fprintf (stderr, "error parsing web page for timezone guess\n");
+ if (guessing_timezone)
+ {
+ guessing_timezone = FALSE;
+ guess_failed = TRUE;
+ guess_failed_timeout = time (NULL) + 3;
+ }
+ return NULL;
+ }
+
+ while (fgets (line_in, sizeof (line_in), guess_data))
+ {
+ // Look for the entries in the guess data and then the next line
+ // will hold the value.
+
+ if (strcasestr (line_in, "latitude"))
+ {
+ get_value (guess_data, line_in, sizeof (line_in));
+ sscanf (line_in, "%lf", &guess_latitude);
+ }
+ else if (strcasestr (line_in, "longitude"))
+ {
+ get_value (guess_data, line_in, sizeof (line_in));
+ sscanf (line_in, "%lf", &guess_longitude);
+ }
+ else if (strcasestr (line_in, "timezone"))
+ {
+ get_value (guess_data, line_in, sizeof (line_in));
+
+ // The geobytes timezone data is of the form "+09:30" whereas the
+ // map timezone data is of the form "+6" or "+9.5". Convert
+ // to the map timezone data format so we can find the timezone.
+
+ if (strcmp (&line_in[3], ":30") == 0)
+ sprintf (&line_in[3], ".5");
+ else
+ line_in[3] = 0;
+
+ if (line_in[1] == '0')
+ memmove (&line_in[1], &line_in[2], strlen (&line_in[2]) + 1);
+
+ strncpy (guess_zone, line_in, sizeof (guess_zone));
+ }
+ }
+
+ pclose (guess_data);
+
+ if ((guess_latitude != invalid) &&
+ (guess_longitude != invalid) &&
+ guess_zone[0] != 0)
+ {
+ int zone;
+
+ fprintf (stderr, "guessed lat lon %f %f %s\n",
+ guess_latitude, guess_longitude, guess_zone);
+
+ // Look for the guessed zone in the zone_data structure.
+ for (zone = 0; zone < NUM_ZONES; zone++)
+ {
+ if (strcmp (guess_zone, zone_data[zone].offset) == 0)
+ break;
+ }
+
+ if (zone == NUM_ZONES)
+ {
+ fprintf (stderr, "couldnt find zone %s\n", guess_zone);
+ if (guessing_timezone)
+ {
+ guessing_timezone = FALSE;
+ guess_failed = TRUE;
+ guess_failed_timeout = time (NULL) + 3;
+ }
+ }
+ else
+ {
+ double x,y,z;
+ double min_dist_squared;
+ int closest_place;
+
+ // Look for the location in the zone nearest to the guess lat/lon.
+
+ // Convert the guessed lat/lon to x,y,z.
+
+ guess_latitude *= M_PI / 180.0;
+ guess_longitude *= M_PI / 180.0;
+
+ x = cos (guess_longitude) * cos (guess_latitude);
+ y = sin (guess_longitude) * cos (guess_latitude);
+ z = sin (guess_latitude);
+
+ min_dist_squared =
+ pow (x - zone_data[zone].place_info[0].v.x, 2) +
+ pow (y - zone_data[zone].place_info[0].v.y, 2) +
+ pow (z - zone_data[zone].place_info[0].v.z, 2);
+ closest_place = 0;
+
+ for (int place = 1; place < zone_data[zone].num_places; place++)
+ {
+ double dist_squared;
+
+ dist_squared =
+ pow (x - zone_data[zone].place_info[place].v.x, 2) +
+ pow (y - zone_data[zone].place_info[place].v.y, 2) +
+ pow (z - zone_data[zone].place_info[place].v.z, 2);
+
+ if (dist_squared < min_dist_squared)
+ {
+ closest_place = place;
+ min_dist_squared = dist_squared;
+ }
+ }
+
+ fprintf (stderr, "Guess=%s %s\n",
+ zone_data[zone].place_info[closest_place].zonename,
+ zone_data[zone].offset);
+
+ selected_zone = zone;
+ select_place (closest_place);
+ }
+ }
+ else
+ {
+ if (guessing_timezone)
+ {
+ guessing_timezone = FALSE;
+ guess_failed = TRUE;
+ guess_failed_timeout = time (NULL) + 3;
+ }
+ }
+
+ guessing_timezone = FALSE;
+ return NULL;
+}
+
+void remove_titlebar_and_borders ()
+{
+ XClassHint* classHint;
+ char* appname;
+ appname="look fo rme";
+ XStoreName (display, window, appname);
+
+ /* Set the name and class hints for the window manager to use. */
+
+ classHint = XAllocClassHint ();
+ if (classHint)
+ {
+ classHint->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/not_built/core/alsa-oss/PKGBUILD b/abs/not_built/core/alsa-oss/PKGBUILD
new file mode 100644
index 0000000..66f7030
--- /dev/null
+++ b/abs/not_built/core/alsa-oss/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 13736 2008-09-28 09:04:09Z tpowa $
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=alsa-oss
+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.17a')
+source=(ftp://ftp.alsa-project.org/pub/oss-lib/$pkgname-$pkgver.tar.bz2)
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
+md5sums=('1b1850c2fc91476a73d50f537cbd402f')
diff --git a/abs/not_built/core/aufs2-util/PKGBUILD b/abs/not_built/core/aufs2-util/PKGBUILD
new file mode 100644
index 0000000..87e7f7f
--- /dev/null
+++ b/abs/not_built/core/aufs2-util/PKGBUILD
@@ -0,0 +1,24 @@
+# Contributor: Paul Mattal <paul@mattal.com>
+
+pkgname=aufs2-util
+pkgver=20110314
+pkgrel=1
+pkgdesc="Another Unionfs Implementation that supports NFS branches"
+arch=('i686' 'x86_64')
+url="http://aufs.sourceforge.net/"
+license=('GPL2')
+depends=('glibc')
+makedepends=('kernel26-headers')
+replaces=('aufs-utils')
+source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
+md5sums=('bf0f9c86361e12a3181fb3891e57cd8d')
diff --git a/abs/not_built/core/cdrdao/PKGBUILD b/abs/not_built/core/cdrdao/PKGBUILD
new file mode 100644
index 0000000..ff79afd
--- /dev/null
+++ b/abs/not_built/core/cdrdao/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: dorphell <dorphell@archlinux.org>
+pkgname=cdrdao
+pkgver=1.2.2
+pkgrel=2
+pkgdesc="Records audio/data CD-Rs in disk-at-once (DAO) mode"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://cdrdao.sourceforge.net/"
+depends=('gcc-libs' 'lame' 'libmad' 'libvorbis' 'libao')
+source=(http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2 \
+ cdrdao-1.2.2-gcc43.patch)
+md5sums=('f0cbf36907406cb4f4c568f9e6669a34' '828963048850fe9e540c2b29ee987fd7')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver
+ patch -Np1 -i $startdir/src/cdrdao-1.2.2-gcc43.patch
+ ./configure --prefix=/usr --with-lame
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+}
diff --git a/abs/not_built/core/cdrdao/cdrdao-1.2.2-gcc43.patch b/abs/not_built/core/cdrdao/cdrdao-1.2.2-gcc43.patch
new file mode 100644
index 0000000..f6707a9
--- /dev/null
+++ b/abs/not_built/core/cdrdao/cdrdao-1.2.2-gcc43.patch
@@ -0,0 +1,73 @@
+#!/bin/sh /usr/share/dpatch/dpatch-run
+## 09-gcc-3.4.dpatch by Matthias Klose <doko@debian.org>
+##
+## DP: Fix build failures with g++-4.3 (Closes: #455309).
+
+@DPATCH@
+
+diff -Naurp cdrdao-1.2.2.orig/trackdb/FormatConverter.cc cdrdao-1.2.2/trackdb/FormatConverter.cc
+--- cdrdao-1.2.2.orig/trackdb/FormatConverter.cc 2005-05-10 00:55:28.000000000 +0000
++++ cdrdao-1.2.2/trackdb/FormatConverter.cc 2008-03-07 11:14:07.000000000 +0000
+@@ -22,6 +22,7 @@
+ #include <ao/ao.h>
+ #endif
+ #include <fstream>
++#include <cstring>
+
+ #include "config.h"
+ #include "util.h"
+diff -Naurp cdrdao-1.2.2.orig/trackdb/FormatOgg.cc cdrdao-1.2.2/trackdb/FormatOgg.cc
+--- cdrdao-1.2.2.orig/trackdb/FormatOgg.cc 2005-04-22 02:01:46.000000000 +0000
++++ cdrdao-1.2.2/trackdb/FormatOgg.cc 2008-03-07 11:14:07.000000000 +0000
+@@ -18,6 +18,7 @@
+ */
+
+ #include <stdio.h>
++#include <cstring>
+
+ #include "util.h"
+ #include "FormatOgg.h"
+diff -Naurp cdrdao-1.2.2.orig/trackdb/FormatMp3.cc cdrdao-1.2.2/trackdb/FormatMp3.cc
+--- cdrdao-1.2.2.orig/trackdb/FormatMp3.cc 2005-09-24 20:28:43.000000000 +0000
++++ cdrdao-1.2.2/trackdb/FormatMp3.cc 2008-03-07 11.14.07.000000000 +0000
+@@ -25,6 +25,7 @@
+ #include <stdlib.h>
+ #include <unistd.h>
+ #include <fcntl.h>
++#include <cstring>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/mman.h>
+diff -Naurp cdrdao-1.2.2.orig/trackdb/TempFileManager.cc cdrdao-1.2.2/trackdb/TempFileManager.cc
+--- cdrdao-1.2.2.orig/trackdb/TempFileManager.cc 2005-04-22 02:01:46.000000000 +0000
++++ cdrdao-1.2.2/trackdb/TempFileManager.cc 2008-03-07 11:14:07.000000000 +0000
+@@ -24,6 +24,7 @@
+ #include <sys/stat.h>
+ #include <unistd.h>
+ #include <fcntl.h>
++#include <cstring>
+
+ #define DEFAULT_TEMP_PATH "/tmp/"
+
+diff -Naurp cdrdao-1.2.2.orig/xdao/AudioCDProject.cc cdrdao-1.2.2/xdao/AudioCDProject.cc
+--- cdrdao-1.2.2.orig/xdao/AudioCDProject.cc 2006-09-18 10:42:26.000000000 +0000
++++ cdrdao-1.2.2/xdao/AudioCDProject.cc 2008-03-07 11:15:26.000000000 +0000
+@@ -18,6 +18,7 @@
+ */
+
+ #include <assert.h>
++#include <cstring>
+ #include <gtkmm.h>
+ #include <libgnome/gnome-i18n.h>
+
+diff -Naurp cdrdao-1.2.2.orig/xdao/TextEdit.cc cdrdao-1.2.2/xdao/TextEdit.cc
+--- cdrdao-1.2.2.orig/xdao/TextEdit.cc 2004-02-12 01:13:32.000000000 +0000
++++ cdrdao-1.2.2/xdao/TextEdit.cc 2008-03-07 11:14:07.000000000 +0000
+@@ -21,6 +21,7 @@
+
+ #include <stddef.h>
+ #include <ctype.h>
++#include <cstring>
+
+ TextEdit::TextEdit(const char *sample) : Gtk::Entry()
+ {
diff --git a/abs/not_built/core/cdrdao/gcc4.patch b/abs/not_built/core/cdrdao/gcc4.patch
new file mode 100644
index 0000000..8fc84b7
--- /dev/null
+++ b/abs/not_built/core/cdrdao/gcc4.patch
@@ -0,0 +1,23 @@
+--- cdrdao-1.2.0/trackdb/FormatConverter.h 2005-06-30 13:35:59.000000000 +0200
++++ cdrdao-1.2.0.az/trackdb/FormatConverter.h 2005-06-30 13:34:18.000000000 +0200
+@@ -95,7 +95,7 @@
+
+ // Convert all files contained in a given Toc object, and update the
+ // Toc accordingly. This is a big time blocking call.
+- FormatSupport::Status convert(Toc* toc);
++ FormatSupport::Status convert(class Toc* toc);
+
+ // Dynamic allocator.
+ FormatSupport* newConverter(const char* src);
+--- cdrdao-1.2.0/trackdb/CueParser.cc 2005-06-30 13:36:09.000000000 +0200
++++ cdrdao-1.2.0.az/trackdb/CueParser.cc 2005-06-30 13:36:22.000000000 +0200
+@@ -23,7 +23,7 @@
+
+ #include "Cue2Toc.h"
+
+-extern Toc *parseToc(const char* tocBuffer, const char *filename);
++extern class Toc *parseToc(const char* tocBuffer, const char *filename);
+
+ Toc *parseCue(FILE *fp, const char *filename)
+ {
+
diff --git a/abs/not_built/core/cdrkit/PKGBUILD b/abs/not_built/core/cdrkit/PKGBUILD
new file mode 100644
index 0000000..3b0d099
--- /dev/null
+++ b/abs/not_built/core/cdrkit/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 62750 2010-01-11 18:23:11Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Alexander Fehr <pizzapunk gmail com>
+
+pkgname=cdrkit
+pkgver=1.1.10
+pkgrel=1
+pkgdesc="Suite of programs for CD/DVD recording, ISO image creation, and audio CD extraction"
+arch=('i686' 'x86_64')
+url="http://cdrkit.org/"
+license=('GPL2')
+depends=('file' 'bzip2' 'perl')
+makedepends=('cmake')
+provides=('cdrtools')
+conflicts=('cdrtools')
+source=(http://cdrkit.org/releases/$pkgname-$pkgver.tar.gz)
+md5sums=('3c25505d567113c269dc6e71640646d8')
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make || return 1
+}
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make PREFIX="$pkgdir/usr" install || return 1
+
+ # Make symlinks for cdrtools compatibility
+ cd "$pkgdir/usr/bin"
+ ln -s wodim cdrecord || return 1
+ ln -s readom readcd || return 1
+ ln -s genisoimage mkisofs || return 1
+ ln -s genisoimage mkhybrid || return 1
+ ln -s icedax cdda2wav || return 1
+
+ cd "$pkgdir/usr/share/man/man1"
+ ln -s wodim.1 cdrecord.1 || return 1
+ ln -s readom.1 readcd.1 || return 1
+ ln -s genisoimage.1 mkisofs.1 || return 1
+ ln -s genisoimage.1 mkhybrid.1 || return 1
+ ln -s icedax.1 cdda2wav.1 || return 1
+}
diff --git a/abs/not_built/core/ceton-scripts/PKGBUILD b/abs/not_built/core/ceton-scripts/PKGBUILD
new file mode 100644
index 0000000..8bab8c0
--- /dev/null
+++ b/abs/not_built/core/ceton-scripts/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $
+# Maintainer: Cecil Watson<knoppmyth@gmail.com>
+
+pkgname=ceton-scripts
+pkgver=1
+pkgrel=2
+pkgdesc="Scripts by Ron Frazier for use with Ceton InfiniTV4 and MythTV 0.24"
+arch=('i686' 'x86_64')
+license=('GPL2')
+url="http://linuxtv.org/"
+source=('http://www.ronfrazier.net/mythtv/0.24/downloads/ceton_qam_channelmap.tar.gz'
+ 'http://www.ronfrazier.net/mythtv/0.24/downloads/ceton_channelmap.tar.gz'
+ 'ccm.patch' 'cqcm.patch')
+build() {
+ cd $startdir/src/
+ patch -p0 < ccm.patch
+ patch -p0 < cqcm.patch
+ mkdir -p $startdir/pkg/usr/bin
+ install -m 755 *.pl $pkgdir/usr/bin
+}
+md5sums=('7ef75cb01332ab86d56c348353d59a0e'
+ 'ab362902926c01a9b03498cc1aed4d14'
+ 'b57b7f04c1c177455b47efc958325ab9'
+ '40af5815f67fdf8070cf8aa041928a3b')
diff --git a/abs/not_built/core/ceton-scripts/ccm.patch b/abs/not_built/core/ceton-scripts/ccm.patch
new file mode 100644
index 0000000..53ec740
--- /dev/null
+++ b/abs/not_built/core/ceton-scripts/ccm.patch
@@ -0,0 +1,13 @@
+--- ceton_channelmap.pl.orig 2011-08-16 22:41:03.000000000 +0000
++++ ceton_channelmap.pl 2011-08-16 22:41:47.000000000 +0000
+@@ -8,8 +8,8 @@
+
+ my $mysql_host = 'localhost';
+ my $mysql_db = 'mythconverg';
+-my $mysql_user = 'root';
+-my $mysql_pw = 'PUT PASSWORD HERE';
++my $mysql_user = 'mythtv';
++my $mysql_pw = 'mythtv';
+
+ -e $wget_path or die "Error: wget does not appear to be in the location specified ($wget_path) . Please configure the \$wget_path variable in this script\n";
+
diff --git a/abs/not_built/core/ceton-scripts/cqcm.patch b/abs/not_built/core/ceton-scripts/cqcm.patch
new file mode 100644
index 0000000..479ed1f
--- /dev/null
+++ b/abs/not_built/core/ceton-scripts/cqcm.patch
@@ -0,0 +1,13 @@
+--- ceton_qam_channelmap.pl.orig 2011-08-16 22:41:13.000000000 +0000
++++ ceton_qam_channelmap.pl 2011-08-16 22:42:37.000000000 +0000
+@@ -11,8 +11,8 @@
+
+ my $mysql_host = 'localhost';
+ my $mysql_db = 'mythconverg';
+-my $mysql_user = 'root';
+-my $mysql_pw = 'PUT PASSWORD HERE';
++my $mysql_user = 'mythtv';
++my $mysql_pw = 'mythtv';
+
+ my $global_modulation = 'qam_256';
+
diff --git a/abs/not_built/core/cloog-ppl/PKGBUILD b/abs/not_built/core/cloog-ppl/PKGBUILD
new file mode 100644
index 0000000..56af019
--- /dev/null
+++ b/abs/not_built/core/cloog-ppl/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 87235 2010-08-11 12:10:19Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: ezzetabi <ezzetabi at gawab dot com>
+
+pkgname=cloog-ppl
+pkgver=0.15.9
+pkgrel=2
+pkgdesc="Library that generates loops for scanning polyhedra"
+arch=('i686' 'x86_64')
+url="http://www.cloog.org/"
+license=('GPL')
+depends=('ppl>=0.11')
+options=('!libtool')
+source=(ftp://gcc.gnu.org/pub/gcc/infrastructure/${pkgname}-${pkgver}.tar.gz)
+md5sums=('806e001d1b1a6b130069ff6274900af5')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # "Add" ppl-0.11 compatibility
+ sed -i "/ppl_minor_version=/s#10#11#" configure
+
+ ./configure --prefix=/usr --infodir=/usr/share/info \
+ --with-bits=gmp --with-ppl=/usr
+ make
+ make check
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir/ install
+}
diff --git a/abs/not_built/core/coreutils/0001-ls-color-each-symlink-to-relative-name-in-properly.patch b/abs/not_built/core/coreutils/0001-ls-color-each-symlink-to-relative-name-in-properly.patch
new file mode 100644
index 0000000..087b87c
--- /dev/null
+++ b/abs/not_built/core/coreutils/0001-ls-color-each-symlink-to-relative-name-in-properly.patch
@@ -0,0 +1,135 @@
+From 6124a3842dfa8484b52e067a8ab8105c3875a4f7 Mon Sep 17 00:00:00 2001
+From: Jim Meyering <meyering@redhat.com>
+Date: Thu, 10 May 2012 19:43:00 +0200
+Subject: [PATCH] ls: color each symlink-to-relative-name in / properly
+
+In order for ls --color to color each symlink, it must form the name
+of each referent and then stat it to see if the link is dangling, to
+a directory, to a file, etc. When the symlink is to a relative name,
+ls must concatenate the starting directory name and that relative name.
+When, in addition, the starting directory was "/" or "/some-name",
+the result was ill-formed, and the subsequent stat would usually fail,
+making the caller color it as a dangling symlink.
+* src/ls.c (make_link_name): Don't botch the case in which
+dir_name(NAME) == "/" and LINKNAME is relative.
+* tests/ls/root-rel-symlink-color: New file. Test for the above.
+* tests/Makefile.am (TESTS): Add it.
+* NEWS (Bug fixes): Mention it.
+Reported by Mike Frysinger in http://bugs.gnu.org/11453
+Bug introduced by commit v8.16-23-gbcb9078.
+---
+ NEWS | 5 ++++
+ src/ls.c | 9 +++++++-
+ tests/Makefile.am | 1 +
+ tests/ls/root-rel-symlink-color | 51 +++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 65 insertions(+), 1 deletion(-)
+ create mode 100755 tests/ls/root-rel-symlink-color
+
+diff --git a/NEWS b/NEWS
+index 6c620b3..f9e9c70 100644
+--- a/NEWS
++++ b/NEWS
+@@ -2,6 +2,11 @@ GNU coreutils NEWS -*- outline -*-
+
+ * Noteworthy changes in release ?.? (????-??-??) [?]
+
++** Bug fixes
++
++ ls --color would mis-color relative-named symlinks in /
++ [bug introduced in coreutils-8.17]
++
+
+ * Noteworthy changes in release 8.17 (2012-05-10) [stable]
+
+diff --git a/src/ls.c b/src/ls.c
+index 397e4ea..9494ae9 100644
+--- a/src/ls.c
++++ b/src/ls.c
+@@ -3213,7 +3213,14 @@ make_link_name (char const *name, char const *linkname)
+ return xstrdup (linkname);
+
+ char *p = xmalloc (prefix_len + 1 + strlen (linkname) + 1);
+- stpcpy (stpncpy (p, name, prefix_len + 1), linkname);
++
++ /* PREFIX_LEN usually specifies a string not ending in slash.
++ In that case, extend it by one, since the next byte *is* a slash.
++ Otherwise, the prefix is "/", so leave the length unchanged. */
++ if ( ! ISSLASH (name[prefix_len - 1]))
++ ++prefix_len;
++
++ stpcpy (stpncpy (p, name, prefix_len), linkname);
+ return p;
+ }
+
+diff --git a/tests/Makefile.am b/tests/Makefile.am
+index a4370a6..0bafc5f 100644
+--- a/tests/Makefile.am
++++ b/tests/Makefile.am
+@@ -449,6 +449,7 @@ TESTS = \
+ ls/proc-selinux-segfault \
+ ls/readdir-mountpoint-inode \
+ ls/recursive \
++ ls/root-rel-symlink-color \
+ ls/rt-1 \
+ ls/slink-acl \
+ ls/stat-dtype \
+diff --git a/tests/ls/root-rel-symlink-color b/tests/ls/root-rel-symlink-color
+new file mode 100755
+index 0000000..d795432
+--- /dev/null
++++ b/tests/ls/root-rel-symlink-color
+@@ -0,0 +1,51 @@
++#!/bin/sh
++# Exercise the 8.17 ls bug with coloring relative-named symlinks in "/".
++
++# Copyright (C) 2012 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 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 <http://www.gnu.org/licenses/>.
++
++. "${srcdir=.}/init.sh"; path_prepend_ ../src
++print_ver_ ls
++
++symlink_to_rel=
++for i in /*; do
++ # Skip non-symlinks:
++ env test -h "$i" || continue
++
++ # Skip dangling symlinks:
++ env test -e "$i" || continue
++
++ # Skip any symlink-to-absolute-name:
++ case $(readlink "$i") in /*) continue ;; esac
++
++ symlink_to_rel=$i
++ break
++done
++
++test -z "$symlink_to_rel" \
++ && skip_ no relative symlink in /
++
++e='\33'
++color_code='01;36'
++c_pre="$e[0m$e[${color_code}m"
++c_post="$e[0m"
++printf "$c_pre$symlink_to_rel$c_post\n" > exp || framework_failure_
++
++env TERM=xterm LS_COLORS="ln=$color_code:or=1;31;42" \
++ ls -d --color=always "$symlink_to_rel" > out || fail=1
++
++compare exp out || fail=1
++
++Exit $fail
+--
+1.7.11.2
+
diff --git a/abs/not_built/core/coreutils/PKGBUILD b/abs/not_built/core/coreutils/PKGBUILD
new file mode 100644
index 0000000..f83225f
--- /dev/null
+++ b/abs/not_built/core/coreutils/PKGBUILD
@@ -0,0 +1,66 @@
+# $Id: PKGBUILD 163714 2012-07-18 02:16:52Z dreisner $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=coreutils
+pkgver=8.17
+pkgrel=3
+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' 'pam' 'acl' 'gmp' 'libcap')
+replaces=('mktemp')
+backup=('etc/pam.d/su')
+install=${pkgname}.install
+options=('!emptydirs')
+source=(ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.xz{,.sig}
+ coreutils-pam.patch
+ 0001-ls-color-each-symlink-to-relative-name-in-properly.patch
+ su.pam)
+md5sums=('bbda656ce8ca2c6903948f9faa204ba3'
+ 'ebecd29b095aa21b0b2f833f1ec20d70'
+ 'aad79a2aa6d566c375d7bdd1b0767278'
+ 'd7c691898a695a6284a927e6a9426fe4'
+ 'fa85e5cce5d723275b14365ba71a8aad')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # added su wheel group pam patch (from fedora git)
+ patch -Np1 -i ${srcdir}/coreutils-pam.patch
+
+ # fix coloring for symlinks in /
+ # upstream commit 6124a3842dfa8484b52e067a8ab8105c3875a4f7
+ patch -Np1 -i $srcdir/0001-ls-color-each-symlink-to-relative-name-in-properly.patch
+
+ autoreconf -v
+ ./configure --prefix=/usr --libexecdir=/usr/lib/coreutils \
+ --enable-install-program=su \
+ --enable-no-install-program=groups,hostname,kill,uptime \
+ --enable-pam
+ make
+}
+
+check() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make RUN_EXPENSIVE_TESTS=yes check
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+
+ cd ${pkgdir}/usr/bin
+ install -dm755 ${pkgdir}/{bin,usr/sbin}
+
+ # binaries required by FHS
+ _fhs=('cat' 'chgrp' 'chmod' 'chown' 'cp' 'date' 'dd' 'df' 'echo' 'false'
+ 'ln' 'ls' 'mkdir' 'mknod' 'mv' 'pwd' 'rm' 'rmdir' 'stty' 'su' 'sync'
+ 'true' 'uname')
+ mv ${_fhs[@]} ${pkgdir}/bin
+
+ mv chroot ${pkgdir}/usr/sbin
+ install -Dm644 ${srcdir}/su.pam ${pkgdir}/etc/pam.d/su
+}
diff --git a/abs/not_built/core/coreutils/coreutils-pam.patch b/abs/not_built/core/coreutils/coreutils-pam.patch
new file mode 100644
index 0000000..e61908f
--- /dev/null
+++ b/abs/not_built/core/coreutils/coreutils-pam.patch
@@ -0,0 +1,428 @@
+diff -urNp coreutils-8.4-orig/configure.ac coreutils-8.4/configure.ac
+--- coreutils-8.4-orig/configure.ac 2010-01-11 18:20:42.000000000 +0100
++++ coreutils-8.4/configure.ac 2010-02-12 10:17:46.000000000 +0100
+@@ -126,6 +126,13 @@ if test "$gl_gcc_warnings" = yes; then
+ AC_SUBST([GNULIB_WARN_CFLAGS])
+ fi
+
++dnl Give the chance to enable PAM
++AC_ARG_ENABLE(pam, dnl
++[ --enable-pam Enable use of the PAM libraries],
++[AC_DEFINE(USE_PAM, 1, [Define if you want to use PAM])
++LIB_PAM="-ldl -lpam -lpam_misc"
++AC_SUBST(LIB_PAM)])
++
+ AC_FUNC_FORK
+
+ optional_bin_progs=
+diff -urNp coreutils-8.4-orig/doc/coreutils.texi coreutils-8.4/doc/coreutils.texi
+--- coreutils-8.4-orig/doc/coreutils.texi 2010-01-03 18:06:20.000000000 +0100
++++ coreutils-8.4/doc/coreutils.texi 2010-02-12 10:17:46.000000000 +0100
+@@ -15081,8 +15081,11 @@ to certain shells, etc.).
+ @findex syslog
+ @command{su} can optionally be compiled to use @code{syslog} to report
+ failed, and optionally successful, @command{su} attempts. (If the system
+-supports @code{syslog}.) However, GNU @command{su} does not check if the
+-user is a member of the @code{wheel} group; see below.
++supports @code{syslog}.)
++
++This version of @command{su} has support for using PAM for
++authentication. You can edit @file{/etc/pam.d/su} to customize its
++behaviour.
+
+ The program accepts the following options. Also see @ref{Common options}.
+
+@@ -15124,6 +15127,8 @@ environment variables except @env{TERM},
+ @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
+@@ -15163,33 +15168,6 @@ Exit status:
+ the exit status of the subshell otherwise
+ @end display
+
+-@cindex wheel group, not supported
+-@cindex group wheel, not supported
+-@cindex fascism
+-@subsection Why GNU @command{su} does not support the @samp{wheel} group
+-
+-(This section is by Richard Stallman.)
+-
+-@cindex Twenex
+-@cindex MIT AI lab
+-Sometimes a few of the users try to hold total power over all the
+-rest. For example, in 1984, a few users at the MIT AI lab decided to
+-seize power by changing the operator password on the Twenex system and
+-keeping it secret from everyone else. (I was able to thwart this coup
+-and give power back to the users by patching the kernel, but I
+-wouldn't know how to do that in Unix.)
+-
+-However, occasionally the rulers do tell someone. Under the usual
+-@command{su} mechanism, once someone learns the root password who
+-sympathizes with the ordinary users, he or she can tell the rest. The
+-``wheel group'' feature would make this impossible, and thus cement the
+-power of the rulers.
+-
+-I'm on the side of the masses, not that of the rulers. If you are
+-used to supporting the bosses and sysadmins in whatever they do, you
+-might find this idea strange at first.
+-
+-
+ @node timeout invocation
+ @section @command{timeout}: Run a command with a time limit
+
+diff -urNp coreutils-8.4-orig/src/Makefile.am coreutils-8.4/src/Makefile.am
+--- coreutils-8.4-orig/src/Makefile.am 2010-01-03 18:06:20.000000000 +0100
++++ coreutils-8.4/src/Makefile.am 2010-02-12 10:17:46.000000000 +0100
+@@ -361,7 +361,7 @@ factor_LDADD += $(LIB_GMP)
+ uptime_LDADD += $(GETLOADAVG_LIBS)
+
+ # for crypt
+-su_LDADD += $(LIB_CRYPT)
++su_LDADD += $(LIB_CRYPT) @LIB_PAM@
+
+ # for various ACL functions
+ copy_LDADD += $(LIB_ACL)
+diff -urNp coreutils-8.4-orig/src/su.c coreutils-8.4/src/su.c
+--- coreutils-8.4-orig/src/su.c 2010-02-12 10:15:15.000000000 +0100
++++ coreutils-8.4/src/su.c 2010-02-12 10:24:29.000000000 +0100
+@@ -37,6 +37,16 @@
+ restricts who can su to UID 0 accounts. RMS considers that to
+ be fascist.
+
++#ifdef USE_PAM
++
++ Actually, with PAM, su has nothing to do with whether or not a
++ wheel group is enforced by su. RMS tries to restrict your access
++ to a su which implements the wheel group, but PAM considers that
++ to be fascist, and gives the user/sysadmin the opportunity to
++ enforce a wheel group by proper editing of /etc/pam.conf
++
++#endif
++
+ Compile-time options:
+ -DSYSLOG_SUCCESS Log successful su's (by default, to root) with syslog.
+ -DSYSLOG_FAILURE Log failed su's (by default, to root) with syslog.
+@@ -53,6 +63,15 @@
+ #include <pwd.h>
+ #include <grp.h>
+
++#ifdef USE_PAM
++# include <signal.h>
++# include <sys/wait.h>
++# include <sys/fsuid.h>
++# include <unistd.h>
++# include <security/pam_appl.h>
++# include <security/pam_misc.h>
++#endif /* USE_PAM */
++
+ #include "system.h"
+ #include "getpass.h"
+
+@@ -120,10 +139,17 @@
+ /* The user to become if none is specified. */
+ #define DEFAULT_USER "root"
+
++#ifndef USE_PAM
+ char *crypt (char const *key, char const *salt);
++#endif
+
+-static void run_shell (char const *, char const *, char **, size_t)
++static void run_shell (char const *, char const *, char **, size_t,
++ const struct passwd *)
++#ifdef USE_PAM
++ ;
++#else
+ ATTRIBUTE_NORETURN;
++#endif
+
+ /* If true, pass the `-f' option to the subshell. */
+ static bool fast_startup;
+@@ -209,7 +235,26 @@ log_su (struct passwd const *pw, bool su
+ }
+ #endif
+
++#ifdef USE_PAM
++static pam_handle_t *pamh = NULL;
++static int retval;
++static struct pam_conv conv = {
++ misc_conv,
++ NULL
++};
++
++#define PAM_BAIL_P if (retval) { \
++ pam_end(pamh, PAM_SUCCESS); \
++ return 0; \
++}
++#define PAM_BAIL_P_VOID if (retval) { \
++ pam_end(pamh, PAM_SUCCESS); \
++return; \
++}
++#endif
++
+ /* Ask the user for a password.
++ If PAM is in use, let PAM ask for the password if necessary.
+ Return true if the user gives the correct password for entry PW,
+ false if not. Return true without asking for a password if run by UID 0
+ or if PW has an empty password. */
+@@ -217,6 +262,44 @@ log_su (struct passwd const *pw, bool su
+ static bool
+ correct_password (const struct passwd *pw)
+ {
++#ifdef USE_PAM
++ struct passwd *caller;
++ char *tty_name, *ttyn;
++ retval = pam_start(PROGRAM_NAME, pw->pw_name, &conv, &pamh);
++ PAM_BAIL_P;
++
++ if (getuid() != 0 && !isatty(0)) {
++ fprintf(stderr, "standard in must be a tty\n");
++ exit(1);
++ }
++
++ caller = getpwuid(getuid());
++ if(caller != NULL && caller->pw_name != NULL) {
++ retval = pam_set_item(pamh, PAM_RUSER, caller->pw_name);
++ PAM_BAIL_P;
++ }
++
++ ttyn = ttyname(0);
++ if (ttyn) {
++ if (strncmp(ttyn, "/dev/", 5) == 0)
++ tty_name = ttyn+5;
++ else
++ tty_name = ttyn;
++ retval = pam_set_item(pamh, PAM_TTY, tty_name);
++ PAM_BAIL_P;
++ }
++ retval = pam_authenticate(pamh, 0);
++ PAM_BAIL_P;
++ retval = pam_acct_mgmt(pamh, 0);
++ if (retval == PAM_NEW_AUTHTOK_REQD) {
++ /* password has expired. Offer option to change it. */
++ retval = pam_chauthtok(pamh, PAM_CHANGE_EXPIRED_AUTHTOK);
++ PAM_BAIL_P;
++ }
++ PAM_BAIL_P;
++ /* must be authenticated if this point was reached */
++ return 1;
++#else /* !USE_PAM */
+ char *unencrypted, *encrypted, *correct;
+ #if HAVE_GETSPNAM && HAVE_STRUCT_SPWD_SP_PWDP
+ /* Shadow passwd stuff for SVR3 and maybe other systems. */
+@@ -241,6 +324,7 @@ correct_password (const struct passwd *p
+ encrypted = crypt (unencrypted, correct);
+ memset (unencrypted, 0, strlen (unencrypted));
+ return STREQ (encrypted, correct);
++#endif /* !USE_PAM */
+ }
+
+ /* Update `environ' for the new shell based on PW, with SHELL being
+@@ -254,12 +338,18 @@ modify_environment (const struct passwd
+ /* Leave TERM unchanged. Set HOME, SHELL, USER, LOGNAME, PATH.
+ Unset all other environment variables. */
+ char const *term = getenv ("TERM");
++ char const *display = getenv ("DISPLAY");
++ char const *xauthority = getenv ("XAUTHORITY");
+ if (term)
+ term = xstrdup (term);
+ environ = xmalloc ((6 + !!term) * sizeof (char *));
+ environ[0] = NULL;
+ if (term)
+ xsetenv ("TERM", term);
++ if (display)
++ xsetenv ("DISPLAY", display);
++ if (xauthority)
++ xsetenv ("XAUTHORITY", xauthority);
+ xsetenv ("HOME", pw->pw_dir);
+ xsetenv ("SHELL", shell);
+ xsetenv ("USER", pw->pw_name);
+@@ -292,8 +382,13 @@ change_identity (const struct passwd *pw
+ {
+ #ifdef HAVE_INITGROUPS
+ errno = 0;
+- if (initgroups (pw->pw_name, pw->pw_gid) == -1)
++ if (initgroups (pw->pw_name, pw->pw_gid) == -1) {
++#ifdef USE_PAM
++ pam_close_session(pamh, 0);
++ pam_end(pamh, PAM_ABORT);
++#endif
+ error (EXIT_CANCELED, errno, _("cannot set groups"));
++ }
+ endgrent ();
+ #endif
+ if (setgid (pw->pw_gid))
+@@ -302,6 +397,31 @@ change_identity (const struct passwd *pw
+ error (EXIT_CANCELED, errno, _("cannot set user id"));
+ }
+
++#ifdef USE_PAM
++static int caught=0;
++/* Signal handler for parent process later */
++static void su_catch_sig(int sig)
++{
++ ++caught;
++}
++
++int
++pam_copyenv (pam_handle_t *pamh)
++{
++ char **env;
++
++ env = pam_getenvlist(pamh);
++ if(env) {
++ while(*env) {
++ if (putenv (*env))
++ xalloc_die ();
++ env++;
++ }
++ }
++ return(0);
++}
++#endif
++
+ /* Run SHELL, or DEFAULT_SHELL if SHELL is empty.
+ If COMMAND is nonzero, pass it to the shell with the -c option.
+ Pass ADDITIONAL_ARGS to the shell as more arguments; there
+@@ -309,17 +429,49 @@ change_identity (const struct passwd *pw
+
+ static void
+ run_shell (char const *shell, char const *command, char **additional_args,
+- size_t n_additional_args)
++ size_t n_additional_args, const struct passwd *pw)
+ {
+ size_t n_args = 1 + fast_startup + 2 * !!command + n_additional_args + 1;
+ char const **args = xnmalloc (n_args, sizeof *args);
+ size_t argno = 1;
++#ifdef USE_PAM
++ int child;
++ sigset_t ourset;
++ int status;
++
++ retval = pam_open_session(pamh,0);
++ if (retval != PAM_SUCCESS) {
++ fprintf (stderr, "could not open session\n");
++ exit (1);
++ }
++
++/* do this at the last possible moment, because environment variables may
++ be passed even in the session phase
++*/
++ if(pam_copyenv(pamh) != PAM_SUCCESS)
++ fprintf (stderr, "error copying PAM environment\n");
++
++ /* Credentials should be set in the parent */
++ if (pam_setcred(pamh, PAM_ESTABLISH_CRED) != PAM_SUCCESS) {
++ pam_close_session(pamh, 0);
++ fprintf(stderr, "could not set PAM credentials\n");
++ exit(1);
++ }
++
++ child = fork();
++ if (child == 0) { /* child shell */
++ change_identity (pw);
++ pam_end(pamh, 0);
++#endif
+
+ if (simulate_login)
+ {
+ char *arg0;
+ char *shell_basename;
+
++ if(chdir(pw->pw_dir))
++ error(0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);
++
+ shell_basename = last_component (shell);
+ arg0 = xmalloc (strlen (shell_basename) + 2);
+ arg0[0] = '-';
+@@ -344,6 +496,67 @@ run_shell (char const *shell, char const
+ error (0, errno, "%s", shell);
+ exit (exit_status);
+ }
++#ifdef USE_PAM
++ } else if (child == -1) {
++ fprintf(stderr, "can not fork user shell: %s", strerror(errno));
++ pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT);
++ pam_close_session(pamh, 0);
++ pam_end(pamh, PAM_ABORT);
++ exit(1);
++ }
++ /* parent only */
++ sigfillset(&ourset);
++ if (sigprocmask(SIG_BLOCK, &ourset, NULL)) {
++ fprintf(stderr, "%s: signal malfunction\n", PROGRAM_NAME);
++ caught = 1;
++ }
++ if (!caught) {
++ struct sigaction action;
++ action.sa_handler = su_catch_sig;
++ sigemptyset(&action.sa_mask);
++ action.sa_flags = 0;
++ sigemptyset(&ourset);
++ if (sigaddset(&ourset, SIGTERM)
++ || sigaddset(&ourset, SIGALRM)
++ || sigaction(SIGTERM, &action, NULL)
++ || sigprocmask(SIG_UNBLOCK, &ourset, NULL)) {
++ fprintf(stderr, "%s: signal masking malfunction\n", PROGRAM_NAME);
++ caught = 1;
++ }
++ }
++ if (!caught) {
++ do {
++ int pid;
++
++ pid = waitpid(-1, &status, WUNTRACED);
++
++ if (((pid_t)-1 != pid) && (0 != WIFSTOPPED (status))) {
++ kill(getpid(), WSTOPSIG(status));
++ /* once we get here, we must have resumed */
++ kill(pid, SIGCONT);
++ }
++ } while (0 != WIFSTOPPED(status));
++ }
++
++ if (caught) {
++ fprintf(stderr, "\nSession terminated, killing shell...");
++ kill (child, SIGTERM);
++ }
++ /* Not checking retval on this because we need to call close session */
++ pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT);
++ retval = pam_close_session(pamh, 0);
++ PAM_BAIL_P_VOID;
++ retval = pam_end(pamh, PAM_SUCCESS);
++ PAM_BAIL_P_VOID;
++ if (caught) {
++ sleep(2);
++ kill(child, SIGKILL);
++ fprintf(stderr, " ...killed.\n");
++ exit(-1);
++ }
++ exit ((0 != WIFEXITED (status)) ? WEXITSTATUS (status)
++ : WTERMSIG (status) + 128);
++#endif /* USE_PAM */
+ }
+
+ /* Return true if SHELL is a restricted shell (one not returned by
+@@ -511,9 +724,9 @@ main (int argc, char **argv)
+ shell = xstrdup (shell ? shell : pw->pw_shell);
+ modify_environment (pw, shell);
+
++#ifndef USE_PAM
+ change_identity (pw);
+- if (simulate_login && chdir (pw->pw_dir) != 0)
+- error (0, errno, _("warning: cannot change directory to %s"), pw->pw_dir);
++#endif
+
+ /* error() flushes stderr, but does not check for write failure.
+ Normally, we would catch this via our atexit() hook of
+@@ -523,5 +736,5 @@ main (int argc, char **argv)
+ if (ferror (stderr))
+ exit (EXIT_CANCELED);
+
+- run_shell (shell, command, argv + optind, MAX (0, argc - optind));
++ run_shell (shell, command, argv + optind, MAX (0, argc - optind), pw);
+ }
diff --git a/abs/not_built/core/coreutils/coreutils.install b/abs/not_built/core/coreutils/coreutils.install
new file mode 100644
index 0000000..8caae66
--- /dev/null
+++ b/abs/not_built/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.gz $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.gz $infodir/dir 2> /dev/null
+ done
+}
+
diff --git a/abs/not_built/core/coreutils/su.pam b/abs/not_built/core/coreutils/su.pam
new file mode 100644
index 0000000..cf15f40
--- /dev/null
+++ b/abs/not_built/core/coreutils/su.pam
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth sufficient pam_rootok.so
+# Uncomment the following line to implicitly trust users in the "wheel" group.
+#auth sufficient pam_wheel.so trust use_uid
+# Uncomment the following line to require a user to be in the "wheel" group.
+#auth required pam_wheel.so use_uid
+auth required pam_unix.so
+account required pam_unix.so
+session required pam_unix.so
diff --git a/abs/not_built/core/cpio/PKGBUILD b/abs/not_built/core/cpio/PKGBUILD
new file mode 100644
index 0000000..712fa3d
--- /dev/null
+++ b/abs/not_built/core/cpio/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 76085 2010-04-07 18:00:10Z tpowa $
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=cpio
+pkgver=2.11
+pkgrel=2
+pkgdesc="A tool to copy files into or out of a cpio or tar archive"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnu.org/software/cpio"
+depends=('glibc')
+source=(ftp://ftp.gnu.org/gnu/cpio/cpio-${pkgver}.tar.gz)
+install=cpio.install
+md5sums=('1112bb6c45863468b5496ba128792f6c')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make || return 1
+}
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+ rm -f ${pkgdir}/usr/bin/mt ${pkgdir}/pkg/usr/share/man/man1/mt.1
+ mv ${pkgdir}/usr/bin ${pkgdir}/bin
+ rm -rf ${pkgdir}/usr/libexec
+ # remove mt manpage it conflicts with mt-st from extra
+ rm $pkgdir/usr/share/man/man1/mt.1 || return 1
+ # remove infodir
+ rm $pkgdir/usr/share/info/dir
+}
diff --git a/abs/not_built/core/cpio/cpio-gcc43.patch b/abs/not_built/core/cpio/cpio-gcc43.patch
new file mode 100644
index 0000000..0057b8d
--- /dev/null
+++ b/abs/not_built/core/cpio/cpio-gcc43.patch
@@ -0,0 +1,139 @@
+http://bugs.gentoo.org/198817
+
+from upstream gnulib for "extern inline" changes
+
+diff --git a/lib/argp-fmtstream.h b/lib/argp-fmtstream.h
+index 93fa651..50f1387 100644
+--- a/lib/argp-fmtstream.h
++++ b/lib/argp-fmtstream.h
+@@ -1,5 +1,5 @@
+ /* Word-wrapping and line-truncating streams.
+- Copyright (C) 1997, 2006 Free Software Foundation, Inc.
++ Copyright (C) 1997, 2006-2007 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Written by Miles Bader <miles@gnu.ai.mit.edu>.
+
+@@ -134,6 +134,7 @@ extern ssize_t argp_fmtstream_printf (argp_fmtstream_t __fs,
+ const char *__fmt, ...)
+ __attribute__ ((__format__ (printf, 2, 3)));
+
++#if _LIBC || !defined __OPTIMIZE__
+ extern int __argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
+ extern int argp_fmtstream_putc (argp_fmtstream_t __fs, int __ch);
+
+@@ -144,6 +145,7 @@ extern size_t __argp_fmtstream_write (argp_fmtstream_t __fs,
+ const char *__str, size_t __len);
+ extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,
+ const char *__str, size_t __len);
++#endif
+
+ /* Access macros for various bits of state. */
+ #define argp_fmtstream_lmargin(__fs) ((__fs)->lmargin)
+@@ -153,6 +155,7 @@ extern size_t argp_fmtstream_write (argp_fmtstream_t __fs,
+ #define __argp_fmtstream_rmargin argp_fmtstream_rmargin
+ #define __argp_fmtstream_wmargin argp_fmtstream_wmargin
+
++#if _LIBC || !defined __OPTIMIZE__
+ /* Set __FS's left margin to LMARGIN and return the old value. */
+ extern size_t argp_fmtstream_set_lmargin (argp_fmtstream_t __fs,
+ size_t __lmargin);
+@@ -174,6 +177,7 @@ extern size_t __argp_fmtstream_set_wmargin (argp_fmtstream_t __fs,
+ /* Return the column number of the current output point in __FS. */
+ extern size_t argp_fmtstream_point (argp_fmtstream_t __fs);
+ extern size_t __argp_fmtstream_point (argp_fmtstream_t __fs);
++#endif
+
+ /* Internal routines. */
+ extern void _argp_fmtstream_update (argp_fmtstream_t __fs);
+@@ -197,7 +201,28 @@ extern int __argp_fmtstream_ensure (argp_fmtstream_t __fs, size_t __amount);
+ #endif
+
+ #ifndef ARGP_FS_EI
+-#define ARGP_FS_EI extern inline
++# ifdef __GNUC__
++ /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
++ inline semantics, unless -fgnu89-inline is used. It defines a macro
++ __GNUC_STDC_INLINE__ to indicate this situation or a macro
++ __GNUC_GNU_INLINE__ to indicate the opposite situation.
++ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
++ semantics but warns, unless -fgnu89-inline is used:
++ warning: C99 inline functions are not supported; using GNU89
++ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
++ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */
++# if defined __GNUC_STDC_INLINE__
++# define ARGP_FS_EI inline
++# elif defined __GNUC_GNU_INLINE__
++# define ARGP_FS_EI extern inline __attribute__ ((__gnu_inline__))
++# else
++# define ARGP_FS_EI extern inline
++# endif
++# else
++ /* With other compilers, assume the ISO C99 meaning of 'inline', if
++ the compiler supports 'inline' at all. */
++# define ARGP_FS_EI inline
++# endif
+ #endif
+
+ ARGP_FS_EI size_t
+diff --git a/lib/argp.h b/lib/argp.h
+index fb11de6..aa76eb4 100644
+--- a/lib/argp.h
++++ b/lib/argp.h
+@@ -520,9 +520,11 @@ extern void __argp_state_help (const struct argp_state *__restrict __state,
+ FILE *__restrict __stream,
+ unsigned int __flags);
+
++#if _LIBC || !defined __USE_EXTERN_INLINES
+ /* Possibly output the standard usage message for ARGP to stderr and exit. */
+ extern void argp_usage (const struct argp_state *__state);
+ extern void __argp_usage (const struct argp_state *__state);
++#endif
+
+ /* If appropriate, print the printf string FMT and following args, preceded
+ by the program name and `:', to stderr, and followed by a `Try ... --help'
+@@ -551,6 +553,7 @@ extern void __argp_failure (const struct argp_state *__restrict __state,
+ const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 4, 5)));
+
++#if _LIBC || !defined __USE_EXTERN_INLINES
+ /* Returns true if the option OPT is a valid short option. */
+ extern int _option_is_short (const struct argp_option *__opt) __THROW;
+ extern int __option_is_short (const struct argp_option *__opt) __THROW;
+@@ -559,6 +562,7 @@ extern int __option_is_short (const struct argp_option *__opt) __THROW;
+ options array. */
+ extern int _option_is_end (const struct argp_option *__opt) __THROW;
+ extern int __option_is_end (const struct argp_option *__opt) __THROW;
++#endif
+
+ /* Return the input field for ARGP in the parser corresponding to STATE; used
+ by the help routines. */
+@@ -579,7 +583,28 @@ extern void *__argp_input (const struct argp *__restrict __argp,
+ # endif
+
+ # ifndef ARGP_EI
+-# define ARGP_EI extern __inline__
++# ifdef __GNUC__
++ /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
++ inline semantics, unless -fgnu89-inline is used. It defines a macro
++ __GNUC_STDC_INLINE__ to indicate this situation or a macro
++ __GNUC_GNU_INLINE__ to indicate the opposite situation.
++ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
++ semantics but warns, unless -fgnu89-inline is used:
++ warning: C99 inline functions are not supported; using GNU89
++ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
++ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. */
++# if defined __GNUC_STDC_INLINE__
++# define ARGP_EI __inline__
++# elif defined __GNUC_GNU_INLINE__
++# define ARGP_EI extern __inline__ __attribute__ ((__gnu_inline__))
++# else
++# define ARGP_EI extern __inline__
++# endif
++# else
++ /* With other compilers, assume the ISO C99 meaning of 'inline', if
++ the compiler supports 'inline' at all. */
++# define ARGP_EI inline
++# endif
+ # endif
+
+ ARGP_EI void
diff --git a/abs/not_built/core/cpio/cpio.install b/abs/not_built/core/cpio/cpio.install
new file mode 100644
index 0000000..e5502ca
--- /dev/null
+++ b/abs/not_built/core/cpio/cpio.install
@@ -0,0 +1,21 @@
+infodir=/usr/share/info
+filelist=(cpio.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/not_built/core/dash/PKGBUILD b/abs/not_built/core/dash/PKGBUILD
new file mode 100644
index 0000000..b4d3c80
--- /dev/null
+++ b/abs/not_built/core/dash/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 81892 2010-06-06 21:30:28Z dan $
+# Maintainer: Dan McGee <dan@archlinux.org>
+
+pkgname=dash
+pkgver=0.5.6.1
+pkgrel=1
+pkgdesc="A POSIX compliant shell that aims to be as small as possible"
+arch=('i686' 'x86_64')
+url="http://gondor.apana.org.au/~herbert/dash/"
+license=('BSD')
+groups=('base')
+depends=('glibc')
+#provides=('sh')
+source=("http://gondor.apana.org.au/~herbert/dash/files/dash-$pkgver.tar.gz")
+md5sums=('1c846f4f5a33c0050b2045a6f7037e56')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr --mandir=/usr/share/man --exec-prefix=""
+ make || return 1
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install || return 1
+
+ # license
+ install -m644 -D COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
+
+ # dash is our default /bin/sh
+ #cd $pkgdir/bin
+ #ln -s dash sh
+}
diff --git a/abs/not_built/core/db4.5/PKGBUILD b/abs/not_built/core/db4.5/PKGBUILD
new file mode 100644
index 0000000..db87a0d
--- /dev/null
+++ b/abs/not_built/core/db4.5/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=db4.5
+pkgver=4.5.20
+pkgrel=2
+pkgdesc="The Berkeley DB embedded database system 4.5"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://www.oracle.com/technology/software/products/berkeley-db/index.html"
+depends=('gcc-libs')
+options=('!libtool' '!makeflags')
+source=(http://download-uk.oracle.com/berkeley-db/db-${pkgver}.tar.gz
+ http://www.oracle.com/technology/products/berkeley-db/db/update/4.5.20/patch.4.5.20.1
+ http://www.oracle.com/technology/products/berkeley-db/db/update/4.5.20/patch.4.5.20.2)
+md5sums=('b0f1c777708cb8e9d37fb47e7ed3312d'
+ 'a571e239b9041d7990df287cbc59ad6f'
+ 'b7a7086a067ba116f5a8464362c9a9a7')
+
+build() {
+ cd ${startdir}/src/db-${pkgver}/
+ patch -Np0 -i ${startdir}/src/patch.4.5.20.1 || return 1
+ patch -Np0 -i ${startdir}/src/patch.4.5.20.2 || return 1
+
+ cd build_unix
+ ../dist/configure --prefix=/usr --enable-compat185 \
+ --enable-shared --disable-static --enable-cxx
+ make LIBSO_LIBS=-lpthread || return 1
+ make prefix=${startdir}/pkg/usr \
+ includedir=${startdir}/pkg/usr/include/db4.5 install
+
+ rm -rf ${startdir}/pkg/usr/docs
+ rm -f ${startdir}/pkg/usr/lib/libdb{,_cxx}.so
+ rm -f ${startdir}/pkg/usr/lib/libdb{,_cxx}-4.so
+
+ cd ${startdir}/pkg/usr/bin
+ for i in *; do
+ mv $i db4.5_${i/db_/}
+ done
+ mkdir -p ${startdir}/pkg/usr/share/licenses/${pkgname}
+ install -m644 ${startdir}/src/db-${pkgver}/LICENSE ${startdir}/pkg/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/abs/not_built/core/dhcp/ChangeLog b/abs/not_built/core/dhcp/ChangeLog
new file mode 100644
index 0000000..9cffaa9
--- /dev/null
+++ b/abs/not_built/core/dhcp/ChangeLog
@@ -0,0 +1,11 @@
+
+2010-07-16 kevin <kevin@archlinux.org>
+ * dhcp 4.2.0-1
+
+2009-07-19 kevin <kevin@archlinux.org>
+ * 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 <fusca14@gmail.com>
+
diff --git a/abs/not_built/core/dhcp/PKGBUILD b/abs/not_built/core/dhcp/PKGBUILD
new file mode 100644
index 0000000..af4e49a
--- /dev/null
+++ b/abs/not_built/core/dhcp/PKGBUILD
@@ -0,0 +1,77 @@
+# $Id: PKGBUILD 85736 2010-07-19 02:41:06Z kevin $
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgbase=dhcp
+pkgname=('dhcp'
+ 'dhclient')
+# separate patch levels with a period to maintain proper versioning.
+pkgver=4.2.0
+_pkgver=4.2.0
+pkgrel=1
+arch=('i686' 'x86_64')
+license=('custom:isc-dhcp')
+url="https://www.isc.org/software/dhcp"
+source=(http://ftp.isc.org/isc/${pkgname}/${pkgname}-${_pkgver}.tar.gz
+dhcpd dhcp.conf.d dhcp-4.1.1-missing-ipv6-not-fatal.patch dhclient-script-pathFixes.patch)
+md5sums=('83abd7c4f9c24d8dd024ca5a71380c0a'
+ 'df22cffa7d7415ece7bb025b7bf774dd'
+ '49da3192e5c885e3c7d02f447c2dea5e'
+ 'fd64aeb4f399dcc41ea43089a3811094'
+ 'ddcc5cd576ec631ade6c4da21952b50b')
+
+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 -Np0 -i ${srcdir}/dhcp-4.1.1-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
+}
+
+package_dhcp(){
+ pkgdesc="A DHCP server, client, and relay agent"
+ depends=('openssl>=0.9.8a')
+ backup=('etc/dhcpd.conf' 'etc/conf.d/dhcp')
+ install=dhcp.install
+
+ cd ${srcdir}/${pkgname}-${_pkgver}
+ 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/${pkgbase}
+ 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}/${pkgbase}-${_pkgver}/LICENSE \
+ ${pkgdir}/usr/share/licenses/dhcp/LICENSE
+}
+
+package_dhclient(){
+
+ pkgdesc="dhclient is standalone client from the dhcp package"
+ depends=('bash')
+
+ cd ${srcdir}/${pkgname}-${_pkgver}/client/scripts
+ patch -Np1 -i ${srcdir}/dhclient-script-pathFixes.patch linux || return 1
+ cd ${srcdir}/${pkgname}-${_pkgver}/client
+ make DESTDIR=${pkgdir} install
+ install -m755 -d ${startdir}/pkg/var/lib/dhclient
+
+ #not needed after fresh install
+ rm -f ${pkgdir}/var/lib/dhclient/dhcpd.leases
+
+ #move dhclient.conf to dhclient.conf.example
+ mv ${pkgdir}/etc/dhclient.conf ${pkgdir}/etc/dhclient.conf.example
+
+ # install dhclient linux script
+ mkdir ${pkgdir}/sbin
+ install -m755 -D ${srcdir}/${pkgname}-${_pkgver}/client/scripts/linux \
+ ${pkgdir}/sbin/dhclient-script
+ # install licenses
+ install -m644 -D ${srcdir}/${pkgname}-${_pkgver}/LICENSE \
+ ${pkgdir}/usr/share/licenses/dhclient/LICENSE
+}
diff --git a/abs/not_built/core/dhcp/dhclient-script-pathFixes.patch b/abs/not_built/core/dhcp/dhclient-script-pathFixes.patch
new file mode 100644
index 0000000..e19c328
--- /dev/null
+++ b/abs/not_built/core/dhcp/dhclient-script-pathFixes.patch
@@ -0,0 +1,118 @@
+--- linux 2009-04-21 16:21:09.000000000 +0200
++++ linux_new 2010-06-30 19:06:20.000000000 +0200
+@@ -23,7 +23,7 @@
+ # of the $1 in its args.
+
+ # 'ip' just looks too weird. /sbin/ip looks less weird.
+-ip=/sbin/ip
++ip=/usr/sbin/ip
+
+ make_resolv_conf() {
+ if [ x"$new_domain_name_servers" != x ]; then
+@@ -112,9 +112,9 @@
+ if [ x$reason = xPREINIT ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Bring down alias interface. Its routes will disappear too.
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+- ifconfig $interface 0 up
++ /sbin/ifconfig $interface 0 up
+
+ # We need to give the kernel some time to get the interface up.
+ sleep 1
+@@ -141,32 +141,32 @@
+ if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
+ [ x$alias_ip_address != x$old_ip_address ]; then
+ # Possible new alias. Remove old alias.
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+ if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+ # IP address changed. Bringing down the interface will delete all routes,
+ # and clear the ARP cache.
+- ifconfig $interface inet 0 down
++ /sbin/ifconfig $interface inet 0 down
+
+ fi
+ if [ x$old_ip_address = x ] || [ x$old_ip_address != x$new_ip_address ] || \
+ [ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
+
+- ifconfig $interface inet $new_ip_address $new_subnet_arg \
++ /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ $new_broadcast_arg $mtu_arg
+ # Add a network route to the computed network address.
+ for router in $new_routers; do
+ if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+- route add -host $router dev $interface
++ /sbin/route add -host $router dev $interface
+ fi
+- route add default gw $router $metric_arg dev $interface
++ /sbin/route add default gw $router $metric_arg dev $interface
+ done
+ fi
+ if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
+ then
+- ifconfig $interface:0- inet 0
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address $interface:0
++ /sbin/ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++ /sbin/route add -host $alias_ip_address $interface:0
+ fi
+ make_resolv_conf
+ exit_with_hooks 0
+@@ -176,42 +176,42 @@
+ || [ x$reason = xSTOP ]; then
+ if [ x$alias_ip_address != x ]; then
+ # Turn off alias interface.
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+ if [ x$old_ip_address != x ]; then
+ # Shut down interface, which will delete routes and clear arp cache.
+- ifconfig $interface inet 0 down
++ /sbin/ifconfig $interface inet 0 down
+ fi
+ if [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address $interface:0
++ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++ /sbin/route add -host $alias_ip_address $interface:0
+ fi
+ exit_with_hooks 0
+ fi
+
+ if [ x$reason = xTIMEOUT ]; then
+ if [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0- inet 0
++ /sbin/ifconfig $interface:0- inet 0
+ fi
+- ifconfig $interface inet $new_ip_address $new_subnet_arg \
++ /sbin/ifconfig $interface inet $new_ip_address $new_subnet_arg \
+ $new_broadcast_arg $mtu_arg
+ set $new_routers
+ if ping -q -c 1 $1; then
+ if [ x$new_ip_address != x$alias_ip_address ] && \
+ [ x$alias_ip_address != x ]; then
+- ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
+- route add -host $alias_ip_address dev $interface:0
++ /sbin/ifconfig $interface:0 inet $alias_ip_address $alias_subnet_arg
++ /sbin/route add -host $alias_ip_address dev $interface:0
+ fi
+ for router in $new_routers; do
+ if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
+- route add -host $router dev $interface
++ /sbin/route add -host $router dev $interface
+ fi
+- route add default gw $router $metric_arg dev $interface
++ /sbin/route add default gw $router $metric_arg dev $interface
+ done
+ make_resolv_conf
+ exit_with_hooks 0
+ fi
+- ifconfig $interface inet 0 down
++ /sbin/ifconfig $interface inet 0 down
+ exit_with_hooks 1
+ fi
+
diff --git a/abs/not_built/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch b/abs/not_built/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch
new file mode 100644
index 0000000..cc5ddb8
--- /dev/null
+++ b/abs/not_built/core/dhcp/dhcp-4.1.1-missing-ipv6-not-fatal.patch
@@ -0,0 +1,39 @@
+--- common/discover.c 2009-09-29 21:44:49.000000000 +0200
++++ common/discover.c_new 2010-06-30 19:40:02.000000000 +0200
+@@ -443,7 +443,7 @@
+ }
+
+ #ifdef DHCPv6
+- if (local_family == AF_INET6) {
++ if ((local_family == AF_INET6) && !access("/proc/net/if_inet6", R_OK)) {
+ ifaces->fp6 = fopen("/proc/net/if_inet6", "r");
+ if (ifaces->fp6 == NULL) {
+ log_error("Error opening '/proc/net/if_inet6' to "
+@@ -454,6 +454,8 @@
+ ifaces->fp = NULL;
+ return 0;
+ }
++ } else {
++ ifaces->fp6 = NULL;
+ }
+ #endif
+
+@@ -721,7 +723,7 @@
+ return 1;
+ }
+ #ifdef DHCPv6
+- if (!(*err)) {
++ if (!(*err) && ifaces->fp6) {
+ if (local_family == AF_INET6)
+ return next_iface6(info, err, ifaces);
+ }
+@@ -740,7 +742,8 @@
+ ifaces->sock = -1;
+ #ifdef DHCPv6
+ if (local_family == AF_INET6) {
+- fclose(ifaces->fp6);
++ if(ifaces->fp6)
++ fclose(ifaces->fp6);
+ ifaces->fp6 = NULL;
+ }
+ #endif
diff --git a/abs/not_built/core/dhcp/dhcp.conf.d b/abs/not_built/core/dhcp/dhcp.conf.d
new file mode 100644
index 0000000..99ba6d1
--- /dev/null
+++ b/abs/not_built/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/not_built/core/dhcp/dhcp.install b/abs/not_built/core/dhcp/dhcp.install
new file mode 100644
index 0000000..c0ad39e
--- /dev/null
+++ b/abs/not_built/core/dhcp/dhcp.install
@@ -0,0 +1,11 @@
+# arg 1: the new package version
+post_install() {
+ [ -f var/state/dhcp/dhcpd.leases ] || : >var/state/dhcp/dhcpd.leases
+ #echo "If dhcpd doesn't 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
+}
diff --git a/abs/not_built/core/dhcp/dhcpd b/abs/not_built/core/dhcp/dhcpd
new file mode 100755
index 0000000..1fbb31e
--- /dev/null
+++ b/abs/not_built/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/not_built/core/directfb/PKGBUILD b/abs/not_built/core/directfb/PKGBUILD
new file mode 100644
index 0000000..c24a17d
--- /dev/null
+++ b/abs/not_built/core/directfb/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 24882 2010-08-29 14:24:38Z jlichtblau $
+# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+
+pkgname=directfb
+pkgver=1.4.5
+pkgrel=1
+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')
+changelog=$pkgname.changelog
+source=(http://www.directfb.org/downloads/Core/DirectFB-${pkgver%.*}/DirectFB-${pkgver}.tar.gz)
+md5sums=('7cfd568a1267c4c2c97ba00c29cb4f7d')
+
+build() {
+ cd ${srcdir}/DirectFB-${pkgver}
+
+ ./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
+}
+
+package() {
+ cd ${srcdir}/DirectFB-${pkgver}
+
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/abs/not_built/core/directfb/directfb.changelog b/abs/not_built/core/directfb/directfb.changelog
new file mode 100644
index 0000000..e7e4dc6
--- /dev/null
+++ b/abs/not_built/core/directfb/directfb.changelog
@@ -0,0 +1,35 @@
+2010-08-29 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+
+ * directfb 1.4.5-1
+ * Upstream update
+
+2010-01-20 Eric Belanger <eric@archlinux.org>
+
+ * directfb 1.4.3-1
+ * Upstream update
+
+2009-11-08 Eric Belanger <eric@archlinux.org>
+
+ * directfb 1.4.2-1
+ * Upstream update
+
+2009-07-13 Eric Belanger <eric@archlinux.org>
+
+ * directfb 1.4.1-1
+ * Upstream update
+
+2009-05-03 Eric Belanger <eric@archlinux.org>
+
+ * directfb 1.2.8-1
+ * Upstream update
+
+2009-03-06 Eric Belanger <eric@archlinux.org>
+
+ * directfb 1.2.7-1
+ * Upstream update
+
+2008-07-29 Eric Belanger <eric@archlinux.org>
+
+ * directfb 1.2.0-1
+ * Upstream update
+ * Added ChangeLog
diff --git a/abs/not_built/core/diskless-legacy/PKGBUILD b/abs/not_built/core/diskless-legacy/PKGBUILD
new file mode 100644
index 0000000..85cfc3a
--- /dev/null
+++ b/abs/not_built/core/diskless-legacy/PKGBUILD
@@ -0,0 +1,14 @@
+# $Id: PKGBUILD 23123 2009-01-03 02:43:02Z kevin $
+# Maintainer: Greg Frost <gregfrost1@bigpond.com>
+pkgname=diskless-legacy
+pkgver=1
+pkgrel=3
+pkgdesc="Script for configuring a diskless mythtv frontends using NFS root."
+arch=i686
+depends=(tftp-hpa dhcp)
+source=(config_diskless_frontend.bash)
+
+build() {
+ install -D -m755 ${srcdir}/config_diskless_frontend.bash \
+ ${pkgdir}/usr/local/bin/config_diskless_frontend.bash
+}
diff --git a/abs/not_built/core/diskless-legacy/config_diskless_frontend.bash b/abs/not_built/core/diskless-legacy/config_diskless_frontend.bash
new file mode 100755
index 0000000..24d5fc1
--- /dev/null
+++ b/abs/not_built/core/diskless-legacy/config_diskless_frontend.bash
@@ -0,0 +1,704 @@
+#!/bin/bash
+# This script configures your backend so that a diskless
+# frontend can boot from it.
+
+function backtitle() { # no arguments.
+ BT="${0##*/}"
+ KMV='/etc/LinHES-release'
+ if [ -f "$KMV" ]; then
+ BT="-= $(cat $KMV) $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 <<EOT
+# dhcpd.conf for LinHES Diskless Frontend
+
+# global settings
+## POF allow booting;
+allow bootp;
+default-lease-time 600;
+max-lease-time 7200;
+
+subnet ${NETWORK}.0 netmask ${NETMASK} {
+ next-server $BACKEND_IP;
+ filename "pxelinux.0";
+ option subnet-mask ${NETMASK};
+ range ${IPRANGE_FROM} ${IPRANGE_TO};
+ ${ALLNAMESERVERS:+option domain-name-servers $ALLNAMESERVERS;}
+ ${GATEWAY:+option routers $GATEWAY;}
+}
+EOT
+
+ for (( fe = 0 ; fe < ${#frontend_names[@]} ; fe++ )) ; do
+ echo "host ${frontend_names[$fe]} \
+{hardware ethernet ${frontend_macs[$fe]}; \
+fixed-address ${frontend_ips[$fe]};}" >> \
+ /etc/dhcpd.conf
+ done
+
+ /sbin/add_service.sh dhcpd
+}
+
+setup_tftpd() {
+ /sbin/add_service.sh 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
+
+ # Ensure that the montpoints that are used as storage groups are exported.
+
+ for storage_mount in ${storage_mounts[@]} ; do
+
+ if ! grep -q ^${storage_mount}[[:space:]] /etc/exports ; then
+ echo "Adding line for ${storage_mount} in /etc/exports"
+ echo "${storage_mount} *(rw,async,no_subtree_check)" >> /etc/exports
+ else
+ echo "Already added line for ${storage_mount} in /etc/exports"
+ fi
+ done
+}
+
+find_storage_mounts() {
+ unset storage_mounts
+ for group in $(mysql -sB mythconverg -e \
+ "select dirname from storagegroup where hostname = '$(hostname)'") ; do
+
+ group_mount=$group
+ while ! mountpoint -q $group_mount ; do
+ group_mount=$(dirname $group_mount)
+ done
+
+ echo Storage group $group mountpoint is $group_mount
+ storage_mounts=( "${storage_mounts[@]}" $group_mount )
+ done
+}
+
+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" != /mnt && \
+ "$DIR" != /data && \
+ "$DIR" != /media && \
+ "$DIR" != /tmp && \
+ "$DIR" != /etc.old && \
+ "$DIR" != /storage && \
+ "$DIR" != /var && \
+ "$DIR" != /nfsroot && \
+ "$DIR" != /tftpboot && \
+ "$DIR" != /cdrom ]]
+ then
+ if mountpoint -q $DIR && [ "$DIR" != "/dev" ] ; then
+ echo " Making mountpoint dir $DIR"
+ cd $NFSROOT
+ tar c $DIR --exclude=$DIR/* 2> /dev/null | tar x 2> /dev/null
+ else
+ echo " Copying $DIR to $NFSROOT"
+ cp -ax $DIR $NFSROOT
+ fi
+ fi
+ done
+
+ 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 /mnt /data /tmp /media /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
+ chroot $NFSROOT /sbin/remove_service.sh avahi
+
+ # Update the fstab.
+
+ cp $NSFROOT/etc/fstab $NFSROOT/etc/fstab~
+ cat $NFSROOT/etc/fstab~ | grep -v ext[34] | grep -v xfs |
+ 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
+
+ for storage_mount in ${storage_mounts[@]} ; do
+ echo "\
+$BACKEND_IP:${storage_mount} ${storage_mount} nfs auto,noatime,nolock,rsize=32768,wsize=32768 0 0" \
+ >> $NFSROOT/etc/fstab
+ done
+
+ 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
+
+ # Check if the user has a diskless_tweak.<frontend_name> file in root's
+ # home directory. If they do, run it inside the chroot of the NFS root.
+
+ if [[ -x ~/diskless_tweak.$FRONTEND ]] ; then
+ echo Running tweak file ~/diskless_tweak.$FRONTEND
+ chroot $NFSROOT bash -v ~/diskless_tweak.$FRONTEND
+ fi
+
+ 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
+find_storage_mounts
+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/not_built/core/dvd+rw-tools/PKGBUILD b/abs/not_built/core/dvd+rw-tools/PKGBUILD
new file mode 100644
index 0000000..7f7597b
--- /dev/null
+++ b/abs/not_built/core/dvd+rw-tools/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: damir <damir@archlinux.org>
+
+pkgname=dvd+rw-tools
+pkgver=7.1
+origver=7.1 # sometimes it is not the same as pkgver and has '-' in it
+pkgrel=1
+[ "$CARCH" = "x86_64" ] && force=y
+pkgdesc="dvd burning tools"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://fy.chalmers.se/~appro/linux/DVD+RW"
+depends=('cdrkit' 'gcc-libs')
+source=("http://fy.chalmers.se/~appro/linux/DVD+RW/tools/${pkgname}-$origver.tar.gz"
+ "buildpatch-7.0-3-20080108-karolina.patch")
+md5sums=('8acb3c885c87f6838704a0025e435871' '54b4dc52f5380216d4d9fc2dd2086d31')
+
+build() {
+ # fix build, thank you Karolina
+ cd $startdir/src/$pkgname-$pkgver
+ patch -Np1 -i $startdir/src/buildpatch-7.0-3-20080108-karolina.patch
+
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ make || return 1
+ mkdir -p ${startdir}/pkg/usr/bin
+ for bin in growisofs dvd+rw-booktype dvd+rw-format dvd+rw-mediainfo dvd-ram-control; do
+ install -D -m755 $bin ${startdir}/pkg/usr/bin/$bin || return 1
+ done
+ install -D -m644 growisofs.1 ${startdir}/pkg/usr/share/man/man1/growisofs.1 || return 1
+}
+
+
diff --git a/abs/not_built/core/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch b/abs/not_built/core/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch
new file mode 100644
index 0000000..0b7951f
--- /dev/null
+++ b/abs/not_built/core/dvd+rw-tools/buildpatch-7.0-3-20080108-karolina.patch
@@ -0,0 +1,22 @@
+diff -Naur dvd+rw-tools-7.0/growisofs.c dvd+rw-tools-7.0_new/growisofs.c
+--- dvd+rw-tools-7.0/growisofs.c 2006-09-24 19:28:53.000000000 +0200
++++ dvd+rw-tools-7.0_new/growisofs.c 2008-01-08 00:56:57.000000000 +0100
+@@ -418,6 +418,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <assert.h>
++#include <limits.h>
+ #include "mp.h"
+
+ #if defined(__unix) || defined(__unix__)
+diff -Naur dvd+rw-tools-7.0/transport.hxx dvd+rw-tools-7.0_new/transport.hxx
+--- dvd+rw-tools-7.0/transport.hxx 2006-09-23 13:29:07.000000000 +0200
++++ dvd+rw-tools-7.0_new/transport.hxx 2008-01-08 00:57:36.000000000 +0100
+@@ -137,6 +137,7 @@
+ #include <sys/wait.h>
+ #include <sys/utsname.h>
+ #include <scsi/sg.h>
++#include <limits.h>
+ #if !defined(SG_FLAG_LUN_INHIBIT)
+ # if defined(SG_FLAG_UNUSED_LUN_INHIBIT)
+ # define SG_FLAG_LUN_INHIBIT SG_FLAG_UNUSED_LUN_INHIBIT
diff --git a/abs/not_built/core/eggdbus/PKGBUILD b/abs/not_built/core/eggdbus/PKGBUILD
new file mode 100644
index 0000000..f4bf786
--- /dev/null
+++ b/abs/not_built/core/eggdbus/PKGBUILD
@@ -0,0 +1,24 @@
+# Maintainer: kiefer <jorgelmadrid@gmail.com>
+
+pkgname=eggdbus
+pkgver=0.6
+pkgrel=5
+pkgdesc="GObject bindings for D-Bus"
+arch=('i686' 'x86_64')
+url="http://cgit.freedesktop.org/~david/eggdbus"
+license=('GPL')
+depends=('dbus' 'dbus-glib' 'glibc')
+makedepends=('gtk-doc')
+source=("http://dl.dropbox.com/u/162810/${pkgname}-${pkgver}.tar.gz ")
+md5sums=('ee993bd3c26d85ffe479b2d2bf91b661')
+
+build() {
+
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./autogen.sh --prefix=/usr || return 1
+ make || return 1
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/abs/not_built/core/evieext/PKGBUILD b/abs/not_built/core/evieext/PKGBUILD
new file mode 100644
index 0000000..29754f2
--- /dev/null
+++ b/abs/not_built/core/evieext/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 51098 2009-09-04 21:12:24Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=evieext
+pkgver=1.1.0
+pkgrel=1
+pkgdesc="X11 Event Interception extension wire protocol"
+arch=(any)
+url="http://xorg.freedesktop.org/"
+license=('MIT')
+source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('d0b57a8fbbf0845588a690542a6c29d351c2b4e5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ 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/not_built/core/fam/PKGBUILD b/abs/not_built/core/fam/PKGBUILD
new file mode 100644
index 0000000..3287aef
--- /dev/null
+++ b/abs/not_built/core/fam/PKGBUILD
@@ -0,0 +1,47 @@
+# $Id: PKGBUILD 42582 2009-06-16 05:21:39Z tpowa $
+# Maintainer: Allan McRae <allan@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=fam
+pkgver=2.7.0
+pkgrel=14
+pkgdesc="File Alteration Monitor"
+arch=('i686' 'x86_64')
+license=('LGPL' 'GPL')
+depends=('rpcbind' 'gcc-libs' 'bash')
+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-limits.patch
+ fam-2.7.0-buildfixes.patch
+ fam)
+md5sums=('1bf3ae6c0c58d3201afc97c6a4834e39'
+ '073d1763318344635ea316293390205c'
+ '47b41e0b0498793af004696a096d7da1'
+ '2638b8ffacb9f03b6e438e08ea7b290a'
+ 'fc0cabc0ac4f819680401eb3090c29c9'
+ '0b4dd9894ccc03f57787f9dfc0a7bd6f')
+
+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}/fam-2.7.0-limits.patch || return 1
+ patch -Np1 -i ${srcdir}/fam-2.7.0-buildfixes.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/not_built/core/fam/fam b/abs/not_built/core/fam/fam
new file mode 100755
index 0000000..53dd2a4
--- /dev/null
+++ b/abs/not_built/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 rpcbind && /etc/rc.d/rpcbind start
+ stat_busy "Starting File Alteration Monitor"
+ if [ ! -f /var/run/daemons/rpcbind ]; then
+ stat_fail
+ echo "ERROR: rpcbind 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/not_built/core/fam/fam-2.7.0-buildfixes.patch b/abs/not_built/core/fam/fam-2.7.0-buildfixes.patch
new file mode 100644
index 0000000..abc7888
--- /dev/null
+++ b/abs/not_built/core/fam/fam-2.7.0-buildfixes.patch
@@ -0,0 +1,69 @@
+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 2009-06-14 21:21:41.000000000 +1000
+@@ -24,6 +24,7 @@
+ #define BTree_included
+
+ #include "Boolean.h"
++#include <cstdlib>
+
+ // This is an in-core B-Tree implementation.
+ //
+diff -Naur fam-2.7.0-old/lib/Client.c++ fam-2.7.0/lib/Client.c++
+--- fam-2.7.0-old/lib/Client.c++ 2003-01-19 00:18:12.000000000 +1000
++++ fam-2.7.0/lib/Client.c++ 2009-06-14 21:22:33.000000000 +1000
+@@ -34,7 +34,7 @@
+ #include <syslog.h>
+ #include <errno.h>
+
+-#include <iostream.h>
++#include <iostream>
+
+ #include "fam.h"
+ #include "Client.h"
+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++ 2009-06-14 21:14:34.000000000 +1000
++++ fam-2.7.0/src/DNotify.c++ 2009-06-14 21:23:23.000000000 +1000
+@@ -31,6 +31,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <libgen.h>
++#include <cstdlib>
+
+ #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++ 2009-06-14 21:24:11.000000000 +1000
+@@ -40,7 +40,7 @@
+ #include "Interest.h"
+ #include "Log.h"
+ #include "Scheduler.h"
+-#include "alloc.h"
++#include <memory>
+
+ 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 2009-06-14 21:14:34.000000000 +1000
++++ fam-2.7.0/src/Interest.h 2009-06-14 21:25:25.000000000 +1000
+@@ -29,6 +29,7 @@
+ #include <netinet/in.h> // for in_addr
+
+ #include "Boolean.h"
++#include <cstdlib>
+
+ class Event;
+ class FileSystem;
+diff -Naur fam-2.7.0-old/src/NFSFileSystem.c++ fam-2.7.0/src/NFSFileSystem.c++
+--- fam-2.7.0-old/src/NFSFileSystem.c++ 2003-01-19 00:18:12.000000000 +1000
++++ fam-2.7.0/src/NFSFileSystem.c++ 2009-06-14 21:26:16.000000000 +1000
+@@ -97,7 +97,7 @@
+
+ attr_cache_timeout = ACREGMAX;
+
+- char * p;
++ const char * p;
+
+ if (strstr(opt, "noac")) {
+ f_noac = true;
diff --git a/abs/not_built/core/fam/fam-2.7.0-dnotify.patch b/abs/not_built/core/fam/fam-2.7.0-dnotify.patch
new file mode 100644
index 0000000..1d8910e
--- /dev/null
+++ b/abs/not_built/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 <fcntl.h>
++
++#include <string.h>
++#include <signal.h>
++#include <stdio.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <libgen.h>
++
++#include "DNotify.h"
++
++#include "Interest.h"
++#include "Log.h"
++#include "Scheduler.h"
++#include <memory>
++
++
++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;i<DIR_HASHSIZE;i++)
++ {
++ p = dir_hash[i];
++
++ while (p)
++ {
++ if (p->dir_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; i<FILE_HASHSIZE; i++)
++ {
++ fw = file_hash[i];
++ while (fw)
++ {
++ (*ehandler)(fw->file_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 <signal.h>
++
++// 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 <sys/types.h> 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 <fcntl.h>
++#include <unistd.h>
++],
++[ 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 <sys/stat.h>
+-#include <sys/types.h>
+-
+-#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 <sys/stat.h>
++#include <sys/types.h>
++
++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/not_built/core/fam/fam-2.7.0-largefiles.patch b/abs/not_built/core/fam/fam-2.7.0-largefiles.patch
new file mode 100644
index 0000000..60de9a4
--- /dev/null
+++ b/abs/not_built/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/not_built/core/fam/fam-2.7.0-limits.patch b/abs/not_built/core/fam/fam-2.7.0-limits.patch
new file mode 100644
index 0000000..4248957
--- /dev/null
+++ b/abs/not_built/core/fam/fam-2.7.0-limits.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 <limits.h>
+
+
+
diff --git a/abs/not_built/core/feh/PKGBUILD b/abs/not_built/core/feh/PKGBUILD
new file mode 100644
index 0000000..0f97b3b
--- /dev/null
+++ b/abs/not_built/core/feh/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 94545 2010-10-08 08:16:45Z bisson $
+# Maintainer:
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=feh
+pkgver=1.10
+pkgrel=2
+pkgdesc='Fast, lightweight image viewer which uses imlib2'
+arch=('i686' 'x86_64')
+url='https://derf.homelinux.org/~derf/projects/feh/'
+license=('MIT')
+depends=('libxinerama' 'giblib' 'perl' 'libjpeg7' 'libpng12')
+makedepends=('libxt')
+source=("https://derf.homelinux.org/~derf/projects/${pkgname}/${pkgname}-${pkgver}.tar.bz2")
+sha1sums=('c42095ed6a7636fe9d1ec90d3994f4a57af84681')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i -e 's:/usr/local:/usr:g' config.mk
+ make
+}
+
+package(){
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ make DESTDIR="${pkgdir}" install
+ install -D -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/abs/not_built/core/feh/__changelog b/abs/not_built/core/feh/__changelog
new file mode 100644
index 0000000..431a054
--- /dev/null
+++ b/abs/not_built/core/feh/__changelog
@@ -0,0 +1 @@
+1/20/11 - chw - Added libjpeg7 and libpng12 as deps.
diff --git a/abs/not_built/core/fltk/PKGBUILD b/abs/not_built/core/fltk/PKGBUILD
new file mode 100644
index 0000000..f5335f6
--- /dev/null
+++ b/abs/not_built/core/fltk/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 71291 2010-03-06 01:40:12Z pierre $
+
+pkgname=fltk
+pkgver=1.1.10
+pkgrel=1
+pkgdesc="Graphical user interface toolkit for X"
+arch=('i686' 'x86_64')
+license=('LGPL')
+url="http://www.fltk.org/"
+depends=('libjpeg' 'libpng' 'gcc-libs' 'libxft' 'libxext')
+makedepends=('mesa')
+source=("http://ftp.easysw.com/pub/$pkgname/$pkgver/$pkgname-$pkgver-source.tar.bz2")
+md5sums=('a1765594bc427ff892e36089fe1fa672')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ export LDFLAGS="${LDFLAGS//-Wl,--as-needed}"
+ export LDFLAGS="${LDFLAGS//,--as-needed}"
+ ./configure --prefix=/usr --enable-threads --enable-xft --enable-shared
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
diff --git a/abs/not_built/core/fontcacheproto/PKGBUILD b/abs/not_built/core/fontcacheproto/PKGBUILD
new file mode 100644
index 0000000..527dd57
--- /dev/null
+++ b/abs/not_built/core/fontcacheproto/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=fontcacheproto
+pkgver=0.1.3
+pkgrel=1
+pkgdesc="X11 font cache extension wire protocol"
+arch=('i686' 'x86_64')
+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
+}
+package() {
+ cd ${startdir}/src/${pkgname}-${pkgver}
+ make DESTDIR=${startdir}/pkg install || return 1
+}
+md5sums=('a8a50e5e995bfacb0359575faf7f6906')
diff --git a/abs/not_built/core/ftgl/PKGBUILD b/abs/not_built/core/ftgl/PKGBUILD
new file mode 100644
index 0000000..73fe640
--- /dev/null
+++ b/abs/not_built/core/ftgl/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 30671 2009-03-21 08:04:20Z eric $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: tobias <tobias@archlinux.org>
+
+pkgname=ftgl
+pkgver=2.1.3rc5
+pkgrel=1
+pkgdesc="OpenGL library to use arbitrary fonts"
+arch=('i686' 'x86_64')
+url="http://ftgl.wiki.sourceforge.net/"
+license=('MIT')
+depends=('freetype2' 'glut')
+makedepends=('doxygen')
+options=('!libtool')
+source=(http://downloads.sourceforge.net/ftgl/$pkgname-2.1.3-rc5.tar.bz2)
+md5sums=('c7879018cde844059495b3029b0b6503')
+
+build() {
+ cd $srcdir/ftgl-2.1.3~rc5
+ ./configure --prefix=/usr --with-pic || return 1
+ make || return 1
+}
+package() {
+ cd $srcdir/ftgl-2.1.3~rc5
+ make DESTDIR=$pkgdir install || return 1
+ install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/LICENSE || return 1
+}
diff --git a/abs/not_built/core/fxload/PKGBUILD b/abs/not_built/core/fxload/PKGBUILD
new file mode 100644
index 0000000..e128688
--- /dev/null
+++ b/abs/not_built/core/fxload/PKGBUILD
@@ -0,0 +1,22 @@
+# Contributor: Jochen Immendörfer <jochen dot immendoerfer at gmail dot com>
+pkgname=fxload
+pkgver=2008_10_13
+pkgrel=1
+pkgdesc="fxload firmware loader. Used with udev or devfs/hotplug."
+url="http://linux-hotplug.sourceforge.net/"
+depends=('glibc')
+makedepends=('sed')
+source=(http://downloads.sourceforge.net/sourceforge/linux-hotplug/$pkgname-$pkgver.tar.gz)
+md5sums=('4477a2457f064228bef4a93ba2f21692')
+arch=('i686')
+license=('GPL')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make || return 1
+ sed -i 's|/usr/bin/install|/bin/install|' Makefile
+}
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make exec_prefix=${pkgdir} prefix=${pkgdir} install || return 1
+}
diff --git a/abs/not_built/core/gen-init-cpio/Makefile b/abs/not_built/core/gen-init-cpio/Makefile
new file mode 100644
index 0000000..1ebe763
--- /dev/null
+++ b/abs/not_built/core/gen-init-cpio/Makefile
@@ -0,0 +1,42 @@
+
+DESTDIR =
+PREFIX = /
+
+MKDIR = /bin/mkdir
+INSTALL = /bin/install -c -m 755
+
+CC = /usr/bin/gcc
+LD = /usr/bin/gcc
+
+CFLAGS += -Wall -Wstrict-prototypes -Wsign-compare -Wchar-subscripts \
+ -Wpointer-arith -Wcast-align -Wsign-compare
+
+#pretty print!
+E = @echo
+Q = @
+
+all: gen_init_cpio
+.PHONY: all
+.DEFAULT: all
+
+%.o: %.c
+ $(E) " compile " $@
+ $(Q) $(CC) -c $(CFLAGS) $< -o $@
+
+gen_init_cpio: gen_init_cpio.o
+ $(E) ">>build " $@
+ $(Q) $(LD) $(LDFLAGS) $@.o -o $@ $(LIB_OBJS)
+
+clean:
+ $(E) " clean "
+ $(Q) rm -f gen_init_cpio *.o
+.PHONY: clean
+
+install: all
+ $(MKDIR) -p $(DESTDIR)$(PREFIX)sbin/
+ $(INSTALL) gen_init_cpio $(DESTDIR)$(PREFIX)sbin/
+.PHONY: install
+
+uninstall:
+ rm $(DESTDIR)$(PREFIX)sbin/gen_init_cpio
+.PHONY: uninstall
diff --git a/abs/not_built/core/gen-init-cpio/PKGBUILD b/abs/not_built/core/gen-init-cpio/PKGBUILD
new file mode 100644
index 0000000..cad7221
--- /dev/null
+++ b/abs/not_built/core/gen-init-cpio/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 60483 2009-12-05 10:21:23Z tpowa $
+# Maintainer : Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=gen-init-cpio
+pkgver=2.6.32
+pkgrel=1
+pkgdesc="Program to compress initramfs images"
+arch=('i686' 'x86_64')
+license=('custom:none')
+groups=('base')
+url="http://www.kernel.org/"
+depends=('glibc')
+source=(Makefile gen_init_cpio.c)
+md5sums=('8e3a142a522d65121c3bead41013be98'
+ '1e930eb3d6255aca3b91a73e31bf9da6')
+
+build()
+{
+ cd $srcdir/
+ make || return 1
+}
+
+package() {
+ cd $srcdir/
+ make DESTDIR=$pkgdir install
+}
diff --git a/abs/not_built/core/gen-init-cpio/gen_init_cpio.c b/abs/not_built/core/gen-init-cpio/gen_init_cpio.c
new file mode 100644
index 0000000..83b3dde
--- /dev/null
+++ b/abs/not_built/core/gen-init-cpio/gen_init_cpio.c
@@ -0,0 +1,592 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <ctype.h>
+#include <limits.h>
+
+/*
+ * Original work by Jeff Garzik
+ *
+ * External file lists, symlink, pipe and fifo support by Thayne Harbaugh
+ * Hard link support by Luciano Rocha
+ */
+
+#define xstr(s) #s
+#define str(s) xstr(s)
+
+static unsigned int offset;
+static unsigned int ino = 721;
+
+struct file_handler {
+ const char *type;
+ int (*handler)(const char *line);
+};
+
+static void push_string(const char *name)
+{
+ unsigned int name_len = strlen(name) + 1;
+
+ fputs(name, stdout);
+ putchar(0);
+ offset += name_len;
+}
+
+static void push_pad (void)
+{
+ while (offset & 3) {
+ putchar(0);
+ offset++;
+ }
+}
+
+static void push_rest(const char *name)
+{
+ unsigned int name_len = strlen(name) + 1;
+ unsigned int tmp_ofs;
+
+ fputs(name, stdout);
+ putchar(0);
+ offset += name_len;
+
+ tmp_ofs = name_len + 110;
+ while (tmp_ofs & 3) {
+ putchar(0);
+ offset++;
+ tmp_ofs++;
+ }
+}
+
+static void push_hdr(const char *s)
+{
+ fputs(s, stdout);
+ offset += 110;
+}
+
+static void cpio_trailer(void)
+{
+ char s[256];
+ const char name[] = "TRAILER!!!";
+
+ sprintf(s, "%s%08X%08X%08lX%08lX%08X%08lX"
+ "%08X%08X%08X%08X%08X%08X%08X",
+ "070701", /* magic */
+ 0, /* ino */
+ 0, /* mode */
+ (long) 0, /* uid */
+ (long) 0, /* gid */
+ 1, /* nlink */
+ (long) 0, /* mtime */
+ 0, /* filesize */
+ 0, /* major */
+ 0, /* minor */
+ 0, /* rmajor */
+ 0, /* rminor */
+ (unsigned)strlen(name)+1, /* namesize */
+ 0); /* chksum */
+ push_hdr(s);
+ push_rest(name);
+
+ while (offset % 512) {
+ putchar(0);
+ offset++;
+ }
+}
+
+static int cpio_mkslink(const char *name, const char *target,
+ unsigned int mode, uid_t uid, gid_t gid)
+{
+ char s[256];
+ time_t mtime = time(NULL);
+
+ sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+ "%08X%08X%08X%08X%08X%08X%08X",
+ "070701", /* magic */
+ ino++, /* ino */
+ S_IFLNK | mode, /* mode */
+ (long) uid, /* uid */
+ (long) gid, /* gid */
+ 1, /* nlink */
+ (long) mtime, /* mtime */
+ (unsigned)strlen(target)+1, /* filesize */
+ 3, /* major */
+ 1, /* minor */
+ 0, /* rmajor */
+ 0, /* rminor */
+ (unsigned)strlen(name) + 1,/* namesize */
+ 0); /* chksum */
+ push_hdr(s);
+ push_string(name);
+ push_pad();
+ push_string(target);
+ push_pad();
+ return 0;
+}
+
+static int cpio_mkslink_line(const char *line)
+{
+ char name[PATH_MAX + 1];
+ char target[PATH_MAX + 1];
+ unsigned int mode;
+ int uid;
+ int gid;
+ int rc = -1;
+
+ if (5 != sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX) "s %o %d %d", name, target, &mode, &uid, &gid)) {
+ fprintf(stderr, "Unrecognized dir format '%s'", line);
+ goto fail;
+ }
+ rc = cpio_mkslink(name, target, mode, uid, gid);
+ fail:
+ return rc;
+}
+
+static int cpio_mkgeneric(const char *name, unsigned int mode,
+ uid_t uid, gid_t gid)
+{
+ char s[256];
+ time_t mtime = time(NULL);
+
+ sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+ "%08X%08X%08X%08X%08X%08X%08X",
+ "070701", /* magic */
+ ino++, /* ino */
+ mode, /* mode */
+ (long) uid, /* uid */
+ (long) gid, /* gid */
+ 2, /* nlink */
+ (long) mtime, /* mtime */
+ 0, /* filesize */
+ 3, /* major */
+ 1, /* minor */
+ 0, /* rmajor */
+ 0, /* rminor */
+ (unsigned)strlen(name) + 1,/* namesize */
+ 0); /* chksum */
+ push_hdr(s);
+ push_rest(name);
+ return 0;
+}
+
+enum generic_types {
+ GT_DIR,
+ GT_PIPE,
+ GT_SOCK
+};
+
+struct generic_type {
+ const char *type;
+ mode_t mode;
+};
+
+static struct generic_type generic_type_table[] = {
+ [GT_DIR] = {
+ .type = "dir",
+ .mode = S_IFDIR
+ },
+ [GT_PIPE] = {
+ .type = "pipe",
+ .mode = S_IFIFO
+ },
+ [GT_SOCK] = {
+ .type = "sock",
+ .mode = S_IFSOCK
+ }
+};
+
+static int cpio_mkgeneric_line(const char *line, enum generic_types gt)
+{
+ char name[PATH_MAX + 1];
+ unsigned int mode;
+ int uid;
+ int gid;
+ int rc = -1;
+
+ if (4 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d", name, &mode, &uid, &gid)) {
+ fprintf(stderr, "Unrecognized %s format '%s'",
+ line, generic_type_table[gt].type);
+ goto fail;
+ }
+ mode |= generic_type_table[gt].mode;
+ rc = cpio_mkgeneric(name, mode, uid, gid);
+ fail:
+ return rc;
+}
+
+static int cpio_mkdir_line(const char *line)
+{
+ return cpio_mkgeneric_line(line, GT_DIR);
+}
+
+static int cpio_mkpipe_line(const char *line)
+{
+ return cpio_mkgeneric_line(line, GT_PIPE);
+}
+
+static int cpio_mksock_line(const char *line)
+{
+ return cpio_mkgeneric_line(line, GT_SOCK);
+}
+
+static int cpio_mknod(const char *name, unsigned int mode,
+ uid_t uid, gid_t gid, char dev_type,
+ unsigned int maj, unsigned int min)
+{
+ char s[256];
+ time_t mtime = time(NULL);
+
+ if (dev_type == 'b')
+ mode |= S_IFBLK;
+ else
+ mode |= S_IFCHR;
+
+ sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+ "%08X%08X%08X%08X%08X%08X%08X",
+ "070701", /* magic */
+ ino++, /* ino */
+ mode, /* mode */
+ (long) uid, /* uid */
+ (long) gid, /* gid */
+ 1, /* nlink */
+ (long) mtime, /* mtime */
+ 0, /* filesize */
+ 3, /* major */
+ 1, /* minor */
+ maj, /* rmajor */
+ min, /* rminor */
+ (unsigned)strlen(name) + 1,/* namesize */
+ 0); /* chksum */
+ push_hdr(s);
+ push_rest(name);
+ return 0;
+}
+
+static int cpio_mknod_line(const char *line)
+{
+ char name[PATH_MAX + 1];
+ unsigned int mode;
+ int uid;
+ int gid;
+ char dev_type;
+ unsigned int maj;
+ unsigned int min;
+ int rc = -1;
+
+ if (7 != sscanf(line, "%" str(PATH_MAX) "s %o %d %d %c %u %u",
+ name, &mode, &uid, &gid, &dev_type, &maj, &min)) {
+ fprintf(stderr, "Unrecognized nod format '%s'", line);
+ goto fail;
+ }
+ rc = cpio_mknod(name, mode, uid, gid, dev_type, maj, min);
+ fail:
+ return rc;
+}
+
+static int cpio_mkfile(const char *name, const char *location,
+ unsigned int mode, uid_t uid, gid_t gid,
+ unsigned int nlinks)
+{
+ char s[256];
+ char *filebuf = NULL;
+ struct stat buf;
+ long size;
+ int file = -1;
+ int retval;
+ int rc = -1;
+ int namesize;
+ int i;
+
+ mode |= S_IFREG;
+
+ retval = stat (location, &buf);
+ if (retval) {
+ fprintf (stderr, "File %s could not be located\n", location);
+ goto error;
+ }
+
+ file = open (location, O_RDONLY);
+ if (file < 0) {
+ fprintf (stderr, "File %s could not be opened for reading\n", location);
+ goto error;
+ }
+
+ filebuf = malloc(buf.st_size);
+ if (!filebuf) {
+ fprintf (stderr, "out of memory\n");
+ goto error;
+ }
+
+ retval = read (file, filebuf, buf.st_size);
+ if (retval < 0) {
+ fprintf (stderr, "Can not read %s file\n", location);
+ goto error;
+ }
+
+ size = 0;
+ for (i = 1; i <= nlinks; i++) {
+ /* data goes on last link */
+ if (i == nlinks) size = buf.st_size;
+
+ namesize = strlen(name) + 1;
+ sprintf(s,"%s%08X%08X%08lX%08lX%08X%08lX"
+ "%08lX%08X%08X%08X%08X%08X%08X",
+ "070701", /* magic */
+ ino, /* ino */
+ mode, /* mode */
+ (long) uid, /* uid */
+ (long) gid, /* gid */
+ nlinks, /* nlink */
+ (long) buf.st_mtime, /* mtime */
+ size, /* filesize */
+ 3, /* major */
+ 1, /* minor */
+ 0, /* rmajor */
+ 0, /* rminor */
+ namesize, /* namesize */
+ 0); /* chksum */
+ push_hdr(s);
+ push_string(name);
+ push_pad();
+
+ if (size) {
+ fwrite(filebuf, size, 1, stdout);
+ offset += size;
+ push_pad();
+ }
+
+ name += namesize;
+ }
+ ino++;
+ rc = 0;
+
+error:
+ if (filebuf) free(filebuf);
+ if (file >= 0) close(file);
+ return rc;
+}
+
+static char *cpio_replace_env(char *new_location)
+{
+ char expanded[PATH_MAX + 1];
+ char env_var[PATH_MAX + 1];
+ char *start;
+ char *end;
+
+ for (start = NULL; (start = strstr(new_location, "${")); ) {
+ end = strchr(start, '}');
+ if (start < end) {
+ *env_var = *expanded = '\0';
+ strncat(env_var, start + 2, end - start - 2);
+ strncat(expanded, new_location, start - new_location);
+ strncat(expanded, getenv(env_var), PATH_MAX);
+ strncat(expanded, end + 1, PATH_MAX);
+ strncpy(new_location, expanded, PATH_MAX);
+ } else
+ break;
+ }
+
+ return new_location;
+}
+
+
+static int cpio_mkfile_line(const char *line)
+{
+ char name[PATH_MAX + 1];
+ char *dname = NULL; /* malloc'ed buffer for hard links */
+ char location[PATH_MAX + 1];
+ unsigned int mode;
+ int uid;
+ int gid;
+ int nlinks = 1;
+ int end = 0, dname_len = 0;
+ int rc = -1;
+
+ if (5 > sscanf(line, "%" str(PATH_MAX) "s %" str(PATH_MAX)
+ "s %o %d %d %n",
+ name, location, &mode, &uid, &gid, &end)) {
+ fprintf(stderr, "Unrecognized file format '%s'", line);
+ goto fail;
+ }
+ if (end && isgraph(line[end])) {
+ int len;
+ int nend;
+
+ dname = malloc(strlen(line));
+ if (!dname) {
+ fprintf (stderr, "out of memory (%d)\n", dname_len);
+ goto fail;
+ }
+
+ dname_len = strlen(name) + 1;
+ memcpy(dname, name, dname_len);
+
+ do {
+ nend = 0;
+ if (sscanf(line + end, "%" str(PATH_MAX) "s %n",
+ name, &nend) < 1)
+ break;
+ len = strlen(name) + 1;
+ memcpy(dname + dname_len, name, len);
+ dname_len += len;
+ nlinks++;
+ end += nend;
+ } while (isgraph(line[end]));
+ } else {
+ dname = name;
+ }
+ rc = cpio_mkfile(dname, cpio_replace_env(location),
+ mode, uid, gid, nlinks);
+ fail:
+ if (dname_len) free(dname);
+ return rc;
+}
+
+static void usage(const char *prog)
+{
+ fprintf(stderr, "Usage:\n"
+ "\t%s <cpio_list>\n"
+ "\n"
+ "<cpio_list> is a file containing newline separated entries that\n"
+ "describe the files to be included in the initramfs archive:\n"
+ "\n"
+ "# a comment\n"
+ "file <name> <location> <mode> <uid> <gid> [<hard links>]\n"
+ "dir <name> <mode> <uid> <gid>\n"
+ "nod <name> <mode> <uid> <gid> <dev_type> <maj> <min>\n"
+ "slink <name> <target> <mode> <uid> <gid>\n"
+ "pipe <name> <mode> <uid> <gid>\n"
+ "sock <name> <mode> <uid> <gid>\n"
+ "\n"
+ "<name> name of the file/dir/nod/etc in the archive\n"
+ "<location> location of the file in the current filesystem\n"
+ " expands shell variables quoted with ${}\n"
+ "<target> link target\n"
+ "<mode> mode/permissions of the file\n"
+ "<uid> user id (0=root)\n"
+ "<gid> group id (0=root)\n"
+ "<dev_type> device type (b=block, c=character)\n"
+ "<maj> major number of nod\n"
+ "<min> minor number of nod\n"
+ "<hard links> space separated list of other links to file\n"
+ "\n"
+ "example:\n"
+ "# A simple initramfs\n"
+ "dir /dev 0755 0 0\n"
+ "nod /dev/console 0600 0 0 c 5 1\n"
+ "dir /root 0700 0 0\n"
+ "dir /sbin 0755 0 0\n"
+ "file /sbin/kinit /usr/src/klibc/kinit/kinit 0755 0 0\n",
+ prog);
+}
+
+struct file_handler file_handler_table[] = {
+ {
+ .type = "file",
+ .handler = cpio_mkfile_line,
+ }, {
+ .type = "nod",
+ .handler = cpio_mknod_line,
+ }, {
+ .type = "dir",
+ .handler = cpio_mkdir_line,
+ }, {
+ .type = "slink",
+ .handler = cpio_mkslink_line,
+ }, {
+ .type = "pipe",
+ .handler = cpio_mkpipe_line,
+ }, {
+ .type = "sock",
+ .handler = cpio_mksock_line,
+ }, {
+ .type = NULL,
+ .handler = NULL,
+ }
+};
+
+#define LINE_SIZE (2 * PATH_MAX + 50)
+
+int main (int argc, char *argv[])
+{
+ FILE *cpio_list;
+ char line[LINE_SIZE];
+ char *args, *type;
+ int ec = 0;
+ int line_nr = 0;
+
+ if (2 != argc) {
+ usage(argv[0]);
+ exit(1);
+ }
+
+ if (!strcmp(argv[1], "-"))
+ cpio_list = stdin;
+ else if (! (cpio_list = fopen(argv[1], "r"))) {
+ fprintf(stderr, "ERROR: unable to open '%s': %s\n\n",
+ argv[1], strerror(errno));
+ usage(argv[0]);
+ exit(1);
+ }
+
+ while (fgets(line, LINE_SIZE, cpio_list)) {
+ int type_idx;
+ size_t slen = strlen(line);
+
+ line_nr++;
+
+ if ('#' == *line) {
+ /* comment - skip to next line */
+ continue;
+ }
+
+ if (! (type = strtok(line, " \t"))) {
+ fprintf(stderr,
+ "ERROR: incorrect format, could not locate file type line %d: '%s'\n",
+ line_nr, line);
+ ec = -1;
+ break;
+ }
+
+ if ('\n' == *type) {
+ /* a blank line */
+ continue;
+ }
+
+ if (slen == strlen(type)) {
+ /* must be an empty line */
+ continue;
+ }
+
+ if (! (args = strtok(NULL, "\n"))) {
+ fprintf(stderr,
+ "ERROR: incorrect format, newline required line %d: '%s'\n",
+ line_nr, line);
+ ec = -1;
+ }
+
+ for (type_idx = 0; file_handler_table[type_idx].type; type_idx++) {
+ int rc;
+ if (! strcmp(line, file_handler_table[type_idx].type)) {
+ if ((rc = file_handler_table[type_idx].handler(args))) {
+ ec = rc;
+ fprintf(stderr, " line %d\n", line_nr);
+ }
+ break;
+ }
+ }
+
+ if (NULL == file_handler_table[type_idx].type) {
+ fprintf(stderr, "unknown file type line %d: '%s'\n",
+ line_nr, line);
+ }
+ }
+ if (ec == 0)
+ cpio_trailer();
+
+ exit(ec);
+}
diff --git a/abs/not_built/core/giblib/PKGBUILD b/abs/not_built/core/giblib/PKGBUILD
new file mode 100644
index 0000000..0771c30
--- /dev/null
+++ b/abs/not_built/core/giblib/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 68040 2010-02-10 15:13:54Z giovanni $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+
+pkgname=giblib
+pkgver=1.2.4
+pkgrel=4
+pkgdesc="A library that feh uses as a wrapper to imlib2"
+arch=('i686' 'x86_64')
+url="http://freshmeat.net/projects/giblib/"
+license=('MIT')
+depends=('imlib2' 'libxext' 'freetype2')
+options=('!libtool')
+source=(ftp://ftp.archlinux.org/other/giblib/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('ff61760ef73421c5f02d2f6c8d3ac913')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" docsdir=/usr/share/doc/giblib install || return 1
+
+ # Install custom license
+ install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" || return 1
+}
diff --git a/abs/not_built/core/glibc/PKGBUILD b/abs/not_built/core/glibc/PKGBUILD
new file mode 100644
index 0000000..93a0751
--- /dev/null
+++ b/abs/not_built/core/glibc/PKGBUILD
@@ -0,0 +1,153 @@
+# $Id: PKGBUILD 163512 2012-07-14 13:07:15Z allan $
+# Maintainer: Allan McRae <allan@archlinux.org>
+
+# toolchain build order: linux-api-headers->glibc->binutils->gcc->binutils->glibc
+# NOTE: valgrind requires rebuilt with each major glibc version
+
+pkgname=glibc
+pkgver=2.16.0
+pkgrel=2
+pkgdesc="GNU C Library"
+arch=('i686' 'x86_64')
+url="http://www.gnu.org/software/libc"
+license=('GPL' 'LGPL')
+groups=('base')
+depends=('linux-api-headers>=3.4' 'tzdata')
+makedepends=('gcc>=4.7')
+backup=(etc/gai.conf
+ etc/locale.gen
+ etc/nscd.conf)
+options=('!strip')
+install=glibc.install
+source=(http://ftp.gnu.org/gnu/libc/${pkgname}-${pkgver}.tar.xz{,.sig}
+ glibc-2.15-fix-res_query-assert.patch
+ glibc-2.15-revert-c5a0802a.patch
+ nscd.rcd
+ nscd.service
+ nscd.tmpfiles
+ locale.gen.txt
+ locale-gen)
+md5sums=('80b181b02ab249524ec92822c0174cf7'
+ '2a1221a15575820751c325ef4d2fbb90'
+ '31f415b41197d85d3bbee3d1eecd06a3'
+ '0a0383d50d63f1c02919fe9943b82014'
+ '589d79041aa767a5179eaa4e2737dd3f'
+ 'ad8a9af15ab7eeaa23dc7ee85024af9f'
+ 'bccbe5619e75cf1d97312ec3681c605c'
+ '07ac979b6ab5eeb778d55f041529d623'
+ '476e9113489f93b348b21e144b6a8fcf')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ # fix res_query assertion
+ # http://sourceware.org/bugzilla/show_bug.cgi?id=13013
+ patch -p1 -i ${srcdir}/glibc-2.15-fix-res_query-assert.patch
+
+ # revert commit c5a0802a - causes various hangs
+ # https://bugzilla.redhat.com/show_bug.cgi?id=552960
+ patch -p1 -i ${srcdir}/glibc-2.15-revert-c5a0802a.patch
+
+ cd ${srcdir}
+ mkdir glibc-build
+ cd glibc-build
+
+ if [[ ${CARCH} = "i686" ]]; then
+ # Hack to fix NPTL issues with Xen, only required on 32bit platforms
+ # TODO: make separate glibc-xen package for i686
+ export CFLAGS="${CFLAGS} -mno-tls-direct-seg-refs"
+ fi
+
+ echo "slibdir=/lib" >> configparms
+
+ # remove hardening options from CFLAGS for building libraries
+ CFLAGS=${CFLAGS/-fstack-protector/}
+ CFLAGS=${CFLAGS/-D_FORTIFY_SOURCE=2/}
+
+ ${srcdir}/${pkgname}-${pkgver}/configure --prefix=/usr \
+ --libdir=/usr/lib --libexecdir=/usr/lib \
+ --with-headers=/usr/include \
+ --enable-add-ons=nptl,libidn \
+ --enable-obsolete-rpc \
+ --enable-kernel=2.6.32 \
+ --enable-bind-now --disable-profile \
+ --enable-stackguard-randomization \
+ --enable-multi-arch
+
+ # build libraries with hardening disabled
+ echo "build-programs=no" >> configparms
+ make
+
+ # re-enable hardening for programs
+ sed -i "/build-programs=/s#no#yes#" configparms
+ echo "CC += -fstack-protector -D_FORTIFY_SOURCE=2" >> configparms
+ echo "CXX += -fstack-protector -D_FORTIFY_SOURCE=2" >> configparms
+ make
+
+ # remove harding in preparation to run test-suite
+ sed -i '2,4d' configparms
+}
+
+check() {
+ cd ${srcdir}/glibc-build
+ make -k check
+}
+
+package() {
+ cd ${srcdir}/glibc-build
+
+ ln -s usr/lib ${pkgdir}/lib
+
+ install -dm755 ${pkgdir}/etc
+ touch ${pkgdir}/etc/ld.so.conf
+
+ make install_root=${pkgdir} install
+
+ rm -f ${pkgdir}/etc/ld.so.{cache,conf}
+
+ install -dm755 ${pkgdir}/{etc/rc.d,usr/{sbin,lib/{,locale,systemd/system,tmpfiles.d}}}
+
+ install -m644 ${srcdir}/${pkgname}-${pkgver}/nscd/nscd.conf ${pkgdir}/etc/nscd.conf
+ sed -i -e 's/^\tserver-user/#\tserver-user/' ${pkgdir}/etc/nscd.conf
+ install -m755 ${srcdir}/nscd.rcd ${pkgdir}/etc/rc.d/nscd
+ install -m644 ${srcdir}/nscd.service ${pkgdir}/usr/lib/systemd/system
+ install -m644 ${srcdir}/nscd.tmpfiles ${pkgdir}/usr/lib/tmpfiles.d/nscd.conf
+
+ install -m644 ${srcdir}/${pkgname}-${pkgver}/posix/gai.conf ${pkgdir}/etc/gai.conf
+
+ install -m755 ${srcdir}/locale-gen ${pkgdir}/usr/sbin
+
+ # create /etc/locale.gen
+ install -m644 ${srcdir}/locale.gen.txt ${pkgdir}/etc/locale.gen
+ sed -e '1,3d' -e 's|/| |g' -e 's|\\| |g' -e 's|^|#|g' \
+ ${srcdir}/glibc-2.16.0/localedata/SUPPORTED >> ${pkgdir}/etc/locale.gen
+
+ if [[ ${CARCH} = "x86_64" ]]; then
+ # fix paths and compliance with binary blobs...
+ sed -i '/RTLDLIST/s%lib64%lib%' ${pkgdir}/usr/bin/ldd
+ ln -s usr/lib ${pkgdir}/lib64
+ fi
+
+ # Do not strip the following files for improved debugging support
+ # ("improved" as in not breaking gdb and valgrind...):
+ # ld-${pkgver}.so
+ # libc-${pkgver}.so
+ # libpthread-${pkgver}.so
+ # libthread_db-1.0.so
+
+ cd $pkgdir
+ strip $STRIP_BINARIES sbin/{ldconfig,sln} \
+ usr/bin/{gencat,getconf,getent,iconv,locale,localedef} \
+ usr/bin/{makedb,pcprofiledump,pldd,rpcgen,sprof} \
+ usr/lib/getconf/* \
+ usr/sbin/{iconvconfig,nscd}
+ [[ $CARCH = "i686" ]] && strip $STRIP_BINARIES usr/bin/lddlibc4
+
+ strip $STRIP_STATIC usr/lib/*.a
+
+ strip $STRIP_SHARED usr/lib/{libanl,libBrokenLocale,libcidn,libcrypt}-*.so \
+ usr/lib/libnss_{compat,db,dns,files,hesiod,nis,nisplus}-*.so \
+ usr/lib/{libdl,libm,libnsl,libresolv,librt,libutil}-*.so \
+ usr/lib/{libmemusage,libpcprofile,libSegFault}.so \
+ usr/lib/{pt_chown,{audit,gconv}/*.so}
+}
diff --git a/abs/not_built/core/glibc/glibc-2.15-fix-res_query-assert.patch b/abs/not_built/core/glibc/glibc-2.15-fix-res_query-assert.patch
new file mode 100644
index 0000000..a894da9
--- /dev/null
+++ b/abs/not_built/core/glibc/glibc-2.15-fix-res_query-assert.patch
@@ -0,0 +1,51 @@
+--- a/resolv/res_query.c
++++ a/resolv/res_query.c
+@@ -122,6 +122,7 @@ __libc_res_nquery(res_state statp,
+ int *resplen2)
+ {
+ HEADER *hp = (HEADER *) answer;
++ HEADER *hp2;
+ int n, use_malloc = 0;
+ u_int oflags = statp->_flags;
+
+@@ -239,26 +240,25 @@ __libc_res_nquery(res_state statp,
+ /* __libc_res_nsend might have reallocated the buffer. */
+ hp = (HEADER *) *answerp;
+
+- /* We simplify the following tests by assigning HP to HP2. It
+- is easy to verify that this is the same as ignoring all
+- tests of HP2. */
+- HEADER *hp2 = answerp2 ? (HEADER *) *answerp2 : hp;
+-
+- if (n < (int) sizeof (HEADER) && answerp2 != NULL
+- && *resplen2 > (int) sizeof (HEADER))
++ /* We simplify the following tests by assigning HP to HP2 or
++ vice versa. It is easy to verify that this is the same as
++ ignoring all tests of HP or HP2. */
++ if (answerp2 == NULL || *resplen2 < (int) sizeof (HEADER))
+ {
+- /* Special case of partial answer. */
+- assert (hp != hp2);
+- hp = hp2;
++ hp2 = hp;
+ }
+- else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER)
+- && n > (int) sizeof (HEADER))
++ else
+ {
+- /* Special case of partial answer. */
+- assert (hp != hp2);
+- hp2 = hp;
++ hp2 = (HEADER *) *answerp2;
++ if (n < (int) sizeof (HEADER))
++ {
++ hp = hp2;
++ }
+ }
+
++ /* Make sure both hp and hp2 are defined */
++ assert((hp != NULL) && (hp2 != NULL));
++
+ if ((hp->rcode != NOERROR || ntohs(hp->ancount) == 0)
+ && (hp2->rcode != NOERROR || ntohs(hp2->ancount) == 0)) {
+ #ifdef DEBUG
diff --git a/abs/not_built/core/glibc/glibc-2.15-revert-c5a0802a.patch b/abs/not_built/core/glibc/glibc-2.15-revert-c5a0802a.patch
new file mode 100644
index 0000000..d889472
--- /dev/null
+++ b/abs/not_built/core/glibc/glibc-2.15-revert-c5a0802a.patch
@@ -0,0 +1,226 @@
+diff -rup a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:12.937212834 +0000
++++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S 2011-12-22 18:04:42.104222278 +0000
+@@ -137,7 +137,6 @@ __pthread_cond_wait:
+ cmpl $PI_BIT, %eax
+ jne 18f
+
+-90:
+ movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %ecx
+ movl %ebp, %edx
+ xorl %esi, %esi
+@@ -151,9 +150,6 @@ __pthread_cond_wait:
+ sete 16(%esp)
+ je 19f
+
+- cmpl $-EAGAIN, %eax
+- je 91f
+-
+ /* Normal and PI futexes dont mix. Use normal futex functions only
+ if the kernel does not support the PI futex functions. */
+ cmpl $-ENOSYS, %eax
+@@ -398,78 +394,6 @@ __pthread_cond_wait:
+ #endif
+ call __lll_unlock_wake
+ jmp 11b
+-
+-91:
+-.LcleanupSTART2:
+- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to
+- call it again. */
+-
+- /* Get internal lock. */
+- movl $1, %edx
+- xorl %eax, %eax
+- LOCK
+-#if cond_lock == 0
+- cmpxchgl %edx, (%ebx)
+-#else
+- cmpxchgl %edx, cond_lock(%ebx)
+-#endif
+- jz 92f
+-
+-#if cond_lock == 0
+- movl %ebx, %edx
+-#else
+- leal cond_lock(%ebx), %edx
+-#endif
+-#if (LLL_SHARED-LLL_PRIVATE) > 255
+- xorl %ecx, %ecx
+-#endif
+- cmpl $-1, dep_mutex(%ebx)
+- setne %cl
+- subl $1, %ecx
+- andl $(LLL_SHARED-LLL_PRIVATE), %ecx
+-#if LLL_PRIVATE != 0
+- addl $LLL_PRIVATE, %ecx
+-#endif
+- call __lll_lock_wait
+-
+-92:
+- /* Increment the cond_futex value again, so it can be used as a new
+- expected value. */
+- addl $1, cond_futex(%ebx)
+- movl cond_futex(%ebx), %ebp
+-
+- /* Unlock. */
+- LOCK
+-#if cond_lock == 0
+- subl $1, (%ebx)
+-#else
+- subl $1, cond_lock(%ebx)
+-#endif
+- je 93f
+-#if cond_lock == 0
+- movl %ebx, %eax
+-#else
+- leal cond_lock(%ebx), %eax
+-#endif
+-#if (LLL_SHARED-LLL_PRIVATE) > 255
+- xorl %ecx, %ecx
+-#endif
+- cmpl $-1, dep_mutex(%ebx)
+- setne %cl
+- subl $1, %ecx
+- andl $(LLL_SHARED-LLL_PRIVATE), %ecx
+-#if LLL_PRIVATE != 0
+- addl $LLL_PRIVATE, %ecx
+-#endif
+- call __lll_unlock_wake
+-
+-93:
+- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */
+- xorl %ecx, %ecx
+- movl dep_mutex(%ebx), %edi
+- jmp 90b
+-.LcleanupEND2:
+-
+ .size __pthread_cond_wait, .-__pthread_cond_wait
+ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
+ GLIBC_2_3_2)
+@@ -642,10 +566,6 @@ __condvar_w_cleanup:
+ .long .LcleanupEND-.Lsub_cond_futex
+ .long __condvar_w_cleanup-.LSTARTCODE
+ .uleb128 0
+- .long .LcleanupSTART2-.LSTARTCODE
+- .long .LcleanupEND2-.LcleanupSTART2
+- .long __condvar_w_cleanup-.LSTARTCODE
+- .uleb128 0
+ .long .LcallUR-.LSTARTCODE
+ .long .LENDCODE-.LcallUR
+ .long 0
+Only in b/nptl/sysdeps/unix/sysv/linux/i386/i486: pthread_cond_wait.S.orig
+diff -rup a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
+--- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:04:12.941212837 +0000
++++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S 2011-12-22 18:05:05.155229737 +0000
+@@ -23,7 +23,6 @@
+ #include <lowlevelcond.h>
+ #include <tcb-offsets.h>
+ #include <pthread-pi-defines.h>
+-#include <pthread-errnos.h>
+ #include <stap-probe.h>
+
+ #include <kernel-features.h>
+@@ -137,14 +136,11 @@ __pthread_cond_wait:
+ cmpl $PI_BIT, %eax
+ jne 61f
+
+-90:
+ movl $(FUTEX_WAIT_REQUEUE_PI|FUTEX_PRIVATE_FLAG), %esi
+ movl $SYS_futex, %eax
+ syscall
+
+ movl $1, %r8d
+- cmpq $-EAGAIN, %rax
+- je 91f
+ #ifdef __ASSUME_REQUEUE_PI
+ jmp 62f
+ #else
+@@ -331,70 +327,6 @@ __pthread_cond_wait:
+
+ 13: movq %r10, %rax
+ jmp 14b
+-
+-91:
+-.LcleanupSTART2:
+- /* FUTEX_WAIT_REQUEUE_PI returned EAGAIN. We need to
+- call it again. */
+- movq 8(%rsp), %rdi
+-
+- /* Get internal lock. */
+- movl $1, %esi
+- xorl %eax, %eax
+- LOCK
+-#if cond_lock == 0
+- cmpxchgl %esi, (%rdi)
+-#else
+- cmpxchgl %esi, cond_lock(%rdi)
+-#endif
+- jz 92f
+-
+-#if cond_lock != 0
+- addq $cond_lock, %rdi
+-#endif
+- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi)
+- movl $LLL_PRIVATE, %eax
+- movl $LLL_SHARED, %esi
+- cmovne %eax, %esi
+- callq __lll_lock_wait
+-#if cond_lock != 0
+- subq $cond_lock, %rdi
+-#endif
+-92:
+- /* Increment the cond_futex value again, so it can be used as a new
+- expected value. */
+- incl cond_futex(%rdi)
+- movl cond_futex(%rdi), %edx
+-
+- /* Release internal lock. */
+- LOCK
+-#if cond_lock == 0
+- decl (%rdi)
+-#else
+- decl cond_lock(%rdi)
+-#endif
+- jz 93f
+-
+-#if cond_lock != 0
+- addq $cond_lock, %rdi
+-#endif
+- LP_OP(cmp) $-1, dep_mutex-cond_lock(%rdi)
+- movl $LLL_PRIVATE, %eax
+- movl $LLL_SHARED, %esi
+- cmovne %eax, %esi
+- /* The call preserves %rdx. */
+- callq __lll_unlock_wake
+-#if cond_lock != 0
+- subq $cond_lock, %rdi
+-#endif
+-93:
+- /* Set the rest of SYS_futex args for FUTEX_WAIT_REQUEUE_PI. */
+- xorq %r10, %r10
+- mov dep_mutex(%rdi), %R8_LP
+- leaq cond_futex(%rdi), %rdi
+- jmp 90b
+-.LcleanupEND2:
+-
+ .size __pthread_cond_wait, .-__pthread_cond_wait
+ versioned_symbol (libpthread, __pthread_cond_wait, pthread_cond_wait,
+ GLIBC_2_3_2)
+@@ -547,15 +479,11 @@ __condvar_cleanup1:
+ .uleb128 .LcleanupSTART-.LSTARTCODE
+ .uleb128 .LcleanupEND-.LcleanupSTART
+ .uleb128 __condvar_cleanup1-.LSTARTCODE
+- .uleb128 0
+- .uleb128 .LcleanupSTART2-.LSTARTCODE
+- .uleb128 .LcleanupEND2-.LcleanupSTART2
+- .uleb128 __condvar_cleanup1-.LSTARTCODE
+- .uleb128 0
++ .uleb128 0
+ .uleb128 .LcallUR-.LSTARTCODE
+ .uleb128 .LENDCODE-.LcallUR
+ .uleb128 0
+- .uleb128 0
++ .uleb128 0
+ .Lcstend:
+
diff --git a/abs/not_built/core/glibc/glibc.install b/abs/not_built/core/glibc/glibc.install
new file mode 100644
index 0000000..7f85ade
--- /dev/null
+++ b/abs/not_built/core/glibc/glibc.install
@@ -0,0 +1,20 @@
+infodir=usr/share/info
+filelist=(libc.info{,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11})
+
+post_upgrade() {
+ sbin/ldconfig -r .
+ [ -x sbin/init ] && sbin/init u
+ usr/sbin/locale-gen
+
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ for file in ${filelist[@]}; do
+ usr/bin/install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+ done
+}
diff --git a/abs/not_built/core/glibc/locale-gen b/abs/not_built/core/glibc/locale-gen
new file mode 100755
index 0000000..5aff344
--- /dev/null
+++ b/abs/not_built/core/glibc/locale-gen
@@ -0,0 +1,42 @@
+#!/bin/sh
+
+set -e
+
+LOCALEGEN=/etc/locale.gen
+LOCALES=/usr/share/i18n/locales
+if [ -n "$POSIXLY_CORRECT" ]; then
+ unset POSIXLY_CORRECT
+fi
+
+
+[ -f $LOCALEGEN -a -s $LOCALEGEN ] || exit 0;
+
+# Remove all old locale dir and locale-archive before generating new
+# locale data.
+rm -rf /usr/lib/locale/* || true
+
+umask 022
+
+is_entry_ok() {
+ if [ -n "$locale" -a -n "$charset" ] ; then
+ true
+ else
+ echo "error: Bad entry '$locale $charset'"
+ false
+ fi
+}
+
+echo "Generating locales..."
+while read locale charset; do \
+ case $locale in \#*) continue;; "") continue;; esac; \
+ is_entry_ok || continue
+ echo -n " `echo $locale | sed 's/\([^.\@]*\).*/\1/'`"; \
+ echo -n ".$charset"; \
+ echo -n `echo $locale | sed 's/\([^\@]*\)\(\@.*\)*/\2/'`; \
+ echo -n '...'; \
+ if [ -f $LOCALES/$locale ]; then input=$locale; else \
+ input=`echo $locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; fi; \
+ localedef -i $input -c -f $charset -A /usr/share/locale/locale.alias $locale; \
+ echo ' done'; \
+done < $LOCALEGEN
+echo "Generation complete."
diff --git a/abs/not_built/core/glibc/locale.gen.txt b/abs/not_built/core/glibc/locale.gen.txt
new file mode 100644
index 0000000..ccdd817
--- /dev/null
+++ b/abs/not_built/core/glibc/locale.gen.txt
@@ -0,0 +1,23 @@
+# Configuration file for locale-gen
+#
+# lists of locales that are to be generated by the locale-gen command.
+#
+# Each line is of the form:
+#
+# <locale> <charset>
+#
+# where <locale> is one of the locales given in /usr/share/i18n/locales
+# and <charset> is one of the character sets listed in /usr/share/i18n/charmaps
+#
+# Examples:
+# en_US ISO-8859-1
+# en_US.UTF-8 UTF-8
+# de_DE ISO-8859-1
+# de_DE@euro ISO-8859-15
+#
+# The locale-gen command will generate all the locales,
+# placing them in /usr/lib/locale.
+#
+# A list of supported locales is included in this file.
+# Uncomment the ones you need.
+#
diff --git a/abs/not_built/core/glibc/nscd.rcd b/abs/not_built/core/glibc/nscd.rcd
new file mode 100755
index 0000000..4b48ab0
--- /dev/null
+++ b/abs/not_built/core/glibc/nscd.rcd
@@ -0,0 +1,65 @@
+#!/bin/bash
+
+daemon_name="nscd"
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+
+get_pid() {
+ pidof -o %PPID $daemon_name
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting $daemon_name daemon"
+ PID=$(get_pid)
+ if [[ -z $PID ]]; then
+ rm -f /run/$daemon_name.pid
+ mkdir -p /run/nscd /var/db/nscd
+ rm -f /run/nscd/* /var/db/nscd/*
+ $daemon_name
+ if (( $? > 0 )); then
+ stat_fail
+ exit 1
+ else
+ echo $(get_pid) > /var/run/$daemon_name.pid
+ add_daemon $daemon_name
+ stat_done
+ fi
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping $daemon_name daemon"
+ PID=$(get_pid)
+ [[ -n $PID ]] && nscd --shutdown &> /dev/null
+ if (( $? > 0 )); then
+ stat_fail
+ exit 1
+ else
+ rm -f /run/$daemon_name.pid &> /dev/null
+ rm_daemon $daemon_name
+ stat_done
+ fi
+ ;;
+
+ restart)
+ $0 stop
+ sleep 3
+ $0 start
+ ;;
+
+ status)
+ stat_busy "Checking $daemon_name status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|restart|status}"
+esac
+
+exit 0
diff --git a/abs/not_built/core/glibc/nscd.service b/abs/not_built/core/glibc/nscd.service
new file mode 100644
index 0000000..de5315e
--- /dev/null
+++ b/abs/not_built/core/glibc/nscd.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Name Service Cache Daemon
+After=syslog.target
+
+[Service]
+Type=forking
+ExecStart=/usr/sbin/nscd
+ExecStop=/usr/sbin/nscd --shutdown
+ExecReload=/usr/sbin/nscd -i passwd
+ExecReload=/usr/sbin/nscd -i group
+ExecReload=/usr/sbin/nscd -i hosts
+ExecReload=/usr/sbin/nscd -i service
+Restart=always
+PIDFile=/run/nscd/nscd.pid
+
+[Install]
+WantedBy=multi-user.target
diff --git a/abs/not_built/core/glibc/nscd.tmpfiles b/abs/not_built/core/glibc/nscd.tmpfiles
new file mode 100644
index 0000000..8a24a78
--- /dev/null
+++ b/abs/not_built/core/glibc/nscd.tmpfiles
@@ -0,0 +1 @@
+d /run/nscd 0755 root root
diff --git a/abs/not_built/core/grub-gfx/040_all_grub-0.96-nxstack.patch b/abs/not_built/core/grub-gfx/040_all_grub-0.96-nxstack.patch
new file mode 100644
index 0000000..121941c
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/040_all_grub-0.96-nxstack.patch
@@ -0,0 +1,623 @@
+Fix NX segfaulting on amd64.
+
+Patch by Peter Jones.
+
+http://lists.gnu.org/archive/html/bug-grub/2005-03/msg00011.html
+
+--- grub-0.97/grub/asmstub.c
++++ grub-0.97/grub/asmstub.c
+@@ -42,6 +42,7 @@
+ #include <sys/time.h>
+ #include <termios.h>
+ #include <signal.h>
++#include <sys/mman.h>
+
+ #ifdef __linux__
+ # include <sys/ioctl.h> /* ioctl */
+@@ -79,7 +80,7 @@
+ struct apm_info apm_bios_info;
+
+ /* Emulation requirements. */
+-char *grub_scratch_mem = 0;
++void *grub_scratch_mem = 0;
+
+ struct geometry *disks = 0;
+
+@@ -103,14 +104,62 @@
+ static unsigned int serial_speed;
+ #endif /* SIMULATE_SLOWNESS_OF_SERIAL */
+
++/* This allocates page-aligned storage of the specified size, which must be
++ * a multiple of the page size as determined by calling sysconf(_SC_PAGESIZE)
++ */
++#ifdef __linux__
++static void *
++grub_mmap_alloc(size_t len)
++{
++ int mmap_flags = MAP_ANONYMOUS|MAP_PRIVATE|MAP_EXECUTABLE;
++
++#ifdef MAP_32BIT
++ mmap_flags |= MAP_32BIT;
++#endif
++ /* Mark the simulated stack executable, as GCC uses stack trampolines
++ * to implement nested functions. */
++ return mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC, mmap_flags, -1, 0);
++}
++#else /* !defined(__linux__) */
++static void *
++grub_mmap_alloc(size_t len)
++{
++ int fd = 0, offset = 0, ret = 0;
++ void *pa = MAP_FAILED;
++ char template[] = "/tmp/grub_mmap_alloc_XXXXXX";
++ errno_t e;
++
++ fd = mkstemp(template);
++ if (fd < 0)
++ return pa;
++
++ unlink(template);
++
++ ret = ftruncate(fd, len);
++ if (ret < 0)
++ return pa;
++
++ /* Mark the simulated stack executable, as GCC uses stack trampolines
++ * to implement nested functions. */
++ pa = mmap(NULL, len, PROT_READ|PROT_WRITE|PROT_EXEC,
++ MAP_PRIVATE|MAP_EXECUTABLE, fd, offset);
++
++ e = errno;
++ close(fd);
++ errno = e;
++ return pa;
++}
++#endif /* defined(__linux__) */
++
+ /* The main entry point into this mess. */
+ int
+ grub_stage2 (void)
+ {
+ /* These need to be static, because they survive our stack transitions. */
+ static int status = 0;
+- static char *realstack;
+- char *scratch, *simstack;
++ static void *realstack;
++ void *simstack_alloc_base, *simstack;
++ size_t simstack_size, page_size;
+ int i;
+
+ /* We need a nested function so that we get a clean stack frame,
+@@ -140,9 +189,35 @@
+ }
+
+ assert (grub_scratch_mem == 0);
+- scratch = malloc (0x100000 + EXTENDED_MEMSIZE + 15);
+- assert (scratch);
+- grub_scratch_mem = (char *) ((((int) scratch) >> 4) << 4);
++
++ /* Allocate enough pages for 0x100000 + EXTENDED_SIZE + 15, and
++ * make sure the memory is aligned to a multiple of the system's
++ * page size */
++ page_size = sysconf (_SC_PAGESIZE);
++ simstack_size = ( 0x100000 + EXTENDED_MEMSIZE + 15);
++ if (simstack_size % page_size)
++ {
++ /* If we're not on a page_size boundary, round up to the next one */
++ simstack_size &= ~(page_size-1);
++ simstack_size += page_size;
++ }
++
++ /* Add one for a PROT_NONE boundary page at each end. */
++ simstack_size += 2 * page_size;
++
++ simstack_alloc_base = grub_mmap_alloc(simstack_size);
++ assert (simstack_alloc_base != MAP_FAILED);
++
++ /* mark pages above and below our simstack area as innaccessable.
++ * If the implementation we're using doesn't support that, then the
++ * new protection modes are undefined. It's safe to just ignore
++ * them, though. It'd be nice if we knew that we'd get a SEGV for
++ * touching the area, but that's all. it'd be nice to have. */
++ mprotect (simstack_alloc_base, page_size, PROT_NONE);
++ mprotect ((void *)((unsigned long)simstack_alloc_base +
++ simstack_size - page_size), page_size, PROT_NONE);
++
++ grub_scratch_mem = (void *)((unsigned long)simstack_alloc_base + page_size);
+
+ /* FIXME: simulate the memory holes using mprot, if available. */
+
+@@ -215,7 +290,7 @@
+ device_map = 0;
+ free (disks);
+ disks = 0;
+- free (scratch);
++ munmap(simstack_alloc_base, simstack_size);
+ grub_scratch_mem = 0;
+
+ if (serial_device)
+--- grub-0.97/stage2/builtins.c
++++ grub-0.97/stage2/builtins.c
+@@ -131,63 +131,98 @@
+ }
+
+
++/* blocklist_read_helper nee disk_read_blocklist_func was a nested
++ * function, to which pointers were taken and exposed globally. Even
++ * in the GNU-C nested functions extension, they have local linkage,
++ * and aren't guaranteed to be accessable *at all* outside of their
++ * containing scope.
++ *
++ * Above and beyond all of that, the variables within blocklist_func_context
++ * are originally local variables, with local (not even static) linkage,
++ * from within blocklist_func. These were each referenced by
++ * disk_read_blocklist_func, which is only called from other functions
++ * through a globally scoped pointer.
++ *
++ * The documentation in GCC actually uses the words "all hell will break
++ * loose" to describe this scenario.
++ *
++ * Also, "start_sector" was also used uninitialized, but gcc doesn't warn
++ * about it (possibly because of the scoping madness?)
++ */
++
++static struct {
++ int start_sector;
++ int num_sectors;
++ int num_entries;
++ int last_length;
++} blocklist_func_context = {
++ .start_sector = 0,
++ .num_sectors = 0,
++ .num_entries = 0,
++ .last_length = 0
++};
++
++/* Collect contiguous blocks into one entry as many as possible,
++ and print the blocklist notation on the screen. */
++static void
++blocklist_read_helper (int sector, int offset, int length)
++{
++ int *start_sector = &blocklist_func_context.start_sector;
++ int *num_sectors = &blocklist_func_context.num_sectors;
++ int *num_entries = &blocklist_func_context.num_entries;
++ int *last_length = &blocklist_func_context.last_length;
++
++ if (*num_sectors > 0)
++ {
++ if (*start_sector + *num_sectors == sector
++ && offset == 0 && *last_length == SECTOR_SIZE)
++ {
++ *num_sectors++;
++ *last_length = length;
++ return;
++ }
++ else
++ {
++ if (*last_length == SECTOR_SIZE)
++ grub_printf ("%s%d+%d", *num_entries ? "," : "",
++ *start_sector - part_start, *num_sectors);
++ else if (*num_sectors > 1)
++ grub_printf ("%s%d+%d,%d[0-%d]", *num_entries ? "," : "",
++ *start_sector - part_start, *num_sectors-1,
++ *start_sector + *num_sectors-1 - part_start,
++ *last_length);
++ else
++ grub_printf ("%s%d[0-%d]", *num_entries ? "," : "",
++ *start_sector - part_start, *last_length);
++ *num_entries++;
++ *num_sectors = 0;
++ }
++ }
++
++ if (offset > 0)
++ {
++ grub_printf("%s%d[%d-%d]", *num_entries ? "," : "",
++ sector-part_start, offset, offset+length);
++ *num_entries++;
++ }
++ else
++ {
++ *start_sector = sector;
++ *num_sectors = 1;
++ *last_length = length;
++ }
++}
++
+ /* blocklist */
+ static int
+ blocklist_func (char *arg, int flags)
+ {
+ char *dummy = (char *) RAW_ADDR (0x100000);
+- int start_sector;
+- int num_sectors = 0;
+- int num_entries = 0;
+- int last_length = 0;
+-
+- auto void disk_read_blocklist_func (int sector, int offset, int length);
+-
+- /* Collect contiguous blocks into one entry as many as possible,
+- and print the blocklist notation on the screen. */
+- auto void disk_read_blocklist_func (int sector, int offset, int length)
+- {
+- if (num_sectors > 0)
+- {
+- if (start_sector + num_sectors == sector
+- && offset == 0 && last_length == SECTOR_SIZE)
+- {
+- num_sectors++;
+- last_length = length;
+- return;
+- }
+- else
+- {
+- if (last_length == SECTOR_SIZE)
+- grub_printf ("%s%d+%d", num_entries ? "," : "",
+- start_sector - part_start, num_sectors);
+- else if (num_sectors > 1)
+- grub_printf ("%s%d+%d,%d[0-%d]", num_entries ? "," : "",
+- start_sector - part_start, num_sectors-1,
+- start_sector + num_sectors-1 - part_start,
+- last_length);
+- else
+- grub_printf ("%s%d[0-%d]", num_entries ? "," : "",
+- start_sector - part_start, last_length);
+- num_entries++;
+- num_sectors = 0;
+- }
+- }
+-
+- if (offset > 0)
+- {
+- grub_printf("%s%d[%d-%d]", num_entries ? "," : "",
+- sector-part_start, offset, offset+length);
+- num_entries++;
+- }
+- else
+- {
+- start_sector = sector;
+- num_sectors = 1;
+- last_length = length;
+- }
+- }
+
++ int *start_sector = &blocklist_func_context.start_sector;
++ int *num_sectors = &blocklist_func_context.num_sectors;
++ int *num_entries = &blocklist_func_context.num_entries;
++
+ /* Open the file. */
+ if (! grub_open (arg))
+ return 1;
+@@ -204,15 +241,15 @@
+ grub_printf (")");
+
+ /* Read in the whole file to DUMMY. */
+- disk_read_hook = disk_read_blocklist_func;
++ disk_read_hook = blocklist_read_helper;
+ if (! grub_read (dummy, -1))
+ goto fail;
+
+ /* The last entry may not be printed yet. Don't check if it is a
+ * full sector, since it doesn't matter if we read too much. */
+- if (num_sectors > 0)
+- grub_printf ("%s%d+%d", num_entries ? "," : "",
+- start_sector - part_start, num_sectors);
++ if (*num_sectors > 0)
++ grub_printf ("%s%d+%d", *num_entries ? "," : "",
++ *start_sector - part_start, *num_sectors);
+
+ grub_printf ("\n");
+
+@@ -1868,6 +1905,77 @@
+
+
+ /* install */
++static struct {
++ int saved_sector;
++ int installaddr;
++ int installlist;
++ char *stage2_first_buffer;
++} install_func_context = {
++ .saved_sector = 0,
++ .installaddr = 0,
++ .installlist = 0,
++ .stage2_first_buffer = NULL,
++};
++
++/* Save the first sector of Stage2 in STAGE2_SECT. */
++/* Formerly disk_read_savesect_func with local scope inside install_func */
++static void
++install_savesect_helper(int sector, int offset, int length)
++{
++ if (debug)
++ printf ("[%d]", sector);
++
++ /* ReiserFS has files which sometimes contain data not aligned
++ on sector boundaries. Returning an error is better than
++ silently failing. */
++ if (offset != 0 || length != SECTOR_SIZE)
++ errnum = ERR_UNALIGNED;
++
++ install_func_context.saved_sector = sector;
++}
++
++/* Write SECTOR to INSTALLLIST, and update INSTALLADDR and INSTALLSECT. */
++/* Formerly disk_read_blocklist_func with local scope inside install_func */
++static void
++install_blocklist_helper (int sector, int offset, int length)
++{
++ int *installaddr = &install_func_context.installaddr;
++ int *installlist = &install_func_context.installlist;
++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer;
++ /* Was the last sector full? */
++ static int last_length = SECTOR_SIZE;
++
++ if (debug)
++ printf("[%d]", sector);
++
++ if (offset != 0 || last_length != SECTOR_SIZE)
++ {
++ /* We found a non-sector-aligned data block. */
++ errnum = ERR_UNALIGNED;
++ return;
++ }
++
++ last_length = length;
++
++ if (*((unsigned long *) (*installlist - 4))
++ + *((unsigned short *) *installlist) != sector
++ || *installlist == (int) *stage2_first_buffer + SECTOR_SIZE + 4)
++ {
++ *installlist -= 8;
++
++ if (*((unsigned long *) (*installlist - 8)))
++ errnum = ERR_WONT_FIT;
++ else
++ {
++ *((unsigned short *) (*installlist + 2)) = (*installaddr >> 4);
++ *((unsigned long *) (*installlist - 4)) = sector;
++ }
++ }
++
++ *((unsigned short *) *installlist) += 1;
++ *installaddr += 512;
++}
++
+ static int
+ install_func (char *arg, int flags)
+ {
+@@ -1875,8 +1983,12 @@
+ char *stage1_buffer = (char *) RAW_ADDR (0x100000);
+ char *stage2_buffer = stage1_buffer + SECTOR_SIZE;
+ char *old_sect = stage2_buffer + SECTOR_SIZE;
+- char *stage2_first_buffer = old_sect + SECTOR_SIZE;
+- char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE;
++ /* stage2_first_buffer used to be defined as:
++ * char *stage2_first_buffer = old_sect + SECTOR_SIZE; */
++ char **stage2_first_buffer = &install_func_context.stage2_first_buffer;
++ /* and stage2_second_buffer was:
++ * char *stage2_second_buffer = stage2_first_buffer + SECTOR_SIZE; */
++ char *stage2_second_buffer = old_sect + SECTOR_SIZE + SECTOR_SIZE;
+ /* XXX: Probably SECTOR_SIZE is reasonable. */
+ char *config_filename = stage2_second_buffer + SECTOR_SIZE;
+ char *dummy = config_filename + SECTOR_SIZE;
+@@ -1885,10 +1997,11 @@
+ int src_drive, src_partition, src_part_start;
+ int i;
+ struct geometry dest_geom, src_geom;
+- int saved_sector;
++ int *saved_sector = &install_func_context.saved_sector;
+ int stage2_first_sector, stage2_second_sector;
+ char *ptr;
+- int installaddr, installlist;
++ int *installaddr = &install_func_context.installaddr;
++ int *installlist = &install_func_context.installlist;
+ /* Point to the location of the name of a configuration file in Stage 2. */
+ char *config_file_location;
+ /* If FILE is a Stage 1.5? */
+@@ -1897,67 +2010,13 @@
+ int is_open = 0;
+ /* If LBA is forced? */
+ int is_force_lba = 0;
+- /* Was the last sector full? */
+- int last_length = SECTOR_SIZE;
+-
++
++ *stage2_first_buffer = old_sect + SECTOR_SIZE;
+ #ifdef GRUB_UTIL
+ /* If the Stage 2 is in a partition mounted by an OS, this will store
+ the filename under the OS. */
+ char *stage2_os_file = 0;
+ #endif /* GRUB_UTIL */
+-
+- auto void disk_read_savesect_func (int sector, int offset, int length);
+- auto void disk_read_blocklist_func (int sector, int offset, int length);
+-
+- /* Save the first sector of Stage2 in STAGE2_SECT. */
+- auto void disk_read_savesect_func (int sector, int offset, int length)
+- {
+- if (debug)
+- printf ("[%d]", sector);
+-
+- /* ReiserFS has files which sometimes contain data not aligned
+- on sector boundaries. Returning an error is better than
+- silently failing. */
+- if (offset != 0 || length != SECTOR_SIZE)
+- errnum = ERR_UNALIGNED;
+-
+- saved_sector = sector;
+- }
+-
+- /* Write SECTOR to INSTALLLIST, and update INSTALLADDR and
+- INSTALLSECT. */
+- auto void disk_read_blocklist_func (int sector, int offset, int length)
+- {
+- if (debug)
+- printf("[%d]", sector);
+-
+- if (offset != 0 || last_length != SECTOR_SIZE)
+- {
+- /* We found a non-sector-aligned data block. */
+- errnum = ERR_UNALIGNED;
+- return;
+- }
+-
+- last_length = length;
+-
+- if (*((unsigned long *) (installlist - 4))
+- + *((unsigned short *) installlist) != sector
+- || installlist == (int) stage2_first_buffer + SECTOR_SIZE + 4)
+- {
+- installlist -= 8;
+-
+- if (*((unsigned long *) (installlist - 8)))
+- errnum = ERR_WONT_FIT;
+- else
+- {
+- *((unsigned short *) (installlist + 2)) = (installaddr >> 4);
+- *((unsigned long *) (installlist - 4)) = sector;
+- }
+- }
+-
+- *((unsigned short *) installlist) += 1;
+- installaddr += 512;
+- }
+
+ /* First, check the GNU-style long option. */
+ while (1)
+@@ -1987,10 +2049,10 @@
+ addr = skip_to (0, file);
+
+ /* Get the installation address. */
+- if (! safe_parse_maxint (&addr, &installaddr))
++ if (! safe_parse_maxint (&addr, installaddr))
+ {
+ /* ADDR is not specified. */
+- installaddr = 0;
++ *installaddr = 0;
+ ptr = addr;
+ errnum = 0;
+ }
+@@ -2084,17 +2146,17 @@
+ = (dest_drive & BIOS_FLAG_FIXED_DISK);
+
+ /* Read the first sector of Stage 2. */
+- disk_read_hook = disk_read_savesect_func;
+- if (grub_read (stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE)
++ disk_read_hook = install_savesect_helper;
++ if (grub_read (*stage2_first_buffer, SECTOR_SIZE) != SECTOR_SIZE)
+ goto fail;
+
+- stage2_first_sector = saved_sector;
++ stage2_first_sector = *saved_sector;
+
+ /* Read the second sector of Stage 2. */
+ if (grub_read (stage2_second_buffer, SECTOR_SIZE) != SECTOR_SIZE)
+ goto fail;
+
+- stage2_second_sector = saved_sector;
++ stage2_second_sector = *saved_sector;
+
+ /* Check for the version of Stage 2. */
+ if (*((short *) (stage2_second_buffer + STAGE2_VER_MAJ_OFFS))
+@@ -2110,27 +2172,27 @@
+
+ /* If INSTALLADDR is not specified explicitly in the command-line,
+ determine it by the Stage 2 id. */
+- if (! installaddr)
++ if (! *installaddr)
+ {
+ if (! is_stage1_5)
+ /* Stage 2. */
+- installaddr = 0x8000;
++ *installaddr = 0x8000;
+ else
+ /* Stage 1.5. */
+- installaddr = 0x2000;
++ *installaddr = 0x2000;
+ }
+
+ *((unsigned long *) (stage1_buffer + STAGE1_STAGE2_SECTOR))
+ = stage2_first_sector;
+ *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_ADDRESS))
+- = installaddr;
++ = *installaddr;
+ *((unsigned short *) (stage1_buffer + STAGE1_STAGE2_SEGMENT))
+- = installaddr >> 4;
++ = *installaddr >> 4;
+
+- i = (int) stage2_first_buffer + SECTOR_SIZE - 4;
++ i = (int) *stage2_first_buffer + SECTOR_SIZE - 4;
+ while (*((unsigned long *) i))
+ {
+- if (i < (int) stage2_first_buffer
++ if (i < (int) *stage2_first_buffer
+ || (*((int *) (i - 4)) & 0x80000000)
+ || *((unsigned short *) i) >= 0xA00
+ || *((short *) (i + 2)) == 0)
+@@ -2144,13 +2206,13 @@
+ i -= 8;
+ }
+
+- installlist = (int) stage2_first_buffer + SECTOR_SIZE + 4;
+- installaddr += SECTOR_SIZE;
++ *installlist = (int) *stage2_first_buffer + SECTOR_SIZE + 4;
++ *installaddr += SECTOR_SIZE;
+
+ /* Read the whole of Stage2 except for the first sector. */
+ grub_seek (SECTOR_SIZE);
+
+- disk_read_hook = disk_read_blocklist_func;
++ disk_read_hook = install_blocklist_helper;
+ if (! grub_read (dummy, -1))
+ goto fail;
+
+@@ -2233,7 +2295,7 @@
+ /* Skip the first sector. */
+ grub_seek (SECTOR_SIZE);
+
+- disk_read_hook = disk_read_savesect_func;
++ disk_read_hook = install_savesect_helper;
+ if (grub_read (stage2_buffer, SECTOR_SIZE) != SECTOR_SIZE)
+ goto fail;
+
+@@ -2303,7 +2365,7 @@
+ else
+ #endif /* GRUB_UTIL */
+ {
+- if (! devwrite (saved_sector - part_start, 1, stage2_buffer))
++ if (! devwrite (*saved_sector - part_start, 1, stage2_buffer))
+ goto fail;
+ }
+ }
+@@ -2325,7 +2387,7 @@
+ goto fail;
+ }
+
+- if (fwrite (stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE)
++ if (fwrite (*stage2_first_buffer, 1, SECTOR_SIZE, fp) != SECTOR_SIZE)
+ {
+ fclose (fp);
+ errnum = ERR_WRITE;
+@@ -2352,7 +2414,7 @@
+ goto fail;
+
+ if (! devwrite (stage2_first_sector - src_part_start, 1,
+- stage2_first_buffer))
++ *stage2_first_buffer))
+ goto fail;
+
+ if (! devwrite (stage2_second_sector - src_part_start, 1,
+--- grub-0.97/stage2/shared.h
++++ grub-0.97/stage2/shared.h
+@@ -36,8 +36,8 @@
+
+ /* Maybe redirect memory requests through grub_scratch_mem. */
+ #ifdef GRUB_UTIL
+-extern char *grub_scratch_mem;
+-# define RAW_ADDR(x) ((x) + (int) grub_scratch_mem)
++extern void *grub_scratch_mem;
++# define RAW_ADDR(x) ((x) + (unsigned long) grub_scratch_mem)
+ # define RAW_SEG(x) (RAW_ADDR ((x) << 4) >> 4)
+ #else
+ # define RAW_ADDR(x) (x)
diff --git a/abs/not_built/core/grub-gfx/05-grub-0.97-initrdaddr.diff b/abs/not_built/core/grub-gfx/05-grub-0.97-initrdaddr.diff
new file mode 100644
index 0000000..ccf5f3e
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/05-grub-0.97-initrdaddr.diff
@@ -0,0 +1,16 @@
+--- grub-0.96/stage2/boot.c
++++ grub-0.96/stage2/boot.c
+@@ -824,8 +824,11 @@
+ moveto = (mbi.mem_upper + 0x400) << 10;
+
+ moveto = (moveto - len) & 0xfffff000;
+- max_addr = (lh->header == LINUX_MAGIC_SIGNATURE && lh->version >= 0x0203
+- ? lh->initrd_addr_max : LINUX_INITRD_MAX_ADDRESS);
++ max_addr = LINUX_INITRD_MAX_ADDRESS;
++ if (lh->header == LINUX_MAGIC_SIGNATURE &&
++ lh->version >= 0x0203 &&
++ lh->initrd_addr_max < max_addr)
++ max_addr = lh->initrd_addr_max;
+ if (moveto + len >= max_addr)
+ moveto = (max_addr - len) & 0xfffff000;
+
diff --git a/abs/not_built/core/grub-gfx/PKGBUILD b/abs/not_built/core/grub-gfx/PKGBUILD
new file mode 100644
index 0000000..5d95294
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/PKGBUILD
@@ -0,0 +1,106 @@
+# Maintainer: Douglas Soares de Andrade <dsandrade@gmail.com>
+# Contributor: judd <jvinet@zeroflux.org>
+# Contributor: Mario A. Vazquez
+# Contributor: Jerzy Goca <juras256@epf.pl>
+
+pkgname=grub
+pkgver=0.97
+pkgrel=43
+pkgdesc="A GNU multiboot boot loader"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.gnu.org/software/grub/"
+depends=('ncurses')
+makedepends=('automake>=1.10' 'autoconf>=2.61' 'patch')
+#conflicts=('grub')
+groups=('base')
+provides=('grub')
+source=(ftp://alpha.gnu.org/gnu/grub/grub-$pkgver.tar.gz \
+ menu.lst install-grub grub-0.97-graphics.patch \
+ splash.xpm.gz grub-inode-size.patch \
+ 040_all_grub-0.96-nxstack.patch \
+ 05-grub-0.97-initrdaddr.diff ext4.patch \
+ i2o.patch special-devices.patch more-raid.patch intelmac.patch)
+backup=('boot/grub/menu.lst')
+install=grub-gfx.install
+
+build() {
+ cd $startdir/src/grub-$pkgver
+
+ #set destination architecture here
+ DESTARCH="i686"
+ #DESTARCH="x86_64"
+
+ # graphics patch
+ patch -p1 < ../grub-0.97-graphics.patch || return 1
+
+ # optimizations break the build -- disable them
+ # adding special devices to grub, patches are from fedora
+ patch -Np1 -i ../special-devices.patch || return 1
+ patch -Np1 -i ../i2o.patch || return 1
+ patch -Np1 -i ../more-raid.patch || return 1
+ patch -Np1 -i ../intelmac.patch || return 1
+ patch -Np1 -i ../grub-inode-size.patch || return 1
+ patch -Np1 -i ../ext4.patch || return 1
+
+ # correcting problems for new wersion of autotools
+ sed -i -e'/^AC_PROG_CC/ a\AM_PROG_CC_C_O\ ' configure.ac
+ sed -i -e'/^AC_PROG_CC/ a\AM_PROG_AS\ ' configure.ac
+ aclocal
+ autoconf
+ automake
+
+ #arch64 fixes for static build
+ if [ "$CARCH" = "x86_64" ]; then
+ echo "this package has to be build on i686, won't compile on x86_64"
+ sleep 5
+ else
+ if [ "$DESTARCH" = "x86_64" ]; then
+ # patch from gentoo for fixing a segfault
+ 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
+ else
+ CFLAGS= ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin
+ fi
+ fi
+
+ CFLAGS= make || return 1
+ make DESTDIR=$startdir/pkg install
+ install -D -m644 ../menu.lst $startdir/pkg/boot/grub/menu.lst
+ install -D -m755 ../install-grub $startdir/pkg/sbin/install-grub
+
+ # symlink for compatibility with the <=0.7 installer
+ mkdir -p $startdir/pkg/usr/share
+ ln -s ../lib/grub $startdir/pkg/usr/share/grub
+
+ # splashimage xpm install
+ install -D -m644 $startdir/splash.xpm.gz $startdir/pkg/boot/grub/splash.xpm.gz
+
+ # Create a symlink to people that was using it
+ pushd $startdir/pkg/boot/grub/
+ ln -s splash.xpm.gz arch.xpm.gz
+ popd
+
+ rm -f $pkgdir/usr/share/info/dir || return 1
+
+ if [ "$DESTARCH" = "x86_64" ]; then
+ # fool makepkg into building a x86_64 package
+ export CARCH="x86_64"
+ fi
+
+}
+md5sums=('cd3f3eb54446be6003156158d51f4884'
+ '58cfec4abda85307f779147ab9a6be48'
+ '3182c4ae4963a16930bc772bba89dacf'
+ '12f043616b51ce2ba82e46c9186a528d'
+ '342f59f24cf5de5f013eacda68e617eb'
+ 'ada26cbc681907823cc4ff2a55b97866'
+ 'eb9d69c46af3a0667c1f651817d7f075'
+ 'ccd2d757e79e3a03dc19ede7391ed328'
+ '39e0f9a05b7e04aceb24fc7bc4893e3d'
+ '826fdbf446067f9861baf9f6a69a4583'
+ '49f6d4bcced0bc8bbcff273f3254bbfa'
+ 'f41f702014a064918d7afc6fc23baa6e'
+ '175dc6b9f4ab94e8056c3afb3e34460a')
diff --git a/abs/not_built/core/grub-gfx/ext4.patch b/abs/not_built/core/grub-gfx/ext4.patch
new file mode 100644
index 0000000..8a2f9bd
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/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; i<extent_hdr->eh_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/not_built/core/grub-gfx/grub-0.97-graphics.patch b/abs/not_built/core/grub-gfx/grub-0.97-graphics.patch
new file mode 100644
index 0000000..e0baa90
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/grub-0.97-graphics.patch
@@ -0,0 +1,1293 @@
+diff -urpN grub-0.97/configure.ac grub-0.97-gfx/configure.ac
+--- grub-0.97/configure.ac 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/configure.ac 2005-10-13 16:27:35.000000000 -0400
+@@ -595,6 +595,11 @@ AC_ARG_ENABLE(diskless,
+ [ --enable-diskless enable diskless support])
+ AM_CONDITIONAL(DISKLESS_SUPPORT, test "x$enable_diskless" = xyes)
+
++dnl Graphical splashscreen support
++AC_ARG_ENABLE(graphics,
++ [ --disable-graphics disable graphics terminal support])
++AM_CONDITIONAL(GRAPHICS_SUPPORT, test "x$enable_graphics" != xno)
++
+ dnl Hercules terminal
+ AC_ARG_ENABLE(hercules,
+ [ --disable-hercules disable hercules terminal support])
+diff -urpN grub-0.97/stage2/Makefile.am grub-0.97-gfx/stage2/Makefile.am
+--- grub-0.97/stage2/Makefile.am 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/Makefile.am 2005-10-13 16:27:35.000000000 -0400
+@@ -7,7 +7,7 @@ noinst_HEADERS = apic.h defs.h dir.h dis
+ fat.h filesys.h freebsd.h fs.h hercules.h i386-elf.h \
+ imgact_aout.h iso9660.h jfs.h mb_header.h mb_info.h md5.h \
+ nbi.h pc_slice.h serial.h shared.h smp-imps.h term.h \
+- terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h
++ terminfo.h tparm.h nbi.h ufs2.h vstafs.h xfs.h graphics.h
+ EXTRA_DIST = setjmp.S apm.S $(noinst_SCRIPTS)
+
+ # For <stage1.h>.
+@@ -19,7 +19,7 @@ libgrub_a_SOURCES = boot.c builtins.c ch
+ disk_io.c fsys_ext2fs.c fsys_fat.c fsys_ffs.c fsys_iso9660.c \
+ fsys_jfs.c fsys_minix.c fsys_reiserfs.c fsys_ufs2.c \
+ fsys_vstafs.c fsys_xfs.c gunzip.c md5.c serial.c stage2.c \
+- terminfo.c tparm.c
++ terminfo.c tparm.c graphics.c
+ libgrub_a_CFLAGS = $(GRUB_CFLAGS) -I$(top_srcdir)/lib \
+ -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 -DFSYS_FAT=1 -DFSYS_FFS=1 \
+ -DFSYS_ISO9660=1 -DFSYS_JFS=1 -DFSYS_MINIX=1 -DFSYS_REISERFS=1 \
+@@ -79,8 +79,14 @@ else
+ HERCULES_FLAGS =
+ endif
+
++if GRAPHICS_SUPPORT
++GRAPHICS_FLAGS = -DSUPPORT_GRAPHICS=1
++else
++GRAPHICS_FLAGS =
++endif
++
+ STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc \
+- $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS)
++ $(NETBOOT_FLAGS) $(SERIAL_FLAGS) $(HERCULES_FLAGS) $(GRAPHICS_FLAGS)
+
+ STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
+ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1
+@@ -90,7 +96,8 @@ pre_stage2_exec_SOURCES = asm.S bios.c b
+ cmdline.c common.c console.c disk_io.c fsys_ext2fs.c \
+ fsys_fat.c fsys_ffs.c fsys_iso9660.c fsys_jfs.c fsys_minix.c \
+ fsys_reiserfs.c fsys_ufs2.c fsys_vstafs.c fsys_xfs.c gunzip.c \
+- hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c
++ hercules.c md5.c serial.c smp-imps.c stage2.c terminfo.c tparm.c \
++ graphics.c
+ pre_stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
+ pre_stage2_exec_CCASFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
+ pre_stage2_exec_LDFLAGS = $(PRE_STAGE2_LINK)
+diff -urpN grub-0.97/stage2/asm.S grub-0.97-gfx/stage2/asm.S
+--- grub-0.97/stage2/asm.S 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/asm.S 2005-10-13 16:27:35.000000000 -0400
+@@ -2216,6 +2216,156 @@ ENTRY(console_setcursor)
+ pop %ebx
+ pop %ebp
+ ret
++
++/* graphics mode functions */
++#ifdef SUPPORT_GRAPHICS
++VARIABLE(cursorX)
++.word 0
++VARIABLE(cursorY)
++.word 0
++VARIABLE(cursorCount)
++.word 0
++VARIABLE(cursorBuf)
++.byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
++
++
++/*
++ * int set_videomode(mode)
++ * BIOS call "INT 10H Function 0h" to set video mode
++ * Call with %ah = 0x0
++ * %al = video mode
++ * Returns old videomode.
++ */
++ENTRY(set_videomode)
++ push %ebp
++ push %ebx
++ push %ecx
++
++ movb 0x10(%esp), %cl
++
++ call EXT_C(prot_to_real)
++ .code16
++
++ xorw %bx, %bx
++ movb $0xf, %ah
++ int $0x10 /* Get Current Video mode */
++ movb %al, %ch
++ xorb %ah, %ah
++ movb %cl, %al
++ int $0x10 /* Set Video mode */
++
++ DATA32 call EXT_C(real_to_prot)
++ .code32
++
++ xorb %ah, %ah
++ movb %ch, %al
++
++ pop %ecx
++ pop %ebx
++ pop %ebp
++ ret
++
++
++/*
++ * unsigned char * graphics_get_font()
++ * BIOS call "INT 10H Function 11h" to set font
++ * Call with %ah = 0x11
++ */
++ENTRY(graphics_get_font)
++ push %ebp
++ push %ebx
++ push %ecx
++ push %edx
++
++ call EXT_C(prot_to_real)
++ .code16
++
++ movw $0x1130, %ax
++ movb $6, %bh /* font 8x16 */
++ int $0x10
++ movw %bp, %dx
++ movw %es, %cx
++
++ DATA32 call EXT_C(real_to_prot)
++ .code32
++
++ xorl %eax, %eax
++ movw %cx, %ax
++ shll $4, %eax
++ movw %dx, %ax
++
++ pop %edx
++ pop %ecx
++ pop %ebx
++ pop %ebp
++ ret
++
++
++
++/*
++ * graphics_set_palette(index, red, green, blue)
++ * BIOS call "INT 10H Function 10h" to set individual dac register
++ * Call with %ah = 0x10
++ * %bx = register number
++ * %ch = new value for green (0-63)
++ * %cl = new value for blue (0-63)
++ * %dh = new value for red (0-63)
++ */
++
++ENTRY(graphics_set_palette)
++ push %ebp
++ push %eax
++ push %ebx
++ push %ecx
++ push %edx
++
++ movw $0x3c8, %bx /* address write mode register */
++
++ /* wait vertical retrace */
++
++ movw $0x3da, %dx
++l1b: inb %dx, %al /* wait vertical active display */
++ test $8, %al
++ jnz l1b
++
++l2b: inb %dx, %al /* wait vertical retrace */
++ test $8, %al
++ jnz l2b
++
++ mov %bx, %dx
++ movb 0x18(%esp), %al /* index */
++ outb %al, %dx
++ inc %dx
++
++ movb 0x1c(%esp), %al /* red */
++ outb %al, %dx
++
++ movb 0x20(%esp), %al /* green */
++ outb %al, %dx
++
++ movb 0x24(%esp), %al /* blue */
++ outb %al, %dx
++
++ movw 0x18(%esp), %bx
++
++ call EXT_C(prot_to_real)
++ .code16
++
++ movb %bl, %bh
++ movw $0x1000, %ax
++ int $0x10
++
++ DATA32 call EXT_C(real_to_prot)
++ .code32
++
++ pop %edx
++ pop %ecx
++ pop %ebx
++ pop %eax
++ pop %ebp
++ ret
++
++#endif /* SUPPORT_GRAPHICS */
+
+ /*
+ * getrtsecs()
+diff -urpN grub-0.97/stage2/builtins.c grub-0.97-gfx/stage2/builtins.c
+--- grub-0.97/stage2/builtins.c 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/builtins.c 2005-10-13 16:27:35.000000000 -0400
+@@ -852,6 +852,138 @@ static struct builtin builtin_dhcp =
+ };
+ #endif /* SUPPORT_NETBOOT */
+
++static int terminal_func (char *arg, int flags);
++
++#ifdef SUPPORT_GRAPHICS
++
++static int splashimage_func(char *arg, int flags) {
++ char splashimage[64];
++ int i;
++
++ /* filename can only be 64 characters due to our buffer size */
++ if (strlen(arg) > 63)
++ return 1;
++ if (flags == BUILTIN_CMDLINE) {
++ if (!grub_open(arg))
++ return 1;
++ grub_close();
++ }
++
++ strcpy(splashimage, arg);
++
++ /* get rid of TERM_NEED_INIT from the graphics terminal. */
++ for (i = 0; term_table[i].name; i++) {
++ if (grub_strcmp (term_table[i].name, "graphics") == 0) {
++ term_table[i].flags &= ~TERM_NEED_INIT;
++ break;
++ }
++ }
++
++ graphics_set_splash(splashimage);
++
++ if (flags == BUILTIN_CMDLINE && graphics_inited) {
++ graphics_end();
++ graphics_init();
++ graphics_cls();
++ }
++
++ /* FIXME: should we be explicitly switching the terminal as a
++ * side effect here? */
++ terminal_func("graphics", flags);
++
++ return 0;
++}
++
++static struct builtin builtin_splashimage =
++{
++ "splashimage",
++ splashimage_func,
++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST,
++ "splashimage FILE",
++ "Load FILE as the background image when in graphics mode."
++};
++
++
++/* foreground */
++static int
++foreground_func(char *arg, int flags)
++{
++ if (grub_strlen(arg) == 6) {
++ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2;
++ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2;
++ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2;
++
++ foreground = (r << 16) | (g << 8) | b;
++ if (graphics_inited)
++ graphics_set_palette(15, r, g, b);
++
++ return (0);
++ }
++
++ return (1);
++}
++
++static struct builtin builtin_foreground =
++{
++ "foreground",
++ foreground_func,
++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST,
++ "foreground RRGGBB",
++ "Sets the foreground color when in graphics mode."
++ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal."
++};
++
++
++/* background */
++static int
++background_func(char *arg, int flags)
++{
++ if (grub_strlen(arg) == 6) {
++ int r = ((hex(arg[0]) << 4) | hex(arg[1])) >> 2;
++ int g = ((hex(arg[2]) << 4) | hex(arg[3])) >> 2;
++ int b = ((hex(arg[4]) << 4) | hex(arg[5])) >> 2;
++
++ background = (r << 16) | (g << 8) | b;
++ if (graphics_inited)
++ graphics_set_palette(0, r, g, b);
++ return (0);
++ }
++
++ return (1);
++}
++
++static struct builtin builtin_background =
++{
++ "background",
++ background_func,
++ BUILTIN_CMDLINE | BUILTIN_MENU | BUILTIN_HELP_LIST,
++ "background RRGGBB",
++ "Sets the background color when in graphics mode."
++ "RR is red, GG is green, and BB blue. Numbers must be in hexadecimal."
++};
++
++#endif /* SUPPORT_GRAPHICS */
++
++
++/* clear */
++static int
++clear_func()
++{
++ if (current_term->cls)
++ current_term->cls();
++
++ return 0;
++}
++
++static struct builtin builtin_clear =
++{
++ "clear",
++ clear_func,
++ BUILTIN_CMDLINE | BUILTIN_HELP_LIST,
++ "clear",
++ "Clear the screen"
++};
++
+
+ /* displayapm */
+ static int
+@@ -4085,7 +4217,7 @@ static struct builtin builtin_setup =
+ };
+
+
+-#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES)
++#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS)
+ /* terminal */
+ static int
+ terminal_func (char *arg, int flags)
+@@ -4244,17 +4376,21 @@ terminal_func (char *arg, int flags)
+ end:
+ current_term = term_table + default_term;
+ current_term->flags = term_flags;
+-
++
+ if (lines)
+ max_lines = lines;
+ else
+- /* 24 would be a good default value. */
+- max_lines = 24;
+-
++ max_lines = current_term->max_lines;
++
+ /* If the interface is currently the command-line,
+ restart it to repaint the screen. */
+- if (current_term != prev_term && (flags & BUILTIN_CMDLINE))
++ if ((current_term != prev_term) && (flags & BUILTIN_CMDLINE)){
++ if (prev_term->shutdown)
++ prev_term->shutdown();
++ if (current_term->startup)
++ current_term->startup();
+ grub_longjmp (restart_cmdline_env, 0);
++ }
+
+ return 0;
+ }
+@@ -4264,7 +4400,7 @@ static struct builtin builtin_terminal =
+ "terminal",
+ terminal_func,
+ BUILTIN_MENU | BUILTIN_CMDLINE | BUILTIN_HELP_LIST,
+- "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules]",
++ "terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent] [console] [serial] [hercules] [graphics]",
+ "Select a terminal. When multiple terminals are specified, wait until"
+ " you push any key to continue. If both console and serial are specified,"
+ " the terminal to which you input a key first will be selected. If no"
+@@ -4276,7 +4412,7 @@ static struct builtin builtin_terminal =
+ " seconds. The option --lines specifies the maximum number of lines."
+ " The option --silent is used to suppress messages."
+ };
+-#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */
++#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */
+
+
+ #ifdef SUPPORT_SERIAL
+@@ -4795,6 +4931,9 @@ static struct builtin builtin_vbeprobe =
+ /* The table of builtin commands. Sorted in dictionary order. */
+ struct builtin *builtin_table[] =
+ {
++#ifdef SUPPORT_GRAPHICS
++ &builtin_background,
++#endif
+ &builtin_blocklist,
+ &builtin_boot,
+ #ifdef SUPPORT_NETBOOT
+@@ -4802,6 +4941,7 @@ struct builtin *builtin_table[] =
+ #endif /* SUPPORT_NETBOOT */
+ &builtin_cat,
+ &builtin_chainloader,
++ &builtin_clear,
+ &builtin_cmp,
+ &builtin_color,
+ &builtin_configfile,
+@@ -4821,6 +4961,9 @@ struct builtin *builtin_table[] =
+ &builtin_embed,
+ &builtin_fallback,
+ &builtin_find,
++#ifdef SUPPORT_GRAPHICS
++ &builtin_foreground,
++#endif
+ &builtin_fstest,
+ &builtin_geometry,
+ &builtin_halt,
+@@ -4864,9 +5007,12 @@ struct builtin *builtin_table[] =
+ #endif /* SUPPORT_SERIAL */
+ &builtin_setkey,
+ &builtin_setup,
+-#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES)
++#ifdef SUPPORT_GRAPHICS
++ &builtin_splashimage,
++#endif /* SUPPORT_GRAPHICS */
++#if defined(SUPPORT_SERIAL) || defined(SUPPORT_HERCULES) || defined(SUPPORT_GRAPHICS)
+ &builtin_terminal,
+-#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES */
++#endif /* SUPPORT_SERIAL || SUPPORT_HERCULES || SUPPORT_GRAPHICS */
+ #ifdef SUPPORT_SERIAL
+ &builtin_terminfo,
+ #endif /* SUPPORT_SERIAL */
+diff -urpN grub-0.97/stage2/char_io.c grub-0.97-gfx/stage2/char_io.c
+--- grub-0.97/stage2/char_io.c 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/char_io.c 2005-10-13 16:27:35.000000000 -0400
+@@ -35,6 +35,7 @@ struct term_entry term_table[] =
+ {
+ "console",
+ 0,
++ 24,
+ console_putchar,
+ console_checkkey,
+ console_getkey,
+@@ -43,13 +44,16 @@ struct term_entry term_table[] =
+ console_cls,
+ console_setcolorstate,
+ console_setcolor,
+- console_setcursor
++ console_setcursor,
++ 0,
++ 0
+ },
+ #ifdef SUPPORT_SERIAL
+ {
+ "serial",
+ /* A serial device must be initialized. */
+ TERM_NEED_INIT,
++ 24,
+ serial_putchar,
+ serial_checkkey,
+ serial_getkey,
+@@ -58,6 +62,8 @@ struct term_entry term_table[] =
+ serial_cls,
+ serial_setcolorstate,
+ 0,
++ 0,
++ 0,
+ 0
+ },
+ #endif /* SUPPORT_SERIAL */
+@@ -65,6 +71,7 @@ struct term_entry term_table[] =
+ {
+ "hercules",
+ 0,
++ 24,
+ hercules_putchar,
+ console_checkkey,
+ console_getkey,
+@@ -73,9 +80,28 @@ struct term_entry term_table[] =
+ hercules_cls,
+ hercules_setcolorstate,
+ hercules_setcolor,
+- hercules_setcursor
++ hercules_setcursor,
++ 0,
++ 0
+ },
+ #endif /* SUPPORT_HERCULES */
++#ifdef SUPPORT_GRAPHICS
++ { "graphics",
++ TERM_NEED_INIT, /* flags */
++ 30, /* number of lines */
++ graphics_putchar, /* putchar */
++ console_checkkey, /* checkkey */
++ console_getkey, /* getkey */
++ graphics_getxy, /* getxy */
++ graphics_gotoxy, /* gotoxy */
++ graphics_cls, /* cls */
++ graphics_setcolorstate, /* setcolorstate */
++ graphics_setcolor, /* setcolor */
++ graphics_setcursor, /* nocursor */
++ graphics_init, /* initialize */
++ graphics_end /* shutdown */
++ },
++#endif /* SUPPORT_GRAPHICS */
+ /* This must be the last entry. */
+ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+ };
+@@ -1046,13 +1072,15 @@ grub_putchar (int c)
+ the following grub_printf call will print newlines. */
+ count_lines = -1;
+
++ grub_printf("\n");
+ if (current_term->setcolorstate)
+ current_term->setcolorstate (COLOR_STATE_HIGHLIGHT);
+
+- grub_printf ("\n[Hit return to continue]");
++ grub_printf ("[Hit return to continue]");
+
+ if (current_term->setcolorstate)
+ current_term->setcolorstate (COLOR_STATE_NORMAL);
++
+
+ do
+ {
+@@ -1090,7 +1118,7 @@ void
+ cls (void)
+ {
+ /* If the terminal is dumb, there is no way to clean the terminal. */
+- if (current_term->flags & TERM_DUMB)
++ if (current_term->flags & TERM_DUMB)
+ grub_putchar ('\n');
+ else
+ current_term->cls ();
+@@ -1217,6 +1245,16 @@ memcheck (int addr, int len)
+ return ! errnum;
+ }
+
++void
++grub_memcpy(void *dest, const void *src, int len)
++{
++ int i;
++ register char *d = (char*)dest, *s = (char*)src;
++
++ for (i = 0; i < len; i++)
++ d[i] = s[i];
++}
++
+ void *
+ grub_memmove (void *to, const void *from, int len)
+ {
+diff -urpN grub-0.97/stage2/graphics.c grub-0.97-gfx/stage2/graphics.c
+--- grub-0.97/stage2/graphics.c 1969-12-31 20:00:00.000000000 -0400
++++ grub-0.97-gfx/stage2/graphics.c 2005-10-13 16:27:35.000000000 -0400
+@@ -0,0 +1,552 @@
++/* graphics.c - graphics mode support for GRUB */
++/* Implemented as a terminal type by Jeremy Katz <katzj@redhat.com> based
++ * on a patch by Paulo César Pereira de Andrade <pcpa@conectiva.com.br>
++ */
++/*
++ * GRUB -- GRand Unified Bootloader
++ * Copyright (C) 2001,2002 Red Hat, Inc.
++ * Portions copyright (C) 2000 Conectiva, 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 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.
++ */
++
++
++
++#ifdef SUPPORT_GRAPHICS
++
++#include <term.h>
++#include <shared.h>
++#include <graphics.h>
++
++int saved_videomode;
++unsigned char *font8x16;
++
++int graphics_inited = 0;
++static char splashimage[64];
++
++#define VSHADOW VSHADOW1
++unsigned char VSHADOW1[38400];
++unsigned char VSHADOW2[38400];
++unsigned char VSHADOW4[38400];
++unsigned char VSHADOW8[38400];
++
++/* constants to define the viewable area */
++const int x0 = 0;
++const int x1 = 80;
++const int y0 = 0;
++const int y1 = 30;
++
++/* text buffer has to be kept around so that we can write things as we
++ * scroll and the like */
++unsigned short text[80 * 30];
++
++/* why do these have to be kept here? */
++int foreground = (63 << 16) | (63 << 8) | (63), background = 0, border = 0;
++
++/* current position */
++static int fontx = 0;
++static int fonty = 0;
++
++/* global state so that we don't try to recursively scroll or cursor */
++static int no_scroll = 0;
++
++/* color state */
++static int graphics_standard_color = A_NORMAL;
++static int graphics_normal_color = A_NORMAL;
++static int graphics_highlight_color = A_REVERSE;
++static int graphics_current_color = A_NORMAL;
++static color_state graphics_color_state = COLOR_STATE_STANDARD;
++
++
++/* graphics local functions */
++static void graphics_setxy(int col, int row);
++static void graphics_scroll();
++
++/* FIXME: where do these really belong? */
++static inline void outb(unsigned short port, unsigned char val)
++{
++ __asm __volatile ("outb %0,%1"::"a" (val), "d" (port));
++}
++
++static void MapMask(int value) {
++ outb(0x3c4, 2);
++ outb(0x3c5, value);
++}
++
++/* bit mask register */
++static void BitMask(int value) {
++ outb(0x3ce, 8);
++ outb(0x3cf, value);
++}
++
++
++
++/* Set the splash image */
++void graphics_set_splash(char *splashfile) {
++ grub_strcpy(splashimage, splashfile);
++}
++
++/* Get the current splash image */
++char *graphics_get_splash(void) {
++ return splashimage;
++}
++
++/* Initialize a vga16 graphics display with the palette based off of
++ * the image in splashimage. If the image doesn't exist, leave graphics
++ * mode. */
++int graphics_init()
++{
++ if (!graphics_inited) {
++ saved_videomode = set_videomode(0x12);
++ }
++
++ if (!read_image(splashimage)) {
++ set_videomode(saved_videomode);
++ grub_printf("failed to read image\n");
++ return 0;
++ }
++
++ font8x16 = (unsigned char*)graphics_get_font();
++
++ graphics_inited = 1;
++
++ /* make sure that the highlight color is set correctly */
++ graphics_highlight_color = ((graphics_normal_color >> 4) |
++ ((graphics_normal_color & 0xf) << 4));
++
++ return 1;
++}
++
++/* Leave graphics mode */
++void graphics_end(void)
++{
++ if (graphics_inited) {
++ set_videomode(saved_videomode);
++ graphics_inited = 0;
++ }
++}
++
++/* Print ch on the screen. Handle any needed scrolling or the like */
++void graphics_putchar(int ch) {
++ ch &= 0xff;
++
++ graphics_cursor(0);
++
++ if (ch == '\n') {
++ if (fonty + 1 < y1)
++ graphics_setxy(fontx, fonty + 1);
++ else
++ graphics_scroll();
++ graphics_cursor(1);
++ return;
++ } else if (ch == '\r') {
++ graphics_setxy(x0, fonty);
++ graphics_cursor(1);
++ return;
++ }
++
++ graphics_cursor(0);
++
++ text[fonty * 80 + fontx] = ch;
++ text[fonty * 80 + fontx] &= 0x00ff;
++ if (graphics_current_color & 0xf0)
++ text[fonty * 80 + fontx] |= 0x100;
++
++ graphics_cursor(0);
++
++ if ((fontx + 1) >= x1) {
++ graphics_setxy(x0, fonty);
++ if (fonty + 1 < y1)
++ graphics_setxy(x0, fonty + 1);
++ else
++ graphics_scroll();
++ } else {
++ graphics_setxy(fontx + 1, fonty);
++ }
++
++ graphics_cursor(1);
++}
++
++/* get the current location of the cursor */
++int graphics_getxy(void) {
++ return (fontx << 8) | fonty;
++}
++
++void graphics_gotoxy(int x, int y) {
++ graphics_cursor(0);
++
++ graphics_setxy(x, y);
++
++ graphics_cursor(1);
++}
++
++void graphics_cls(void) {
++ int i;
++ unsigned char *mem, *s1, *s2, *s4, *s8;
++
++ graphics_cursor(0);
++ graphics_gotoxy(x0, y0);
++
++ mem = (unsigned char*)VIDEOMEM;
++ s1 = (unsigned char*)VSHADOW1;
++ s2 = (unsigned char*)VSHADOW2;
++ s4 = (unsigned char*)VSHADOW4;
++ s8 = (unsigned char*)VSHADOW8;
++
++ for (i = 0; i < 80 * 30; i++)
++ text[i] = ' ';
++ graphics_cursor(1);
++
++ BitMask(0xff);
++
++ /* plano 1 */
++ MapMask(1);
++ grub_memcpy(mem, s1, 38400);
++
++ /* plano 2 */
++ MapMask(2);
++ grub_memcpy(mem, s2, 38400);
++
++ /* plano 3 */
++ MapMask(4);
++ grub_memcpy(mem, s4, 38400);
++
++ /* plano 4 */
++ MapMask(8);
++ grub_memcpy(mem, s8, 38400);
++
++ MapMask(15);
++
++}
++
++void graphics_setcolorstate (color_state state) {
++ switch (state) {
++ case COLOR_STATE_STANDARD:
++ graphics_current_color = graphics_standard_color;
++ break;
++ case COLOR_STATE_NORMAL:
++ graphics_current_color = graphics_normal_color;
++ break;
++ case COLOR_STATE_HIGHLIGHT:
++ graphics_current_color = graphics_highlight_color;
++ break;
++ default:
++ graphics_current_color = graphics_standard_color;
++ break;
++ }
++
++ graphics_color_state = state;
++}
++
++void graphics_setcolor (int normal_color, int highlight_color) {
++ graphics_normal_color = normal_color;
++ graphics_highlight_color = highlight_color;
++
++ graphics_setcolorstate (graphics_color_state);
++}
++
++void graphics_setcursor (int on) {
++ /* FIXME: we don't have a cursor in graphics */
++ return;
++}
++
++/* Read in the splashscreen image and set the palette up appropriately.
++ * Format of splashscreen is an xpm (can be gzipped) with 16 colors and
++ * 640x480. */
++int read_image(char *s)
++{
++ char buf[32], pal[16];
++ unsigned char c, base, mask, *s1, *s2, *s4, *s8;
++ unsigned i, len, idx, colors, x, y, width, height;
++
++ if (!grub_open(s))
++ return 0;
++
++ /* read header */
++ if (!grub_read((char*)&buf, 10) || grub_memcmp(buf, "/* XPM */\n", 10)) {
++ grub_close();
++ return 0;
++ }
++
++ /* parse info */
++ while (grub_read(&c, 1)) {
++ if (c == '"')
++ break;
++ }
++
++ while (grub_read(&c, 1) && (c == ' ' || c == '\t'))
++ ;
++
++ i = 0;
++ width = c - '0';
++ while (grub_read(&c, 1)) {
++ if (c >= '0' && c <= '9')
++ width = width * 10 + c - '0';
++ else
++ break;
++ }
++ while (grub_read(&c, 1) && (c == ' ' || c == '\t'))
++ ;
++
++ height = c - '0';
++ while (grub_read(&c, 1)) {
++ if (c >= '0' && c <= '9')
++ height = height * 10 + c - '0';
++ else
++ break;
++ }
++ while (grub_read(&c, 1) && (c == ' ' || c == '\t'))
++ ;
++
++ colors = c - '0';
++ while (grub_read(&c, 1)) {
++ if (c >= '0' && c <= '9')
++ colors = colors * 10 + c - '0';
++ else
++ break;
++ }
++
++ base = 0;
++ while (grub_read(&c, 1) && c != '"')
++ ;
++
++ /* palette */
++ for (i = 0, idx = 1; i < colors; i++) {
++ len = 0;
++
++ while (grub_read(&c, 1) && c != '"')
++ ;
++ grub_read(&c, 1); /* char */
++ base = c;
++ grub_read(buf, 4); /* \t c # */
++
++ while (grub_read(&c, 1) && c != '"') {
++ if (len < sizeof(buf))
++ buf[len++] = c;
++ }
++
++ if (len == 6 && idx < 15) {
++ int r = ((hex(buf[0]) << 4) | hex(buf[1])) >> 2;
++ int g = ((hex(buf[2]) << 4) | hex(buf[3])) >> 2;
++ int b = ((hex(buf[4]) << 4) | hex(buf[5])) >> 2;
++
++ pal[idx] = base;
++ graphics_set_palette(idx, r, g, b);
++ ++idx;
++ }
++ }
++
++ x = y = len = 0;
++
++ s1 = (unsigned char*)VSHADOW1;
++ s2 = (unsigned char*)VSHADOW2;
++ s4 = (unsigned char*)VSHADOW4;
++ s8 = (unsigned char*)VSHADOW8;
++
++ for (i = 0; i < 38400; i++)
++ s1[i] = s2[i] = s4[i] = s8[i] = 0;
++
++ /* parse xpm data */
++ while (y < height) {
++ while (1) {
++ if (!grub_read(&c, 1)) {
++ grub_close();
++ return 0;
++ }
++ if (c == '"')
++ break;
++ }
++
++ while (grub_read(&c, 1) && c != '"') {
++ for (i = 1; i < 15; i++)
++ if (pal[i] == c) {
++ c = i;
++ break;
++ }
++
++ mask = 0x80 >> (x & 7);
++ if (c & 1)
++ s1[len + (x >> 3)] |= mask;
++ if (c & 2)
++ s2[len + (x >> 3)] |= mask;
++ if (c & 4)
++ s4[len + (x >> 3)] |= mask;
++ if (c & 8)
++ s8[len + (x >> 3)] |= mask;
++
++ if (++x >= 640) {
++ x = 0;
++
++ if (y < 480)
++ len += 80;
++ ++y;
++ }
++ }
++ }
++
++ grub_close();
++
++ graphics_set_palette(0, (background >> 16), (background >> 8) & 63,
++ background & 63);
++ graphics_set_palette(15, (foreground >> 16), (foreground >> 8) & 63,
++ foreground & 63);
++ graphics_set_palette(0x11, (border >> 16), (border >> 8) & 63,
++ border & 63);
++
++ return 1;
++}
++
++
++/* Convert a character which is a hex digit to the appropriate integer */
++int hex(int v)
++{
++ if (v >= 'A' && v <= 'F')
++ return (v - 'A' + 10);
++ if (v >= 'a' && v <= 'f')
++ return (v - 'a' + 10);
++ return (v - '0');
++}
++
++
++/* move the graphics cursor location to col, row */
++static void graphics_setxy(int col, int row) {
++ if (col >= x0 && col < x1) {
++ fontx = col;
++ cursorX = col << 3;
++ }
++ if (row >= y0 && row < y1) {
++ fonty = row;
++ cursorY = row << 4;
++ }
++}
++
++/* scroll the screen */
++static void graphics_scroll() {
++ int i, j;
++
++ /* we don't want to scroll recursively... that would be bad */
++ if (no_scroll)
++ return;
++ no_scroll = 1;
++
++ /* move everything up a line */
++ for (j = y0 + 1; j < y1; j++) {
++ graphics_gotoxy(x0, j - 1);
++ for (i = x0; i < x1; i++) {
++ graphics_putchar(text[j * 80 + i]);
++ }
++ }
++
++ /* last line should be blank */
++ graphics_gotoxy(x0, y1 - 1);
++ for (i = x0; i < x1; i++)
++ graphics_putchar(' ');
++ graphics_setxy(x0, y1 - 1);
++
++ no_scroll = 0;
++}
++
++
++void graphics_cursor(int set) {
++ unsigned char *pat, *mem, *ptr, chr[16 << 2];
++ int i, ch, invert, offset;
++
++ if (set && no_scroll)
++ return;
++
++ offset = cursorY * 80 + fontx;
++ ch = text[fonty * 80 + fontx] & 0xff;
++ invert = (text[fonty * 80 + fontx] & 0xff00) != 0;
++ pat = font8x16 + (ch << 4);
++
++ mem = (unsigned char*)VIDEOMEM + offset;
++
++ if (!set) {
++ for (i = 0; i < 16; i++) {
++ unsigned char mask = pat[i];
++
++ if (!invert) {
++ chr[i ] = ((unsigned char*)VSHADOW1)[offset];
++ chr[16 + i] = ((unsigned char*)VSHADOW2)[offset];
++ chr[32 + i] = ((unsigned char*)VSHADOW4)[offset];
++ chr[48 + i] = ((unsigned char*)VSHADOW8)[offset];
++
++ /* FIXME: if (shade) */
++ if (1) {
++ if (ch == DISP_VERT || ch == DISP_LL ||
++ ch == DISP_UR || ch == DISP_LR) {
++ unsigned char pmask = ~(pat[i] >> 1);
++
++ chr[i ] &= pmask;
++ chr[16 + i] &= pmask;
++ chr[32 + i] &= pmask;
++ chr[48 + i] &= pmask;
++ }
++ if (i > 0 && ch != DISP_VERT) {
++ unsigned char pmask = ~(pat[i - 1] >> 1);
++
++ chr[i ] &= pmask;
++ chr[16 + i] &= pmask;
++ chr[32 + i] &= pmask;
++ chr[48 + i] &= pmask;
++ if (ch == DISP_HORIZ || ch == DISP_UR || ch == DISP_LR) {
++ pmask = ~pat[i - 1];
++
++ chr[i ] &= pmask;
++ chr[16 + i] &= pmask;
++ chr[32 + i] &= pmask;
++ chr[48 + i] &= pmask;
++ }
++ }
++ }
++ chr[i ] |= mask;
++ chr[16 + i] |= mask;
++ chr[32 + i] |= mask;
++ chr[48 + i] |= mask;
++
++ offset += 80;
++ }
++ else {
++ chr[i ] = mask;
++ chr[16 + i] = mask;
++ chr[32 + i] = mask;
++ chr[48 + i] = mask;
++ }
++ }
++ }
++ else {
++ MapMask(15);
++ ptr = mem;
++ for (i = 0; i < 16; i++, ptr += 80) {
++ cursorBuf[i] = pat[i];
++ *ptr = ~pat[i];
++ }
++ return;
++ }
++
++ offset = 0;
++ for (i = 1; i < 16; i <<= 1, offset += 16) {
++ int j;
++
++ MapMask(i);
++ ptr = mem;
++ for (j = 0; j < 16; j++, ptr += 80)
++ *ptr = chr[j + offset];
++ }
++
++ MapMask(15);
++}
++
++#endif /* SUPPORT_GRAPHICS */
+diff -urpN grub-0.97/stage2/graphics.h grub-0.97-gfx/stage2/graphics.h
+--- grub-0.97/stage2/graphics.h 1969-12-31 20:00:00.000000000 -0400
++++ grub-0.97-gfx/stage2/graphics.h 2005-10-13 16:27:35.000000000 -0400
+@@ -0,0 +1,42 @@
++/* graphics.h - graphics console interface */
++/*
++ * GRUB -- GRand Unified Bootloader
++ * Copyright (C) 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 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 GRAPHICS_H
++#define GRAPHICS_H
++
++/* magic constant */
++#define VIDEOMEM 0xA0000
++
++/* function prototypes */
++char *graphics_get_splash(void);
++
++int read_image(char *s);
++void graphics_cursor(int set);
++
++/* function prototypes for asm functions */
++void * graphics_get_font();
++void graphics_set_palette(int idx, int red, int green, int blue);
++void set_int1c_handler();
++void unset_int1c_handler();
++
++extern short cursorX, cursorY;
++extern char cursorBuf[16];
++
++#endif /* GRAPHICS_H */
+diff -urpN grub-0.97/stage2/shared.h grub-0.97-gfx/stage2/shared.h
+--- grub-0.97/stage2/shared.h 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/shared.h 2005-10-13 16:27:35.000000000 -0400
+@@ -871,6 +871,7 @@ int grub_sprintf (char *buffer, const ch
+ int grub_tolower (int c);
+ int grub_isspace (int c);
+ int grub_strncat (char *s1, const char *s2, int n);
++void grub_memcpy(void *dest, const void *src, int len);
+ void *grub_memmove (void *to, const void *from, int len);
+ void *grub_memset (void *start, int c, int len);
+ int grub_strncat (char *s1, const char *s2, int n);
+diff -urpN grub-0.97/stage2/stage2.c grub-0.97-gfx/stage2/stage2.c
+--- grub-0.97/stage2/stage2.c 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/stage2.c 2005-10-13 16:27:35.000000000 -0400
+@@ -233,6 +233,7 @@ run_menu (char *menu_entries, char *conf
+ {
+ int c, time1, time2 = -1, first_entry = 0;
+ char *cur_entry = 0;
++ struct term_entry *prev_term = NULL;
+
+ /*
+ * Main loop for menu UI.
+@@ -714,6 +715,15 @@ restart:
+
+ cls ();
+ setcursor (1);
++ /* if our terminal needed initialization, we should shut it down
++ * before booting the kernel, but we want to save what it was so
++ * we can come back if needed */
++ prev_term = current_term;
++ if (current_term->shutdown)
++ {
++ (*current_term->shutdown)();
++ current_term = term_table; /* assumption: console is first */
++ }
+
+ while (1)
+ {
+@@ -748,6 +758,13 @@ restart:
+ break;
+ }
+
++ /* if we get back here, we should go back to what our term was before */
++ current_term = prev_term;
++ if (current_term->startup)
++ /* if our terminal fails to initialize, fall back to console since
++ * it should always work */
++ if ((*current_term->startup)() == 0)
++ current_term = term_table; /* we know that console is first */
+ show_menu = 1;
+ goto restart;
+ }
+@@ -1050,6 +1067,10 @@ cmain (void)
+ while (is_preset);
+ }
+
++ /* go ahead and make sure the terminal is setup */
++ if (current_term->startup)
++ (*current_term->startup)();
++
+ if (! num_entries)
+ {
+ /* If no acceptable config file, goto command-line, starting
+diff -urpN grub-0.97/stage2/term.h grub-0.97-gfx/stage2/term.h
+--- grub-0.97/stage2/term.h 2005-10-13 16:27:23.000000000 -0400
++++ grub-0.97-gfx/stage2/term.h 2005-10-13 16:27:35.000000000 -0400
+@@ -60,6 +60,8 @@ struct term_entry
+ const char *name;
+ /* The feature flags defined above. */
+ unsigned long flags;
++ /* Default for maximum number of lines if not specified */
++ unsigned short max_lines;
+ /* Put a character. */
+ void (*putchar) (int c);
+ /* Check if any input character is available. */
+@@ -79,6 +81,11 @@ struct term_entry
+ void (*setcolor) (int normal_color, int highlight_color);
+ /* Turn on/off the cursor. */
+ int (*setcursor) (int on);
++
++ /* function to start a terminal */
++ int (*startup) (void);
++ /* function to use to shutdown a terminal */
++ void (*shutdown) (void);
+ };
+
+ /* This lists up available terminals. */
+@@ -124,4 +131,23 @@ void hercules_setcolor (int normal_color
+ int hercules_setcursor (int on);
+ #endif
+
++#ifdef SUPPORT_GRAPHICS
++extern int foreground, background, border, graphics_inited;
++
++void graphics_set_splash(char *splashfile);
++int set_videomode (int mode);
++void graphics_putchar (int c);
++int graphics_getxy(void);
++void graphics_gotoxy(int x, int y);
++void graphics_cls(void);
++void graphics_setcolorstate (color_state state);
++void graphics_setcolor (int normal_color, int highlight_color);
++void graphics_setcursor (int on);
++int graphics_init(void);
++void graphics_end(void);
++
++int hex(int v);
++void graphics_set_palette(int idx, int red, int green, int blue);
++#endif /* SUPPORT_GRAPHICS */
++
+ #endif /* ! GRUB_TERM_HEADER */
diff --git a/abs/not_built/core/grub-gfx/grub-gfx.install b/abs/not_built/core/grub-gfx/grub-gfx.install
new file mode 100644
index 0000000..6c73b15
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/grub-gfx.install
@@ -0,0 +1,46 @@
+# arg 1: the new package version
+pre_install() {
+ /bin/true
+}
+
+# arg 1: the new package version
+post_install() {
+ echo
+ echo "*********************************************************************"
+ echo "You need to run install-grub /dev/device or grub-install /dev/device "
+ echo "to update grub loader."
+ echo "Note: Device should be any of these (sda, sdb, hda, hdb, sda1, hda1) "
+ echo "If you are in doubt, see your old grub config file (menu.lst.pacsave)"
+ echo "********************************************************************"
+ echo
+}
+
+# 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() {
+ echo
+ echo "*********************************************************************"
+ echo "You need to run install-grub /dev/device or grub-install /dev/device "
+ echo "to update grub loader."
+ echo "Note: Device should be any of these (sda, sdb, hda, hdb, sda1, hda1) "
+ echo "If you are in doubt, see your old grub config file (menu.lst.pacsave)"
+ echo "********************************************************************"
+ echo
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
diff --git a/abs/not_built/core/grub-gfx/grub-inode-size.patch b/abs/not_built/core/grub-gfx/grub-inode-size.patch
new file mode 100644
index 0000000..bef3bc1
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/grub-inode-size.patch
@@ -0,0 +1,94 @@
+diff -Nrup a/stage2/fsys_ext2fs.c b/stage2/fsys_ext2fs.c
+--- a/stage2/fsys_ext2fs.c 2004-08-08 20:19:18.000000000 +0200
++++ b/stage2/fsys_ext2fs.c 2008-01-30 14:27:20.000000000 +0100
+@@ -79,7 +79,52 @@ struct ext2_super_block
+ __u32 s_rev_level; /* Revision level */
+ __u16 s_def_resuid; /* Default uid for reserved blocks */
+ __u16 s_def_resgid; /* Default gid for reserved blocks */
+- __u32 s_reserved[235]; /* Padding to the end of the block */
++ /*
++ * These fields are for EXT2_DYNAMIC_REV superblocks only.
++ *
++ * Note: the difference between the compatible feature set and
++ * the incompatible feature set is that if there is a bit set
++ * in the incompatible feature set that the kernel doesn't
++ * know about, it should refuse to mount the filesystem.
++ *
++ * e2fsck's requirements are more strict; if it doesn't know
++ * about a feature in either the compatible or incompatible
++ * feature set, it must abort and not try to meddle with
++ * things it doesn't understand...
++ */
++ __u32 s_first_ino; /* First non-reserved inode */
++ __u16 s_inode_size; /* size of inode structure */
++ __u16 s_block_group_nr; /* block group # of this superblock */
++ __u32 s_feature_compat; /* compatible feature set */
++ __u32 s_feature_incompat; /* incompatible feature set */
++ __u32 s_feature_ro_compat; /* readonly-compatible feature set */
++ __u8 s_uuid[16]; /* 128-bit uuid for volume */
++ char s_volume_name[16]; /* volume name */
++ char s_last_mounted[64]; /* directory where last mounted */
++ __u32 s_algorithm_usage_bitmap; /* For compression */
++ /*
++ * Performance hints. Directory preallocation should only
++ * happen if the EXT2_FEATURE_COMPAT_DIR_PREALLOC flag is on.
++ */
++ __u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/
++ __u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */
++ __u16 s_reserved_gdt_blocks;/* Per group table for online growth */
++ /*
++ * Journaling support valid if EXT2_FEATURE_COMPAT_HAS_JOURNAL set.
++ */
++ __u8 s_journal_uuid[16]; /* uuid of journal superblock */
++ __u32 s_journal_inum; /* inode number of journal file */
++ __u32 s_journal_dev; /* device number of journal file */
++ __u32 s_last_orphan; /* start of list of inodes to delete */
++ __u32 s_hash_seed[4]; /* HTREE hash seed */
++ __u8 s_def_hash_version; /* Default hash version to use */
++ __u8 s_jnl_backup_type; /* Default type of journal backup */
++ __u16 s_reserved_word_pad;
++ __u32 s_default_mount_opts;
++ __u32 s_first_meta_bg; /* First metablock group */
++ __u32 s_mkfs_time; /* When the filesystem was created */
++ __u32 s_jnl_blocks[17]; /* Backup of the journal inode */
++ __u32 s_reserved[172]; /* Padding to the end of the block */
+ };
+
+ struct ext2_group_desc
+@@ -218,6 +263,9 @@ struct ext2_dir_entry
+ #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32))
+ #define EXT2_ADDR_PER_BLOCK_BITS(s) (log2(EXT2_ADDR_PER_BLOCK(s)))
+
++#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size)
++#define EXT2_INODES_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s)/EXT2_INODE_SIZE(s))
++
+ /* linux/ext2_fs.h */
+ #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
+ /* kind of from ext2/super.c */
+@@ -553,7 +601,7 @@ ext2fs_dir (char *dirname)
+ gdp = GROUP_DESC;
+ ino_blk = gdp[desc].bg_inode_table +
+ (((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group))
+- >> log2 (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode)));
++ >> log2 (EXT2_INODES_PER_BLOCK (SUPERBLOCK)));
+ #ifdef E2DEBUG
+ printf ("inode table fsblock=%d\n", ino_blk);
+ #endif /* E2DEBUG */
+@@ -565,13 +613,12 @@ ext2fs_dir (char *dirname)
+ /* reset indirect blocks! */
+ mapblock2 = mapblock1 = -1;
+
+- raw_inode = INODE +
+- ((current_ino - 1)
+- & (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode) - 1));
++ raw_inode = (struct ext2_inode *)((char *)INODE +
++ ((current_ino - 1) & (EXT2_INODES_PER_BLOCK (SUPERBLOCK) - 1)) *
++ EXT2_INODE_SIZE (SUPERBLOCK));
+ #ifdef E2DEBUG
+ printf ("ipb=%d, sizeof(inode)=%d\n",
+- (EXT2_BLOCK_SIZE (SUPERBLOCK) / sizeof (struct ext2_inode)),
+- sizeof (struct ext2_inode));
++ EXT2_INODES_PER_BLOCK (SUPERBLOCK), EXT2_INODE_SIZE (SUPERBLOCK));
+ printf ("inode=%x, raw_inode=%x\n", INODE, raw_inode);
+ printf ("offset into inode table block=%d\n", (int) raw_inode - (int) INODE);
+ for (i = (unsigned char *) INODE; i <= (unsigned char *) raw_inode;
diff --git a/abs/not_built/core/grub-gfx/i2o.patch b/abs/not_built/core/grub-gfx/i2o.patch
new file mode 100644
index 0000000..2af846c
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/i2o.patch
@@ -0,0 +1,45 @@
+Only in grub-0.94/docs: grub.info
+Only in grub-0.94/docs: multiboot.info
+diff -ur grub-0.94/lib/device.c grub-0.94.new/lib/device.c
+--- grub-0.94/lib/device.c 2004-05-07 04:50:36.375238696 +0200
++++ grub-0.94.new/lib/device.c 2004-05-07 04:48:57.611253104 +0200
+@@ -419,6 +419,12 @@
+ {
+ sprintf (name, "/dev/rd/c%dd%d", controller, drive);
+ }
++
++static void
++get_i2o_disk_name (char *name, int unit)
++{
++ sprintf (name, "/dev/i2o/hd%c", unit + 'a');
++}
+ #endif
+
+ /* Check if DEVICE can be read. If an error occurs, return zero,
+@@ -789,6 +795,26 @@
+ }
+ }
+ }
++
++ /* I2O disks. */
++ for (i = 0; i < 8; i++)
++ {
++ char name[16];
++
++ get_i2o_disk_name (name, i);
++ if (check_device (name))
++ {
++ (*map)[num_hd + 0x80] = strdup (name);
++ assert ((*map)[num_hd + 0x80]);
++
++ /* If the device map file is opened, write the map. */
++ if (fp)
++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
++
++ num_hd++;
++ }
++ }
++
+ #endif /* __linux__ */
+
+ /* OK, close the device map file if opened. */
diff --git a/abs/not_built/core/grub-gfx/install-grub b/abs/not_built/core/grub-gfx/install-grub
new file mode 100755
index 0000000..3eb7ce5
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/install-grub
@@ -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 <install_device> [boot_device]"
+ echo
+ echo "where <install_device> 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 <<EOF
+quit
+EOF
+}
+
+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
+}
+
+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
+
+ 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 <<EOF
+root $bootpart
+setup $bootdev
+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
+ 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/not_built/core/grub-gfx/intelmac.patch b/abs/not_built/core/grub-gfx/intelmac.patch
new file mode 100644
index 0000000..a3fabc7
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/intelmac.patch
@@ -0,0 +1,67 @@
+--- grub-0.97.orig/stage2/asm.S 2004-06-19 18:55:22.000000000 +0200
++++ grub-0.97/stage2/asm.S 2006-04-21 11:10:52.000000000 +0200
+@@ -1651,7 +1651,29 @@
+ jnz 3f
+ ret
+
+-3: /* use keyboard controller */
++3: /*
++ * try to switch gateA20 using PORT92, the "Fast A20 and Init"
++ * register
++ */
++ mov $0x92, %dx
++ inb %dx, %al
++ /* skip the port92 code if it's unimplemented (read returns 0xff) */
++ cmpb $0xff, %al
++ jz 6f
++
++ /* set or clear bit1, the ALT_A20_GATE bit */
++ movb 4(%esp), %ah
++ testb %ah, %ah
++ jz 4f
++ orb $2, %al
++ jmp 5f
++4: and $0xfd, %al
++
++ /* clear the INIT_NOW bit don't accidently reset the machine */
++5: and $0xfe, %al
++ outb %al, %dx
++
++6: /* use keyboard controller */
+ pushl %eax
+
+ call gloop1
+@@ -1661,9 +1683,12 @@
+
+ gloopint1:
+ inb $K_STATUS
++ cmpb $0xff, %al
++ jz gloopint1_done
+ andb $K_IBUF_FUL, %al
+ jnz gloopint1
+
++gloopint1_done:
+ movb $KB_OUTPUT_MASK, %al
+ cmpb $0, 0x8(%esp)
+ jz gdoit
+@@ -1684,6 +1709,8 @@
+
+ gloop1:
+ inb $K_STATUS
++ cmpb $0xff, %al
++ jz gloop2ret
+ andb $K_IBUF_FUL, %al
+ jnz gloop1
+
+@@ -1991,6 +2018,11 @@
+ ENTRY(console_getkey)
+ push %ebp
+
++wait_for_key:
++ call EXT_C(console_checkkey)
++ incl %eax
++ jz wait_for_key
++
+ call EXT_C(prot_to_real)
+ .code16
+
diff --git a/abs/not_built/core/grub-gfx/menu.lst b/abs/not_built/core/grub-gfx/menu.lst
new file mode 100644
index 0000000..cc2f0a8
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/menu.lst
@@ -0,0 +1,47 @@
+# Config file for GRUB - The GNU GRand Unified Bootloader
+# /boot/grub/menu.lst
+
+# DEVICE NAME CONVERSIONS
+#
+# Linux Grub
+# -------------------------
+# /dev/fd0 (fd0)
+# /dev/hda (hd0)
+# /dev/hdb2 (hd1,1)
+# /dev/hda3 (hd0,2)
+#
+
+# FRAMEBUFFER RESOLUTION SETTINGS
+# +-------------------------------------------------+
+# | 640x480 800x600 1024x768 1280x1024
+# ----+--------------------------------------------
+# 256 | 0x301=769 0x303=771 0x305=773 0x307=775
+# 32K | 0x310=784 0x313=787 0x316=790 0x319=793
+# 64K | 0x311=785 0x314=788 0x317=791 0x31A=794
+# 16M | 0x312=786 0x315=789 0x318=792 0x31B=795
+# +-------------------------------------------------+
+
+# general configuration:
+timeout 5
+default 0
+color light-blue/black light-cyan/blue
+splashimage /boot/grub/splash.xpm.gz
+
+# boot sections follow
+# each is implicitly numbered from 0 in the order of appearance below
+#
+# TIP: If you want a 1024x768 framebuffer, add "vga=773" to your kernel line.
+#
+#-*
+
+# (0) Arch Linux
+title Arch Linux [/boot/vmlinuz26]
+root (hd0,0)
+kernel /vmlinuz26 root=/dev/hda3 ro
+initrd /kernel26.img
+
+# (1) Windows
+#title Windows
+#rootnoverify (hd0,0)
+#makeactive
+#chainloader +1
diff --git a/abs/not_built/core/grub-gfx/more-raid.patch b/abs/not_built/core/grub-gfx/more-raid.patch
new file mode 100644
index 0000000..39db234
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/more-raid.patch
@@ -0,0 +1,100 @@
+--- grub-0.95/lib/device.c.moreraid 2004-11-30 17:09:36.736099360 -0500
++++ grub-0.95/lib/device.c 2004-11-30 17:12:17.319686944 -0500
+@@ -544,6 +544,17 @@
+ }
+
+ static void
++get_cciss_disk_name (char * name, int controller, int drive)
++{
++ sprintf (name, "/dev/cciss/c%dd%d", controller, drive);
++}
++
++static void
++get_cpqarray_disk_name (char * name, int controller, int drive)
++{
++ sprintf (name, "/dev/ida/c%dd%d", controller, drive);
++}
++static void
+ get_ataraid_disk_name (char *name, int unit)
+ {
+ sprintf (name, "/dev/ataraid/d%c", unit + '0');
+@@ -920,7 +931,7 @@
+
+ for (controller = 0; controller < 8; controller++)
+ {
+- for (drive = 0; drive < 15; drive++)
++ for (drive = 0; drive < 32; drive++)
+ {
+ char name[24];
+
+@@ -940,6 +951,70 @@
+ }
+ }
+ #endif /* __linux__ */
++
++#ifdef __linux__
++ /* This is for cciss - we have
++ /dev/cciss/c<controller>d<logical drive>p<partition>.
++
++ cciss driver currently supports up to 8 controllers, 16 logical
++ drives, and 7 partitions. */
++ {
++ int controller, drive;
++
++ for (controller = 0; controller < 8; controller++)
++ {
++ for (drive = 0; drive < 16; drive++)
++ {
++ char name[24];
++
++ get_cciss_disk_name (name, controller, drive);
++ if (check_device (name))
++ {
++ (*map)[num_hd + 0x80] = strdup (name);
++ assert ((*map)[num_hd + 0x80]);
++
++ /* If the device map file is opened, write the map. */
++ if (fp)
++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
++
++ num_hd++;
++ }
++ }
++ }
++ }
++#endif /* __linux__ */
++
++#ifdef __linux__
++ /* This is for cpqarray - we have
++ /dev/ida/c<controller>d<logical drive>p<partition>.
++
++ cpqarray driver currently supports up to 8 controllers, 16 logical
++ drives, and 15 partitions. */
++ {
++ int controller, drive;
++
++ for (controller = 0; controller < 8; controller++)
++ {
++ for (drive = 0; drive < 15; drive++)
++ {
++ char name[24];
++
++ get_cpqarray_disk_name (name, controller, drive);
++ if (check_device (name))
++ {
++ (*map)[num_hd + 0x80] = strdup (name);
++ assert ((*map)[num_hd + 0x80]);
++
++ /* If the device map file is opened, write the map. */
++ if (fp)
++ fprintf (fp, "(hd%d)\t%s\n", num_hd, name);
++
++ num_hd++;
++ }
++ }
++ }
++ }
++#endif /* __linux__ */
+
+ /* OK, close the device map file if opened. */
+ if (fp)
diff --git a/abs/not_built/core/grub-gfx/special-devices.patch b/abs/not_built/core/grub-gfx/special-devices.patch
new file mode 100644
index 0000000..894f3e8
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/special-devices.patch
@@ -0,0 +1,18 @@
+--- grub-0.93/lib/device.c.raid 2002-05-20 05:53:46.000000000 -0400
++++ grub-0.93/lib/device.c 2002-12-28 23:24:10.000000000 -0500
+@@ -689,7 +689,14 @@
+ if (strcmp (dev + strlen(dev) - 5, "/disc") == 0)
+ strcpy (dev + strlen(dev) - 5, "/part");
+ }
+- sprintf (dev + strlen(dev), "%d", ((partition >> 16) & 0xFF) + 1);
++
++ sprintf (dev + strlen(dev), "%s%d",
++ /* Compaq smart and others */
++ (strncmp(dev, "/dev/ida/", 9) == 0 ||
++ strncmp(dev, "/dev/ataraid/", 13) == 0 ||
++ strncmp(dev, "/dev/cciss/", 11) == 0 ||
++ strncmp(dev, "/dev/rd/", 8) == 0) ? "p" : "",
++ ((partition >> 16) & 0xFF) + 1);
+
+ /* Open the partition. */
+ fd = open (dev, O_RDWR);
diff --git a/abs/not_built/core/grub-gfx/splash.xpm.gz b/abs/not_built/core/grub-gfx/splash.xpm.gz
new file mode 100644
index 0000000..e44af43
--- /dev/null
+++ b/abs/not_built/core/grub-gfx/splash.xpm.gz
Binary files differ
diff --git a/abs/not_built/core/hal-info/PKGBUILD b/abs/not_built/core/hal-info/PKGBUILD
new file mode 100644
index 0000000..ca6f5ad
--- /dev/null
+++ b/abs/not_built/core/hal-info/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 61557 2009-12-19 19:17:15Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=hal-info
+_date=20091130
+pkgver=0.${_date}
+pkgrel=1
+pkgdesc="Hardware Abstraction Layer information files"
+arch=(any)
+license=('GPL' 'custom')
+url="http://www.freedesktop.org/wiki/Software/hal"
+source=(http://hal.freedesktop.org/releases/hal-info-${_date}.tar.gz)
+md5sums=('34375489a02a00b250fdc0b280be11b8')
+
+build() {
+ cd "${srcdir}/${pkgname}-${_date}"
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --enable-killswitch-dell-wlan=no --enable-killswitch-dell-bluetooth=no \
+ --enable-killswitch-dell-wwan=no || 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/not_built/core/hal/PKGBUILD b/abs/not_built/core/hal/PKGBUILD
new file mode 100644
index 0000000..6e928fd
--- /dev/null
+++ b/abs/not_built/core/hal/PKGBUILD
@@ -0,0 +1,83 @@
+# $Id: PKGBUILD 82401 2010-06-10 21:48:17Z thomas $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Link Dupont <link@subpop.net>
+
+pkgname=hal
+pkgver=0.5.14
+pkgrel=4
+pkgdesc="Hardware Abstraction Layer"
+arch=(i686 x86_64)
+license=('GPL' 'custom')
+url="http://www.freedesktop.org/wiki/Software/hal"
+depends=('dbus-glib>=0.82' 'libusb>=0.1.12' 'udev>=146' 'filesystem>=0.7.1-5' 'hal-info>=0.20090716' 'eject' 'dmidecode' 'pciutils>=3.0.2' 'usbutils>=0.73-5' 'pm-utils>=1.2.5' 'consolekit>=0.4.1' 'util-linux-ng>=2.16')
+makedepends=('pkgconfig' 'gperf')
+options=('!libtool' '!makeflags')
+install=hal.install
+source=(http://hal.freedesktop.org/releases/${pkgname}-${pkgver}.tar.gz
+ hal
+ hal-0.5.9-hide-diagnostic.patch
+ hal-remove-dell-killswitch.patch
+ hal-KVM-evdev.patch
+ hal-HDAPS-blacklist.patch
+ hal-xen-unignore-axes.patch
+ hal-use-at-console.patch
+ fix-libusb-detection.patch
+ dbus-error-init.patch
+ path-max.patch
+ handle-input-touchpad.patch
+ macbook-fix-ioperm.patch)
+md5sums=('e9163df591a6f38f59fdbfe33e73bf20'
+ '277e96ac130d7bfce0b30f0b80db8782'
+ '4d4b6801a1cedca22b8bdd9db73b16fb'
+ '6d87c3e63184ae3a69caafc846f538a3'
+ '6507e5091ee2d11a87ae738a8e2caecb'
+ '1171c2d83b76059f2da7a3538e08fa4e'
+ '52bd305299aa22ae07f1a862c22d30fa'
+ '3f11234fb5e5044fbfc5199ec65b182c'
+ 'da088f12cfc2d190bbf95b747e19ab9e'
+ '634f4ec2203eff7de8fa2ed2c6b9cbe0'
+ 'f8c9b3a40d03907b498feef571d42466'
+ '0575677614db0632b17b1a719798c7e0'
+ '46a5db3ff896ee37762aa8d7e70942c4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/hal-0.5.9-hide-diagnostic.patch" || return 1
+ patch -Np1 -i "${srcdir}/hal-remove-dell-killswitch.patch" || return 1
+ patch -Np1 -i "${srcdir}/hal-KVM-evdev.patch" || return 1
+ patch -Np1 -i "${srcdir}/hal-HDAPS-blacklist.patch" || return 1
+ patch -Np1 -i "${srcdir}/hal-xen-unignore-axes.patch" || return 1
+ patch -Np1 -i "${srcdir}/hal-use-at-console.patch" || return 1
+ patch -Np1 -i "${srcdir}/fix-libusb-detection.patch" || return 1
+ patch -Np1 -i "${srcdir}/dbus-error-init.patch" || return 1
+ patch -Np1 -i "${srcdir}/path-max.patch" || return 1
+ patch -Np1 -i "${srcdir}/handle-input-touchpad.patch" || return 1
+ patch -Np1 -i "${srcdir}/macbook-fix-ioperm.patch" || return 1
+
+ libtoolize --force || return 1
+ aclocal || return 1
+ autoconf || return 1
+ automake || return 1
+
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --libexecdir=/usr/lib/hal --with-udev-prefix=/etc \
+ --enable-static=no --disable-acpi-ibm \
+ --disable-docbook-docs --disable-console-kit \
+ --disable-policy-kit --disable-acl-management \
+ --enable-umount-helper --disable-smbios \
+ --with-hal-user=hal --with-hal-group=hal \
+ --with-pid-file=/var/run/hald.pid \
+ --disable-gtk-doc || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/etc/rc.d"
+ install -m755 -d "${pkgdir}/media" || return 1
+ install -m755 "${srcdir}/hal" "${pkgdir}/etc/rc.d/" || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+
+ # Fix udev rule location
+ install -d -m755 "${pkgdir}/lib"
+ mv "${pkgdir}/etc/udev" "${pkgdir}/lib/"
+}
diff --git a/abs/not_built/core/hal/cryptsetup_location.patch b/abs/not_built/core/hal/cryptsetup_location.patch
new file mode 100644
index 0000000..1e4f5ef
--- /dev/null
+++ b/abs/not_built/core/hal/cryptsetup_location.patch
@@ -0,0 +1,36 @@
+diff -Naur hal-0.5.8.1/tools/linux/hal-luks-remove-linux hal-0.5.8.1-new/tools/linux/hal-luks-remove-linux
+--- hal-0.5.8.1/tools/linux/hal-luks-remove-linux 2006-09-19 22:23:25.000000000 +0200
++++ hal-0.5.8.1-new/tools/linux/hal-luks-remove-linux 2007-02-11 13:04:46.000000000 +0100
+@@ -6,7 +6,7 @@
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License version 2.
+
+-CRYPTSETUP=/sbin/cryptsetup
++CRYPTSETUP=/usr/sbin/cryptsetup
+
+ echo LUKS cryptotext device $HAL_PROP_INFO_UDI is going away
+
+diff -Naur hal-0.5.8.1/tools/linux/hal-luks-setup-linux hal-0.5.8.1-new/tools/linux/hal-luks-setup-linux
+--- hal-0.5.8.1/tools/linux/hal-luks-setup-linux 2006-09-19 22:23:25.000000000 +0200
++++ hal-0.5.8.1-new/tools/linux/hal-luks-setup-linux 2007-02-11 13:04:45.000000000 +0100
+@@ -9,7 +9,7 @@
+ read password
+ PASSWORD=${PASSWORD//[^[:alnum:]_=[:space:]:.+-]/@}
+
+-CRYPTSETUP=/sbin/cryptsetup
++CRYPTSETUP=/usr/sbin/cryptsetup
+
+ if [ ! -f $CRYPTSETUP ]; then
+ echo org.freedesktop.Hal.Device.Volume.Crypto.SetupError >&2
+diff -Naur hal-0.5.8.1/tools/linux/hal-luks-teardown-linux hal-0.5.8.1-new/tools/linux/hal-luks-teardown-linux
+--- hal-0.5.8.1/tools/linux/hal-luks-teardown-linux 2006-09-19 22:23:25.000000000 +0200
++++ hal-0.5.8.1-new/tools/linux/hal-luks-teardown-linux 2007-02-11 13:04:44.000000000 +0100
+@@ -6,7 +6,7 @@
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License version 2.
+
+-CRYPTSETUP=/sbin/cryptsetup
++CRYPTSETUP=/usr/sbin/cryptsetup
+
+ if [ ! -f $CRYPTSETUP ]; then
+ echo org.freedesktop.Hal.Device.Volume.Crypto.TeardownError >&2
diff --git a/abs/not_built/core/hal/dbus-error-init.patch b/abs/not_built/core/hal/dbus-error-init.patch
new file mode 100644
index 0000000..fb3ad02
--- /dev/null
+++ b/abs/not_built/core/hal/dbus-error-init.patch
@@ -0,0 +1,231 @@
+From dcb2829b8eff61463b0869614ddb07b1c86cecaa Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Date: Wed, 30 Dec 2009 11:42:52 +0000
+Subject: linux/probe-input: don't use error prio init
+
+it may happen in the out: case that LIBHAL_FREE_DBUS_ERROR (&error) is
+called before the error structure is initialized via
+dbus_error_init (&error). This could lead to a segfault during startup
+as seen in dmesg:
+
+|Intel AES-NI instructions are not detected.
+|padlock: VIA PadLock not detected.
+|hald-probe-inpu[1793]: segfault at 2 ip 00007f656fb68969 sp 00007fff39eeb950 error 4 in libc-2.10.2.so[7f656faf3000+14a000]
+|hald-probe-inpu[1796]: segfault at 2 ip 00007fa2c3293969 sp 00007fffd92a5dd0 error 4 in libc-2.10.2.so[7fa2c321e000+14a000]
+|hald-probe-inpu[1797]: segfault at 2 ip 00007f1d08ba2969 sp 00007fff34244e30 error 4 in libc-2.10.2.so[7f1d08b2d000+14a000]
+|hald-probe-inpu[1799]: segfault at 2 ip 00007f35c0e3d969 sp 00007fffe5ec7ee0 error 4 in libc-2.10.2.so[7f35c0dc8000+14a000]
+|hald-probe-inpu[1800]: segfault at 2 ip 00007f931c556969 sp 00007fffe1825b60 error 4 in libc-2.10.2.so[7f931c4e1000+14a000]
+|hald-probe-inpu[1801]: segfault at 2 ip 00007f5156d9a969 sp 00007fff4e620af0 error 4 in libc-2.10.2.so[7f5156d25000+14a000]
+|RPC: Registered udp transport module.
+|RPC: Registered tcp transport module.
+
+What I run into seems to be reported as Debian #562068 [0]. This patch
+makes the segfault go away on my machine.
+
+[0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=562068
+
+Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/hald/linux/probing/probe-input.c b/hald/linux/probing/probe-input.c
+index 94e9929..cad47d3 100644
+--- a/hald/linux/probing/probe-input.c
++++ b/hald/linux/probing/probe-input.c
+@@ -70,6 +70,7 @@ main (int argc, char *argv[])
+ fd = -1;
+
+ setup_logger ();
++ dbus_error_init (&error);
+
+ button_type = getenv ("HAL_PROP_BUTTON_TYPE");
+ if (button_type == NULL)
+@@ -96,7 +97,6 @@ main (int argc, char *argv[])
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+--
+cgit v0.8.3-6-g21f6
+From baa61a879985d63f549854518ef14efd40e62e8c Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Wed, 24 Feb 2010 16:19:28 +0000
+Subject: Make sure dbus_error_init() is called before LIBHAL_FREE_DBUS_ERROR()
+
+If dbus_error_init() is not called before LIBHAL_FREE_DBUS_ERROR() is
+called on that error, then it is uninitialized and may segfault. This
+means that dbus_error_init() must be called before any "goto out" if
+"out:" calls LIBHAL_FREE_DBUS_ERROR().
+
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/hald/linux/probing/probe-hiddev.c b/hald/linux/probing/probe-hiddev.c
+index 45d2084..bffc040 100644
+--- a/hald/linux/probing/probe-hiddev.c
++++ b/hald/linux/probing/probe-hiddev.c
+@@ -57,11 +57,12 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-ieee1394-unit.c b/hald/linux/probing/probe-ieee1394-unit.c
+index 70b0f86..aaa92e2 100644
+--- a/hald/linux/probing/probe-ieee1394-unit.c
++++ b/hald/linux/probing/probe-ieee1394-unit.c
+@@ -388,6 +388,8 @@ int main (int argc, char *argv[])
+
+ setup_logger ();
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+@@ -396,7 +398,6 @@ int main (int argc, char *argv[])
+ if (ieee1394_udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-net-bluetooth.c b/hald/linux/probing/probe-net-bluetooth.c
+index 0b1b912..e911eea 100644
+--- a/hald/linux/probing/probe-net-bluetooth.c
++++ b/hald/linux/probing/probe-net-bluetooth.c
+@@ -141,6 +141,8 @@ main (int argc, char *argv[])
+ DBusMessage *reply = NULL;
+ DBusError error;
+
++ dbus_error_init (&error);
++
+ udi = getenv ("UDI");
+ if (udi == NULL)
+ goto out;
+@@ -151,8 +153,6 @@ main (int argc, char *argv[])
+
+ HAL_INFO (("Investigating '%s'", iface));
+
+- dbus_error_init (&error);
+-
+ if ((conn = dbus_bus_get (DBUS_BUS_SYSTEM, &error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-printer.c b/hald/linux/probing/probe-printer.c
+index 91ed7bc..7c6d1c6 100644
+--- a/hald/linux/probing/probe-printer.c
++++ b/hald/linux/probing/probe-printer.c
+@@ -66,6 +66,8 @@ main (int argc, char *argv[])
+ ret = 1;
+
+ setup_logger ();
++
++ dbus_error_init (&error);
+
+ udi = getenv ("UDI");
+ if (udi == NULL) {
+@@ -73,7 +75,6 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
+ HAL_ERROR (("ctx init failed"));
+ goto out;
+diff --git a/hald/linux/probing/probe-smbios.c b/hald/linux/probing/probe-smbios.c
+index 0bc9689..15c0d4f 100644
+--- a/hald/linux/probing/probe-smbios.c
++++ b/hald/linux/probing/probe-smbios.c
+@@ -129,6 +129,8 @@ main (int argc, char *argv[])
+ ret = 1;
+
+ setup_logger ();
++
++ dbus_error_init (&error);
+
+ udi = getenv ("UDI");
+ if (udi == NULL) {
+@@ -136,7 +138,6 @@ main (int argc, char *argv[])
+ goto out;
+ }
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
+ HAL_ERROR (("ctx init failed"));
+ goto out;
+diff --git a/hald/linux/probing/probe-storage.c b/hald/linux/probing/probe-storage.c
+index 824a82e..dd524ca 100644
+--- a/hald/linux/probing/probe-storage.c
++++ b/hald/linux/probing/probe-storage.c
+@@ -109,6 +109,8 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ if ((udi = getenv ("UDI")) == NULL)
+ goto out;
+ if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
+@@ -127,7 +129,6 @@ main (int argc, char *argv[])
+ else
+ only_check_for_fs = FALSE;
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+diff --git a/hald/linux/probing/probe-video4linux.c b/hald/linux/probing/probe-video4linux.c
+index cf913c0..7bc13e8 100644
+--- a/hald/linux/probing/probe-video4linux.c
++++ b/hald/linux/probing/probe-video4linux.c
+@@ -58,6 +58,8 @@ main (int argc, char *argv[])
+
+ setup_logger ();
+
++ dbus_error_init (&error);
++
+ device_file = getenv ("HAL_PROP_VIDEO4LINUX_DEVICE");
+ if (device_file == NULL)
+ goto out;
+@@ -66,7 +68,6 @@ main (int argc, char *argv[])
+ if (udi == NULL)
+ goto out;
+
+- dbus_error_init (&error);
+ ctx = libhal_ctx_init_direct (&error);
+ if (ctx == NULL)
+ goto out;
+diff --git a/hald/linux/probing/probe-volume.c b/hald/linux/probing/probe-volume.c
+index 0de1b91..7268fff 100644
+--- a/hald/linux/probing/probe-volume.c
++++ b/hald/linux/probing/probe-volume.c
+@@ -318,6 +318,8 @@ main (int argc, char *argv[])
+ /* assume failure */
+ ret = 1;
+
++ dbus_error_init (&error);
++
+ if ((udi = getenv ("UDI")) == NULL)
+ goto out;
+ if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
+@@ -346,7 +348,6 @@ main (int argc, char *argv[])
+
+ fsusage = getenv ("HAL_PROP_VOLUME_FSUSAGE");
+
+- dbus_error_init (&error);
+ if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
+ goto out;
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/abs/not_built/core/hal/fix-libusb-detection.patch b/abs/not_built/core/hal/fix-libusb-detection.patch
new file mode 100644
index 0000000..d4f966d
--- /dev/null
+++ b/abs/not_built/core/hal/fix-libusb-detection.patch
@@ -0,0 +1,66 @@
+From fce91df8ba7f305c624baf1f06961c040b088ecc Mon Sep 17 00:00:00 2001
+From: Joe Marcus Clarke <marcus@FreeBSD.org>
+Date: Tue, 08 Dec 2009 00:05:27 +0000
+Subject: Fix libusb detection on Linux
+
+Adjust the FreeBSD libusb20 code so that it does not interfere with the
+Linux libusb detection.
+
+Reported by: Robby Workman <rw@rlworkman.net>
+---
+diff --git a/configure.in b/configure.in
+index a8fda51..8363595 100644
+--- a/configure.in
++++ b/configure.in
+@@ -479,9 +479,6 @@ if test "x$with_libpci" != xno ; then
+ fi
+ AM_CONDITIONAL([HAVE_LIBPCI], [test "x$USE_LIBPCI" = "xyes"])
+
+-USE_LIBUSB20=no
+-USE_LIBUSB=no
+-LIBUSB20_LIBS=""
+ AC_ARG_WITH([backend],
+ AS_HELP_STRING([--with-backend=<name>],
+ [backend to use (linux/solaris/freebsd/dummy)]),
+@@ -510,21 +507,25 @@ AM_CONDITIONAL(HALD_COMPILE_FREEBSD, [test x$HALD_BACKEND = xfreebsd], [Compilin
+ AM_CONDITIONAL(HALD_COMPILE_SOLARIS, [test x$HALD_BACKEND = xsolaris], [Compiling for Solaris])
+ AC_SUBST(HALD_BACKEND)
+ if test "x$HALD_BACKEND" = "xfreebsd"; then
+- AC_CHECK_LIB([usb20], [libusb20_dev_get_info], [USE_LIBUSB20=yes], [USE_LIBUSB20=no])
+-fi
+-if test "x$USE_LIBUSB20" = "xno"; then
+- AC_CHECK_LIB([usb], [libusb20_dev_get_info], [USE_LIBUSB=yes], [USE_LIBUSB=no])
+-fi
+-AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_LIBUSB20" = "xyes"])
+-AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_LIBUSB" = "xyes"])
+-if test "x$USE_LIBUSB20" = "xyes"; then
+- AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libusb20])
+- LIBUSB20_LIBS="-lusb20"
+-elif test "x$USE_LIBUSB" = "xyes"; then
+- AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libsub20])
+- LIBUSB20_LIBS="-lusb"
++ USE_BSDLIBUSB20=no
++ USE_BSDLIBUSB=no
++ LIBUSB20_LIBS=""
++ AC_CHECK_LIB([usb20], [libusb20_dev_get_info], [USE_BSDLIBUSB20=yes], [USE_BSDLIBUSB20=no])
++ if test "x$USE_BSDLIBUSB20" = "xno"; then
++ AC_CHECK_LIB([usb], [libusb20_dev_get_info], [USE_BSDLIBUSB=yes], [USE_BSDLIBUSB=no])
++ fi
++ AM_CONDITIONAL([HAVE_LIBUSB20],[test "x$USE_BSDLIBUSB20" = "xyes" -o "x$USE_BSDLIBUSB" = "xyes"])
++ if test "x$USE_BSDLIBUSB20" = "xyes"; then
++ AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libusb20])
++ LIBUSB20_LIBS="-lusb20"
++ elif test "x$USE_BSDLIBUSB" = "xyes"; then
++ AC_DEFINE(HAVE_LIBUSB20, 1, [Set if we need libsub20])
++ LIBUSB20_LIBS="-lusb"
++ fi
++ AC_SUBST(LIBUSB20_LIBS)
++else
++ AM_CONDITIONAL([HAVE_LIBUSB20], [false])
+ fi
+-AC_SUBST(LIBUSB20_LIBS)
+
+ dnl DBUS API is subject to changes
+ AC_DEFINE_UNQUOTED(DBUS_API_SUBJECT_TO_CHANGE, [], [DBUS API is subject to change])
+--
+cgit v0.8.3-6-g21f6
diff --git a/abs/not_built/core/hal/fix-udev-compatibility.patch b/abs/not_built/core/hal/fix-udev-compatibility.patch
new file mode 100644
index 0000000..2cfa3ad
--- /dev/null
+++ b/abs/not_built/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/not_built/core/hal/hal b/abs/not_built/core/hal/hal
new file mode 100644
index 0000000..012d456
--- /dev/null
+++ b/abs/not_built/core/hal/hal
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+# general config
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ #Check for running dbus, start when not running
+ ck_daemon dbus && /etc/rc.d/dbus start
+ if [ -x /etc/rc.d/acpid ]; then
+ ck_daemon acpid && /etc/rc.d/acpid start
+ fi
+ stat_busy "Starting Hardware Abstraction Layer"
+ if [ ! -x /var/cache/hald ] ; then
+ install -m755 -g 82 -o 82 -d /var/cache/hald
+ fi
+ if [ ! -x /var/run/hald ]; then
+ install -m755 -g 82 -o 82 -d /var/run/hald
+ fi
+ if [ ! -x /var/run/hald/hald-local ]; then
+ install -m755 -g 0 -o 0 -d /var/run/hald/hald-local
+ fi
+ if [ ! -x /var/run/hald/hald-runner ]; then
+ install -m755 -g 0 -o 0 -d /var/run/hald/hald-runner
+ fi
+ /usr/sbin/hald
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon hal
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Hardware Abstraction Layer"
+ [ -f /var/run/hald.pid ] && kill `cat /var/run/hald.pid` &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon hal
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+ ;;
+esac
+exit 0
diff --git a/abs/not_built/core/hal/hal-0.5.9-hide-diagnostic.patch b/abs/not_built/core/hal/hal-0.5.9-hide-diagnostic.patch
new file mode 100644
index 0000000..58c882d
--- /dev/null
+++ b/abs/not_built/core/hal/hal-0.5.9-hide-diagnostic.patch
@@ -0,0 +1,14 @@
+--- hal-0.5.9/fdi/policy/10osvendor/20-storage-methods.fdi.orig 2007-05-01 21:39:31.000000000 +0000
++++ hal-0.5.9/fdi/policy/10osvendor/20-storage-methods.fdi 2007-05-01 21:51:14.000000000 +0000
+@@ -100,6 +100,11 @@
+ </match>
+ </match>
+
++ <!-- Hide partitions marked as Compaq Diagnostics -->
++ <match key="volume.partition.type" string="0x12">
++ <merge key="volume.ignore" type="bool">true</merge>
++ </match>
++
+ <!-- EFI firmware partitions -->
+ <match key="volume.fstype" string="vfat">
+ <match key="volume.label" string="EFI">
diff --git a/abs/not_built/core/hal/hal-HDAPS-blacklist.patch b/abs/not_built/core/hal/hal-HDAPS-blacklist.patch
new file mode 100644
index 0000000..8a68228
--- /dev/null
+++ b/abs/not_built/core/hal/hal-HDAPS-blacklist.patch
@@ -0,0 +1,30 @@
+From e1f85fe0cdfa7e4d4ce7a811d0b0c90bf38fba0c Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Thu, 25 Jun 2009 09:47:27 +1000
+Subject: [PATCH] Blacklist HDAPS accelerometer device from being picked up in X.
+
+This device posts accelerometer data through ABS_X/ABS_Y, making X unusable
+if it's controlling the pointer.
+---
+ fdi/policy/10osvendor/10-x11-input.fdi | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index a342421..89ba672 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -38,5 +38,11 @@
+ <merge key="input.x11_driver" type="string">evdev</merge>
+ </match>
+ </match>
++
++ <!-- http://bugs.freedesktop.org/show_bug.cgi?id=22442
++ Posts accel data through ABS_X/ABS_Y, makes X unusable -->
++ <match key="info.product" contains="ThinkPad HDAPS accelerometer data">
++ <remove key="input.x11_driver" />
++ </match>
+ </device>
+ </deviceinfo>
+--
+1.6.3.rc1.2.g0164.dirty
+
diff --git a/abs/not_built/core/hal/hal-KVM-evdev.patch b/abs/not_built/core/hal/hal-KVM-evdev.patch
new file mode 100644
index 0000000..917655e
--- /dev/null
+++ b/abs/not_built/core/hal/hal-KVM-evdev.patch
@@ -0,0 +1,36 @@
+From 7618498eec840cb26474dc47821e083957772706 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri, 20 Mar 2009 14:37:24 +1000
+Subject: [PATCH] Add x11_driver for American Megatrends KVM.
+
+This device exposes only ABS_X, ABS_Y and buttons. It gets input.joystick
+assigned but not input.mouse, hence the default evdev mapping doesn't pick up
+on it.
+
+Red Hat Bug 484776 <https://bugzilla.redhat.com/show_bug.cgi?id=484776>
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ fdi/policy/10osvendor/10-x11-input.fdi | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index 769f75b..eb9767e 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -2,6 +2,12 @@
+ <deviceinfo version="0.2">
+ <device>
+
++ <!-- This KVMS has abs x/y and buttons. It only has inputInfo.joystick
++ set by hal and doesn't get picked up by default -->
++ <match key="input.product" contains="American Megatrends Inc. Virtual Keyboard and Mouse">
++ <merge key="input.x11_driver" type="string">evdev</merge>
++ </match>
++
+ <!-- KVM emulates a USB graphics tablet which works in absolute coordinate mode -->
+ <match key="input.product" contains="QEMU USB Tablet">
+ <merge key="input.x11_driver" type="string">evdev</merge>
+--
+1.6.0.6
+
diff --git a/abs/not_built/core/hal/hal-policy.patch b/abs/not_built/core/hal/hal-policy.patch
new file mode 100644
index 0000000..96528b5
--- /dev/null
+++ b/abs/not_built/core/hal/hal-policy.patch
@@ -0,0 +1,32 @@
+--- hal-0.5.11/hal.conf.in 2008-05-27 16:09:25.000000000 +0200
++++ hal-0.5.11/hal.conf.in 2008-05-27 16:21:28.000000000 +0200
+@@ -37,9 +37,27 @@
+ receive_sender="org.freedesktop.Hal"/>
+ </policy>
+
+- <!-- Default policy for the exported interfaces; if PolicyKit is not used
+- for access control you will need to modify this -->
++ <!-- Default policy for the exported interfaces -->
+ <policy context="default">
++ <deny send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
++ <deny send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
++ <deny send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
++ <deny send_interface="org.freedesktop.Hal.Device.Volume"/>
++ <deny send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
++ </policy>
++
++ <policy group="power">
++ <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
++ <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
++ </policy>
++
++ <policy group="storage">
++ <allow send_interface="org.freedesktop.Hal.Device.Volume"/>
++ <allow send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
++ </policy>
++
++ <!-- You can change this to a more suitable user, or make per-group -->
++ <policy user="0">
+ <allow send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
+ <allow send_interface="org.freedesktop.Hal.Device.VideoAdapterPM"/>
+ <allow send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
diff --git a/abs/not_built/core/hal/hal-remove-dell-killswitch.patch b/abs/not_built/core/hal/hal-remove-dell-killswitch.patch
new file mode 100644
index 0000000..ae0cf7a
--- /dev/null
+++ b/abs/not_built/core/hal/hal-remove-dell-killswitch.patch
@@ -0,0 +1,201 @@
+diff -upr hal-0.5.12/tools/linux/hal-system-killswitch-get-power-linux hal-0.5.12.new/tools/linux/hal-system-killswitch-get-power-linux
+--- hal-0.5.12/tools/linux/hal-system-killswitch-get-power-linux 2008-08-22 07:34:47.000000000 +0100
++++ hal-0.5.12.new/tools/linux/hal-system-killswitch-get-power-linux 2009-03-03 10:45:20.000000000 +0000
+@@ -8,11 +8,6 @@
+ # the Free Software Foundation; either version 2 of the License, or
+ # (at your option) any later version.
+
+-DELL_WCTL=/usr/bin/dellWirelessCtl
+-if [ -x "/usr/sbin/dellWirelessCtl" ]; then
+- DELL_WCTL=/usr/sbin/dellWirelessCtl
+-fi
+-
+ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "bluetooth" ]; then
+ if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "sonypic" ]; then
+ value="`hal-system-sonypic getbluetooth`"
+@@ -22,25 +17,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ exit 1
+ fi
+ exit ${value}
+- elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- $DELL_WCTL --st_bt
+- value=$?
+- if [ "$value" = "0" ]; then
+- exit 1
+- elif [ "$value" = "1" ]; then
+- exit 0
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $value" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+ elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = thinkpad -a -r "$HAL_PROP_LINUX_SYSFS_PATH" ]; then
+ read value < $HAL_PROP_LINUX_SYSFS_PATH 2> /dev/null
+ if [ $? -eq 0 ]; then
+@@ -55,56 +31,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ echo "Access type not supported" >&2
+ exit 1
+ fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wlan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- $DELL_WCTL --st_wlan
+- value=$?
+- if [ "$value" = "0" ]; then
+- exit 1
+- elif [ "$value" = "1" ]; then
+- exit 0
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $value" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wwan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- $DELL_WCTL --st_wwan
+- value=$?
+- if [ "$value" = "0" ]; then
+- exit 1
+- elif [ "$value" = "1" ]; then
+- exit 0
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $value" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+ else
+ echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+ echo "Killswitch type not supported" >&2
+diff -upr hal-0.5.12/tools/linux/hal-system-killswitch-set-power-linux hal-0.5.12.new/tools/linux/hal-system-killswitch-set-power-linux
+--- hal-0.5.12/tools/linux/hal-system-killswitch-set-power-linux 2008-10-24 09:45:54.000000000 +0100
++++ hal-0.5.12.new/tools/linux/hal-system-killswitch-set-power-linux 2009-03-03 10:44:49.000000000 +0000
+@@ -8,11 +8,6 @@
+ # the Free Software Foundation; either version 2 of the License, or
+ # (at your option) any later version.
+
+-DELL_WCTL=/usr/bin/dellWirelessCtl
+-if [ -x "/usr/sbin/dellWirelessCtl" ]; then
+- DELL_WCTL=/usr/sbin/dellWirelessCtl
+-fi
+-
+ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "bluetooth" ]; then
+ if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "sonypic" ]; then
+ hal-system-sonypic setbluetooth $value
+@@ -23,26 +18,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ exit 1
+ fi
+ exit 0
+- elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # TODO: write our own binary that links with libsmbios?
+- if [ "$value" = "true" ]; then
+- $DELL_WCTL --bt 1
+- ret=$?
+- else
+- $DELL_WCTL --bt 0
+- ret=$?
+- fi
+- if [ "$ret" != "0" ]; then
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $ret" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+ elif [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = thinkpad -a -w "$HAL_PROP_LINUX_SYSFS_PATH" ]; then
+ if [ "$value" = "true" ]; then
+ bit=1;
+@@ -61,60 +36,6 @@ if [ "$HAL_PROP_KILLSWITCH_TYPE" = "blue
+ echo "Access type not supported" >&2
+ exit 1
+ fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wlan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # As a side effect we disable the physical kill switch
+- # TODO: write our own binary that links with libsmbios?
+- if [ "$value" = "true" ]; then
+- $DELL_WCTL --sw_wlan 0 --wlan 1
+- ret=$?
+- else
+- $DELL_WCTL --sw_wlan 0 --wlan 0
+- ret=$?
+- fi
+- if [ "$ret" != "0" ]; then
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $ret" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+-elif [ "$HAL_PROP_KILLSWITCH_TYPE" = "wwan" ]; then
+- if [ "$HAL_PROP_KILLSWITCH_ACCESS_METHOD" = "dell" ]; then
+- if [ -x "$DELL_WCTL" ]; then
+- # As a side effect we disable the physical kill switch
+- # TODO: write our own binary that links with libsmbios?
+- if [ "$value" = "true" ]; then
+- $DELL_WCTL --sw_wwan 0 --wwan 1
+- ret=$?
+- else
+- $DELL_WCTL --sw_wwan 0 --wwan 0
+- ret=$?
+- fi
+- if [ "$ret" != "0" ]; then
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl returned $ret" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "dellWirelessCtl ($DELL_WCTL) not available or executable" >&2
+- exit 1
+- fi
+- else
+- echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+- echo "Access type not supported" >&2
+- exit 1
+- fi
+ else
+ echo "org.freedesktop.Hal.Device.KillSwitch.NotSupported" >&2
+ echo "Killswitch type not supported" >&2
diff --git a/abs/not_built/core/hal/hal-use-at-console.patch b/abs/not_built/core/hal/hal-use-at-console.patch
new file mode 100644
index 0000000..0b32f17
--- /dev/null
+++ b/abs/not_built/core/hal/hal-use-at-console.patch
@@ -0,0 +1,45 @@
+diff -up hal-0.5.13/hal.conf.in.drop-polkit hal-0.5.13/hal.conf.in
+--- hal-0.5.13/hal.conf.in.drop-polkit 2009-02-04 17:07:23.000000000 -0500
++++ hal-0.5.13/hal.conf.in 2009-07-29 23:15:16.866766074 -0400
+@@ -25,7 +25,41 @@
+ send_interface="org.freedesktop.Hal.Device"/>
+ <allow send_destination="org.freedesktop.Hal"
+ send_interface="org.freedesktop.Hal.Manager"/>
++ </policy>
++
++ <!-- Only allow users at the local console to manipulate devices -->
++ <policy at_console="true">
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.CPUFreq"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.DockStation"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.KillSwitch"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.KeyboardBacklight"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.LaptopPanel"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Leds"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.LightSensor"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Storage"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Storage.Removable"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.SystemPowerManagement"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Volume"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.Volume.Crypto"/>
++ <allow send_destination="org.freedesktop.Hal"
++ send_interface="org.freedesktop.Hal.Device.WakeOnLan"/>
++
++ </policy>
+
++ <!-- well,...and root too -->
++ <policy user="root">
+ <allow send_destination="org.freedesktop.Hal"
+ send_interface="org.freedesktop.Hal.Device.CPUFreq"/>
+ <allow send_destination="org.freedesktop.Hal"
diff --git a/abs/not_built/core/hal/hal-xen-unignore-axes.patch b/abs/not_built/core/hal/hal-xen-unignore-axes.patch
new file mode 100644
index 0000000..b248639
--- /dev/null
+++ b/abs/not_built/core/hal/hal-xen-unignore-axes.patch
@@ -0,0 +1,39 @@
+From e48f59d2b9bcb43ea8a7b8c884dcb73c8f65b170 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Mon, 19 Oct 2009 14:27:20 +1000
+Subject: [PATCH] Un-ignore absolute axes for the Xen Virtual Pointer.
+
+The evdev-internal axis type picking fails for the Xen Virtual Pointer as it
+exposes both relative and absolute axes. Evdev picks the relative axes by
+default, leading to a immovable pointer if the Xen backend only sends
+absolute coordinates.
+
+Explicitly tell evdev to not ignore the absolute axes.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=523914
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ fdi/policy/10osvendor/10-x11-input.fdi | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index 89ba672..752c4ab 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -44,5 +44,12 @@
+ <match key="info.product" contains="ThinkPad HDAPS accelerometer data">
+ <remove key="input.x11_driver" />
+ </match>
++
++ <!-- https://bugzilla.redhat.com/show_bug.cgi?id=523914
++ Mouse does not move in PV Xen guest -->
++ <match key="info.product" contains="Xen Virtual Pointer">
++ <merge key="input.x11_options.IgnoreAbsoluteAxes" type="string">false</merge>
++ <merge key="input.x11_options.IgnoreRelativeAxes" type="string">false</merge>
++ </match>
+ </device>
+ </deviceinfo>
+--
+1.6.2.5
+
diff --git a/abs/not_built/core/hal/hal.install b/abs/not_built/core/hal/hal.install
new file mode 100644
index 0000000..d6afee3
--- /dev/null
+++ b/abs/not_built/core/hal/hal.install
@@ -0,0 +1,24 @@
+post_install() {
+ getent group hal >/dev/null || usr/sbin/groupadd -g 82 hal
+ getent group optical >/dev/null || usr/sbin/groupadd -g 93 optical
+ getent group floppy >/dev/null || usr/sbin/groupadd -g 94 floppy
+ getent group storage >/dev/null || usr/sbin/groupadd -g 95 storage
+ getent passwd hal >/dev/null || usr/sbin/useradd -c 'HAL daemon' -u 82 -g hal -G optical,floppy,storage -d '/' -s /bin/false hal
+ usr/bin/passwd -l hal &>/dev/null
+}
+
+# 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() {
+ if getent passwd hal &>/dev/null; then
+ usr/sbin/userdel hal
+ fi
+ if getent group hal &>/dev/null; then
+ usr/sbin/groupdel hal
+ fi
+}
diff --git a/abs/not_built/core/hal/handle-input-touchpad.patch b/abs/not_built/core/hal/handle-input-touchpad.patch
new file mode 100644
index 0000000..9cd6464
--- /dev/null
+++ b/abs/not_built/core/hal/handle-input-touchpad.patch
@@ -0,0 +1,101 @@
+From 6dccf8e3ad181e8f56b1d2a994ec50a1953a1c2d Mon Sep 17 00:00:00 2001
+From: Michael Witten <mfwitten@gmail.com>
+Date: Wed, 06 Jan 2010 00:53:17 +0000
+Subject: Policy: handle `input.touchpad' explicitly
+
+This commit essentially duplicates the policy for:
+
+ <match key="info.capabilities" contains="input.mouse">
+
+and then changes `input.mouse' to `input.touchpad'. This
+is necessary because in Linus Torvalds's Linux repo:
+
+ git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
+
+the following commit:
+
+ commit 7105d2ea73e1391b681d0e1212c42f561c64d429
+ Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+ Date: Fri Dec 11 23:54:54 2009 -0800
+
+ Input: ALPS - do not set REL_X/REL_Y capabilities on the touchpad
+
+ Relative events are only reported via secondary device therefore device
+ associated with the touchpad should not advertise these capabilities.
+
+ Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+
+made these few changes:
+
+ diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
+ index a3f492a..b03e7e0 100644
+ /--- a/drivers/input/mouse/alps.c
+ /+++ b/drivers/input/mouse/alps.c
+ /@@ -487,6 +487,17 @@ int alps_init(struct psmouse *psmouse)
+ if (alps_hw_init(psmouse))
+ goto init_fail;
+
+ + /*
+ + * Undo part of setup done for us by psmouse core since touchpad
+ + * is not a relative device.
+ + */
+ + __clear_bit(EV_REL, dev1->evbit);
+ + __clear_bit(REL_X, dev1->relbit);
+ + __clear_bit(REL_Y, dev1->relbit);
+ +
+ + /*
+ + * Now set up our capabilities.
+ + */
+ dev1->evbit[BIT_WORD(EV_KEY)] |= BIT_MASK(EV_KEY);
+ dev1->keybit[BIT_WORD(BTN_TOUCH)] |= BIT_MASK(BTN_TOUCH);
+ dev1->keybit[BIT_WORD(BTN_TOOL_FINGER)] |= BIT_MASK(BTN_TOOL_FINGER);
+
+so that HAL no longer adds:
+
+ input.mouse
+
+to an ALPS touchpad's:
+
+ info.capabilities
+
+so that HAL no longer marks the ALPS touchpad with:
+
+ input.x11_driver = 'evdev'
+
+because the policy file:
+
+ fdi/policy/10osvendor/10-x11-input.fdi
+
+doesn't define the policy for:
+
+ <match key="info.capabilities" contains="input.touchpad">
+
+which was previous unnecessary because everything used to
+be caught by the policy for:
+
+ <match key="info.capabilities" contains="input.mouse">
+
+Signed-off-by: Michael Witten <mfwitten@gmail.com>
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
+index cff8fc5..8bbe263 100644
+--- a/fdi/policy/10osvendor/10-x11-input.fdi
++++ b/fdi/policy/10osvendor/10-x11-input.fdi
+@@ -16,6 +16,14 @@
+ </match>
+ </match>
+
++ <match key="info.capabilities" contains="input.touchpad">
++ <merge key="input.x11_driver" type="string">mouse</merge>
++ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
++ string="Linux">
++ <merge key="input.x11_driver" type="string">evdev</merge>
++ </match>
++ </match>
++
+ <match key="info.capabilities" contains="input.tablet">
+ <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
+ string="Linux">
+--
+cgit v0.8.3-6-g21f6
diff --git a/abs/not_built/core/hal/macbook-fix-ioperm.patch b/abs/not_built/core/hal/macbook-fix-ioperm.patch
new file mode 100644
index 0000000..14d0b39
--- /dev/null
+++ b/abs/not_built/core/hal/macbook-fix-ioperm.patch
@@ -0,0 +1,41 @@
+From 597c1ffffd61a15a334ce42f2a569c59f0270bcb Mon Sep 17 00:00:00 2001
+From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
+Date: Thu, 25 Feb 2010 10:25:18 +0000
+Subject: Fix incorrect arguments to ioperm() call
+
+The second argument of ioperm() is not the last port to be accessed
+but rather length of the port range [port, port + len).
+
+Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
+Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+---
+diff --git a/hald/linux/addons/addon-imac-backlight.c b/hald/linux/addons/addon-imac-backlight.c
+index e869192..54e4ea3 100644
+--- a/hald/linux/addons/addon-imac-backlight.c
++++ b/hald/linux/addons/addon-imac-backlight.c
+@@ -158,7 +158,8 @@ main (int argc, char **argv)
+ goto out;
+ }
+
+- if (ioperm(0xB2, 0xB3, 1) < 0)
++ /* Allow access to ports 0xB2 and 0xB3 */
++ if (ioperm(0xB2, 2, 1) < 0)
+ {
+ HAL_ERROR (("ioperm failed (you should be root)."));
+ exit(1);
+diff --git a/hald/linux/addons/addon-macbookpro-backlight.c b/hald/linux/addons/addon-macbookpro-backlight.c
+index 2a6fef6..c1bbbac 100644
+--- a/hald/linux/addons/addon-macbookpro-backlight.c
++++ b/hald/linux/addons/addon-macbookpro-backlight.c
+@@ -507,7 +507,8 @@ main (int argc, char *argv[])
+ state = INREG(0x7ae4);
+ OUTREG(0x7ae4, state);
+
+- if (ioperm (0x300, 0x304, 1) < 0) {
++ /* Allow access to porta 0x300 through 0x304 */
++ if (ioperm (0x300, 5, 1) < 0) {
+ HAL_ERROR (("ioperm failed (you should be root)."));
+ exit(1);
+ }
+--
+cgit v0.8.3-6-g21f6
diff --git a/abs/not_built/core/hal/ntfs-mount-fix.patch b/abs/not_built/core/hal/ntfs-mount-fix.patch
new file mode 100644
index 0000000..13597f2
--- /dev/null
+++ b/abs/not_built/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/not_built/core/hal/ntfs3g-valid-options.patch b/abs/not_built/core/hal/ntfs3g-valid-options.patch
new file mode 100644
index 0000000..4731442
--- /dev/null
+++ b/abs/not_built/core/hal/ntfs3g-valid-options.patch
@@ -0,0 +1,11 @@
+--- fdi/policy/10osvendor/20-storage-methods.fdi.orig 2007-10-28 19:40:22.000000000 +0000
++++ fdi/policy/10osvendor/20-storage-methods.fdi 2007-10-28 19:40:58.000000000 +0000
+@@ -240,6 +240,8 @@
+ <append key="volume.mount.valid_options" type="strlist">uid=</append>
+ <append key="volume.mount.valid_options" type="strlist">gid=</append>
+ <append key="volume.mount.valid_options" type="strlist">umask=</append>
++ <append key="volume.mount.valid_options" type="strlist">dmask=</append>
++ <append key="volume.mount.valid_options" type="strlist">fmask=</append>
+ <append key="volume.mount.valid_options" type="strlist">locale=</append>
+ <append key="volume.mount.valid_options" type="strlist">utf8</append>
+ </match>
diff --git a/abs/not_built/core/hal/path-max.patch b/abs/not_built/core/hal/path-max.patch
new file mode 100644
index 0000000..304185d
--- /dev/null
+++ b/abs/not_built/core/hal/path-max.patch
@@ -0,0 +1,31 @@
+From a2c3dd5a04d79265772c09c4280606d5c2ed72c6 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon, 04 Jan 2010 15:56:13 +0000
+Subject: Bump HAL_PATH_MAX to 4096
+
+Some bits in the code use realpath() with destination paths of size
+HAL_PATH_MAX. This potentially breaks on systems where PATH_MAX is bigger than
+HAL_PATH_MAX (which was 512 until now).
+
+Since we can't use PATH_MAX directly (due to platforms like GNU/Hurd, which
+apparently don't have it), just bump HAL_PATH_MAX to 4096 (as PATH_MAX is on
+Linux), to avoid potential buffer overflows and also fix hal on Linux when
+enabling FORTIFY in gcc.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=25888
+---
+diff --git a/hald/util.h b/hald/util.h
+index c2a1584..7883333 100644
+--- a/hald/util.h
++++ b/hald/util.h
+@@ -38,7 +38,7 @@
+ #endif
+
+ #define HAL_NAME_MAX 256
+-#define HAL_PATH_MAX 512
++#define HAL_PATH_MAX 4096
+
+ gboolean hal_util_remove_trailing_slash (gchar *path);
+
+--
+cgit v0.8.3-6-g21f6
diff --git a/abs/not_built/core/heirloom-mailx/PKGBUILD b/abs/not_built/core/heirloom-mailx/PKGBUILD
new file mode 100644
index 0000000..d7e82f0
--- /dev/null
+++ b/abs/not_built/core/heirloom-mailx/PKGBUILD
@@ -0,0 +1,64 @@
+# $Id: PKGBUILD 160422 2012-06-01 20:13:47Z stephane $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Sergej Pupykin <pupykin.s@arch@gmail.com>
+# Contributor: Andreas Wagner <Andreas.Wagner@em.uni-frankfurt.de>
+
+pkgname=heirloom-mailx
+pkgver=12.5
+pkgrel=3
+pkgdesc="A commandline utility for sending and receiving email"
+arch=('i686' 'x86_64')
+url="http://heirloom.sourceforge.net/mailx.html"
+license=('custom')
+groups=('base')
+depends=('openssl' 'krb5')
+optdepends=('smtp-forwarder: for sending mail')
+replaces=('mailx' 'mailx-heirloom')
+provides=('mailx' 'mailx-heirloom')
+conflicts=('mailx' 'mailx-heirloom')
+backup=(etc/mail.rc)
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz)
+sha1sums=('1998dd6168a68400e533712ae7163c72b6a7c056')
+options=('!makeflags') # Does not build with MAKEFLAGS=-jX, X>1
+
+# source PKGBUILD && mksource
+mksource() {
+ export CVSROOT=:pserver:anonymous@nail.cvs.sourceforge.net:/cvsroot/nail
+ D=nail
+ [ -d "${D}" ] && cvs up "${D}" || cvs co "${D}"
+
+ _dirname=${pkgname}-${pkgver}
+ mv $D ${_dirname}
+ tar -cJv --exclude=CVS -f ${_dirname}.tar.xz ${_dirname}
+ rm -rf ${_dirname}
+}
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ sed -i 's|/etc/nail.rc|/etc/mail.rc|g' mailx.1
+
+ # For Linux and BSD, this should be set.
+ echo "set bsdcompat" >> nail.rc
+
+ sed -i "s/pg/less/" cmd1.c
+
+ echo PREFIX=/usr \
+ MAILRC=/etc/mail.rc \
+ SENDMAIL=/usr/sbin/sendmail \
+ MAILSPOOL=/var/spool/mail \
+ UCBINSTALL=/usr/bin/install > makeflags
+
+ make `cat makeflags` IPv6=-DHAVE_IPv6_FUNCS
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" `cat makeflags` install
+
+ # For compatibility with the old mailx program
+ ln -sf mailx "${pkgdir}"/usr/bin/mail
+ ln -sf mailx.1.gz "${pkgdir}"/usr/share/man/man1/mail.1.gz
+
+ install -D -m0644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
+}
diff --git a/abs/not_built/core/hwdetect/PKGBUILD b/abs/not_built/core/hwdetect/PKGBUILD
new file mode 100644
index 0000000..e386628
--- /dev/null
+++ b/abs/not_built/core/hwdetect/PKGBUILD
@@ -0,0 +1,19 @@
+# $Id: PKGBUILD 86895 2010-08-06 20:29:04Z tpowa $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+pkgname=hwdetect
+pkgver=2010.08
+pkgrel=1
+pkgdesc="Hardware detection script with loading modules and mkinitcpio.conf / rc.conf support"
+arch=(any)
+license=('GPL')
+depends=('sh' 'awk' 'grep' 'coreutils' 'sed' 'e2fsprogs')
+optdepends=('cryptsetup: for encrypt mkinitcpio config support'
+ 'dmraid: for dmraid mkinitcpio config support'
+ 'lvm2: for lvm2 mkinitcpio config support'
+ 'mdadm: for raid mkinitcpio config support')
+source=(hwdetect)
+
+build() {
+ install -D -m 755 ${srcdir}/hwdetect ${pkgdir}/sbin/hwdetect
+}
+md5sums=('cece9e167bb240c82855ffc3f632a5bb')
diff --git a/abs/not_built/core/hwdetect/hwdetect b/abs/not_built/core/hwdetect/hwdetect
new file mode 100755
index 0000000..280cafa
--- /dev/null
+++ b/abs/not_built/core/hwdetect/hwdetect
@@ -0,0 +1,592 @@
+#! /bin/sh
+# Autodetection script for scanning /sys for hardware
+# for Archlinux by Tobias Powalowski <tpowa@archlinux.org>
+usage () {
+ echo "$0 [options]"
+ echo ""
+ echo " This is a tool that detects/lists modules that are exported by /sys"
+ echo ""
+ echo " Options:"
+ echo " --kernel_version= use kernel version (no autodetect)"
+ echo " --ide-legacy use old ide modules instead of pata"
+ echo " --load-modules load all detected modules"
+ echo " --unload-modules unload all detected modules"
+ echo " --show-modules show all detected modules"
+ echo " --show-modules-order shows load order of detected modules"
+ echo " --show-agp show AGP modules"
+ echo " --show-acpi show ACPI modules"
+ echo " --show-ide show IDE modules"
+ echo " --show-pata show PATA modules"
+ echo " --show-scsi show SCSI modules"
+ echo " --show-sata show SATA modules"
+ echo " --show-usb show USB modules"
+ echo " --show-fw show FIREWIRE modules"
+ echo " --show-net show NETWORK modules"
+ echo " --show-input show INPUT modules"
+ echo " --show-irda show IRDA modules"
+ echo " --show-isdn show ISDN modules"
+ echo " --show-pcmcia show PCMCIA modules"
+ echo " --show-sound show SOUND modules"
+ echo " --show-staging show STAGING modules"
+ echo " --show-video show VIDEO modules"
+ echo " --show-other show OTHER modules"
+ echo ""
+ echo " For /etc/mkinitcpio.conf use:"
+ echo " --filesystem add filesystems to MODULES="
+ echo " --hostcontroller show MODULES= for all hostcontrollers"
+ echo " --vmware add BusLogic to MODULES for vmware"
+ echo " --ati-kms add ati kernel mode setting"
+ echo " --intel-kms add intel kernel mode setting"
+ echo " --nvidia-kms add nvidia kernel mode setting"
+ echo ""
+ echo " --rootdevice= autodetected advanced features of rootdevice"
+ echo " --hooks-dir= use this directory for HOOKS check"
+ echo " --advanced show autodetected advanced HOOKS"
+ echo " --hooks show HOOKS="
+ echo " --dmraid add dmraid to HOOKS="
+ echo " --keymap add keymap to HOOKS="
+ echo " --usb add usb to HOOKS="
+ echo " --usbinput add usbinput to HOOKS="
+ echo " --fw add fw to HOOKS="
+ echo " --pcmcia add pcmcia to HOOKS="
+ echo " --nfs add net to HOOKS="
+ echo " --btrfs add btrfs to HOOKS="
+ echo ""
+ echo " For /etc/rc.conf use:"
+ echo " --net show network MODULES"
+ echo " --sound show sound MODULES"
+ echo " --usbhost show usb hostcontroller MODULES"
+ echo " --modules show all detected MODULES"
+ echo ""
+ exit 1
+}
+
+[ "$1" = "" ] && usage
+[ "$1" = "--help" ] && usage
+[ "$1" = "-h" ] && usage
+
+# setting kernel version
+case $1 in
+ --kernel_version=*)
+ KERNEL_VERSION="$(echo $1 | awk -F= '{print $2;}')"
+ ;;
+ --rootdevice=*)
+ ROOTDEVICE="$(echo $1 | awk -F= '{print $2;}')"
+ ;;
+esac
+
+if [ "$KERNEL_VERSION" = "" ]; then
+ KERNEL_VERSION="$(uname -r)"
+fi
+
+# IDE/PATA switch
+[ "$(echo $* | grep '\-ide-legacy')" ] && IDE_LEGACY=1
+
+# uvesafb switch
+[ "$(echo $* | grep '\-uvesafb')" ] && UVESAFB=1
+
+# dmraid switch
+[ "$(echo $* | grep '\-dmraid')" ] && DMRAID=1
+
+# keymap switch
+[ "$(echo $* | grep '\-keymap')" ] && KEYMAP=1
+
+# usb switch
+[ "$(echo $* | grep '\-usb ')" ] && USB=1
+
+# usbinput switch
+[ "$(echo $* | grep '\-usbinput')" ] && USBINPUT=1
+
+# fw switch
+[ "$(echo $* | grep '\-fw')" ] && FW=1
+
+# pcmcia switch
+[ "$(echo $* | grep '\-pcmcia')" ] && PCMCIA=1
+
+# nfs switch
+[ "$(echo $* | grep '\-nfs')" ] && NFS=1
+
+# nfs switch
+[ "$(echo $* | grep '\-btrfs')" ] && BTRFS=1
+
+# vmware switch
+[ "$(echo $* | grep '\-vmware')" ] && VMWARE=1
+
+# vmware switch
+[ "$(echo $* | grep '\-hooks')" ] && HOOKS=1
+
+ADVANCED=""
+# root device check
+if ! [ "$ROOTDEVICE" = "" ]; then
+ # check device mapper devices
+ if [ "$(echo "$ROOTDEVICE" | grep "/dev/mapper")" ]; then
+ # check if encryption is used
+ if [ "$(cryptsetup status $ROOTDEVICE 2>/dev/null)" ]; then
+ ADVANCED="encrypt"
+ # check on lvm
+ realdevice="$(cryptsetup status $ROOTDEVICE 2>/dev/null | grep "device:.*/dev/mapper/" | sed -e 's#.*\ ##g')"
+ if [ "$(lvs $realdevice 2>/dev/null)" ]; then
+ ADVANCED="lvm2 encrypt"
+ vg="$(echo $(lvs -o vg_name --noheading $realdevice))"
+ # check on raid
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")" ] && ADVANCED="mdadm lvm2 encrypt"
+ fi
+ # check on raid
+ if [ "$(cryptsetup status $ROOTDEVICE 2>/dev/null | grep "device:.*/dev/md" | sed -e 's#.*\ ##g')" ]; then
+ ADVANCED="mdadm encrypt"
+ realdevice="$(cryptsetup status $ROOTDEVICE 2>/dev/null | grep "device:.*/dev/md" | sed -e 's#.*\ ##g')"
+ # check on lvm
+ [ "$(mdadm --detail $realdevice | grep "/dev/dm-")" ] && ADVANCED="lvm2 mdadm encrypt"
+ fi
+ fi
+ # check if lvm is used
+ if [ "$(lvs $ROOTDEVICE 2>/dev/null)" ]; then
+ ADVANCED="lvm2"
+ vg="$(echo $(lvs -o vg_name --noheading $ROOTDEVICE))"
+ # check on encrypt
+ if [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ]; then
+ ADVANCED="encrypt lvm2"
+ # check on raid
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")" ] && ADVANCED="mdadm encrypt lvm2"
+ for i in "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")"; do
+ realdevice="$(echo $i | cut -d ' ' -f1)"
+ #getsymlink="$(readlink $realdevice)"
+ #correctdevice="$(echo $getsymlink | sed -e 's#\.\.#/dev#g')"
+ [ "$(cryptsetup status $realdevice 2>/dev/null | grep "device:.*/dev/md")" ] && ADVANCED="mdadm encrypt lvm2"
+ done
+ fi
+ # check on raid
+ if [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")" ]; then
+ ADVANCED="mdadm lvm2"
+ #check on encrypt
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ] && ADVANCED="encrypt mdadm lvm2"
+ for i in "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/md")"; do
+ realdevice="$(echo $i | cut -d ' ' -f1)"
+ [ "$(mdadm --detail $realdevice | grep "/dev/dm-")" ] && ADVANCED="encrypt mdadm lvm2"
+ done
+ fi
+ fi
+ fi
+ # check md device
+ if [ "$(echo "$ROOTDEVICE" | grep "/dev/md")" ]; then
+ ADVANCED="mdadm"
+ # raid partitions or raid?
+ if [ "$(echo "$ROOTDEVICE" | grep "/dev/md*p")" ]; then
+ realdevice="$(echo $ROOTDEVICE | sed -e 's#p.*##g' -e 's#/dev/##g')"
+ if ! [ "$(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null)" = "" ]; then
+ SET_LVM=""
+ SET_ENCRYPT=""
+ for k in $(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null); do
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && SET_LVM="1"
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && SET_ENCRYPT="1"
+ # check on lvm
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="lvm2 mdadm"
+ # check on encrypt
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="encrypt mdadm"
+ # check encrypted volume device
+ realdevice="$(cryptsetup status $(cat $k/dm/name) 2>/dev/null | grep "device:.*/dev/mapper/" | sed -e 's#.*\ ##g')"
+ [ "$(lvs $realdevice 2>/dev/null)" ] && ADVANCED="lvm2 encrypt mdadm"
+ vg="$(echo $(lvs -o vg_name --noheading /dev/mapper/$(cat $k/dm/name) 2>/dev/null))"
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ] && ADVANCED="encrypt lvm2 mdadm"
+ done
+ [ "$SET_LVM" = "1" -a "$SET_ENCRYPT" = "1" ] && ADVANCED="lvm2 encrypt mdadm"
+ fi
+ else
+ realdevice="$(echo $ROOTDEVICE | sed -e 's#/dev/##g')"
+ if ! [ "$(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null)" = "" ]; then
+ SET_LVM=""
+ SET_ENCRYPT=""
+ for k in $(find /sys/block/$realdevice/slaves/ -name 'dm*' 2>/dev/null); do
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && SET_LVM="1"
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && SET_ENCRYPT="1"
+ # check on lvm
+ [ "$(lvs /dev/mapper/$(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="lvm2 mdadm"
+ # check on encrypt
+ [ "$(cryptsetup status $(cat $k/dm/name) 2>/dev/null)" ] && ADVANCED="encrypt mdadm"
+ # check encrypted volume device
+ realdevice="$(cryptsetup status $(cat $k/dm/name) 2>/dev/null | grep "device:.*/dev/mapper/" | sed -e 's#.*\ ##g')"
+ [ "$(lvs $realdevice 2>/dev/null)" ] && ADVANCED="lvm2 encrypt mdadm"
+ vg="$(echo $(lvs -o vg_name --noheading /dev/mapper/$(cat $k/dm/name) 2>/dev/null))"
+ [ "$(pvs -o pv_name,vg_name --noheading | grep "$vg$" | grep "/dev/dm-")" ] && ADVANCED="encrypt lvm2 mdadm"
+ done
+ [ "$SET_LVM" = "1" -a "$SET_ENCRYPT" = "1" ] && ADVANCED="lvm2 encrypt mdadm"
+ fi
+ fi
+ fi
+fi
+
+# checking /sys
+if ! [ -d /sys/ ]; then
+ echo "/sys/ is not present -- mount /sys first" >&2
+ exit 1
+fi
+
+: >/tmp/modules-plain
+: >/tmp/modules-stripped
+: >/tmp/modules-sorted
+: >/tmp/moduleslist
+: >/tmp/.blkid
+
+# generate blkid
+/sbin/blkid -c /dev/null -s TYPE > /tmp/.blkid
+
+# find pci aliases
+aliases=$(find /sys/ -noleaf -name modalias -exec cat {} +)
+
+# check for empty aliases
+if [ "$aliases" = "" ]; then
+ echo "hwdetect aborted -- you need a kernel >= 2.6.12" >&2
+ exit 1
+fi
+
+# generate files for the different actions
+modprobe -i -a --set-version=$KERNEL_VERSION --show-depends $aliases >> /tmp/modules-plain 2>/dev/null
+
+# fix ide cdrom detection on proliant 1600
+if [ "$(echo $aliases | grep 'pci:v00000E11d00000001sv00000000sd00000000bc06sc02i00')" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends ide-generic >> /tmp/modules-plain 2>/dev/null
+fi
+
+# find PNP devices like parports, soundcards etc.
+# (workaround for rtc, pcspkr, irtty-sir and analog are included)
+if [ "$(find /sys/devices -noleaf -name 'id' | grep /pnp)" ]; then
+ for i in $(find /sys/devices -noleaf -name "id" | grep /pnp); do
+ devid=$(cat $i | grep PNP)
+ [ "$devid" ] || continue
+
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends pnp:d${devid} >> /tmp/modules-plain 2>/dev/null
+
+ [ "$devid" = "PNP0800" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends pcspkr >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_proc >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_sysfs >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0b00" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends rtc_dev >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0510" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends irtty-sir >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNP0511" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends irtty-sir >> /tmp/modules-plain 2>/dev/null
+ [ "$devid" = "PNPb02f" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends analog >> /tmp/modules-plain 2>/dev/null
+
+ # load ppp-generic if serial ports are detected for modems
+ [ "$devid" = "PNP0501" ] && modprobe -i --set-version=$KERNEL_VERSION --show-depends ppp-generic >> /tmp/modules-plain 2>/dev/null
+ done
+fi
+
+# SCSI disks/cdroms/tapes/generic devices
+if [ "$(find /sys/devices -noleaf -name 'type')" ]; then
+ for i in $(cat $(find /sys/devices -noleaf -name "type")); do
+ case $i in (4|5) modprobe -i --set-version=$KERNEL_VERSION --show-depends sr_mod >> /tmp/modules-plain 2>/dev/null ;; esac
+ case $i in (2|3|6|8|9) modprobe -i --set-version=$KERNEL_VERSION --show-depends sg >> /tmp/modules-plain 2>/dev/null ;; esac
+ case $i in (0|7|14) modprobe -i --set-version=$KERNEL_VERSION --show-depends sd_mod >> /tmp/modules-plain 2>/dev/null ;; esac
+ case $i in (1) modprobe -i --set-version=$KERNEL_VERSION --show-depends st >> /tmp/modules-plain 2>/dev/null ;; esac
+ done
+fi
+
+# add Buslogic for vmware
+if [ "$VMWARE" = "1" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends BusLogic >> /tmp/modules-plain 2>/dev/null
+fi
+
+# Parport modules
+if [ "$(grep 'parport' /tmp/modules-plain)" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends lp >> /tmp/modules-plain 2>/dev/null
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends ppdev >> /tmp/modules-plain 2>/dev/null
+fi
+
+# Sound OSS compat modules
+if [ "$(grep 'snd-pcm' /tmp/modules-plain)" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends snd-pcm-oss >> /tmp/modules-plain 2>/dev/null
+fi
+if [ "$(grep 'snd-seq' /tmp/modules-plain)" ]; then
+ modprobe -i --set-version=$KERNEL_VERSION --show-depends snd-seq-oss >> /tmp/modules-plain 2>/dev/null
+fi
+
+sort -u /tmp/modules-plain >> /tmp/modules-stripped
+
+# OTHER modules loading first for speed up!
+grep -v "ide/" /tmp/modules-stripped | grep -v "scsi/" | grep -v "fusion/" | grep -v "block/sx8" | grep -v "message/fusion" | \
+ grep -v "block/cciss" | grep -v "block/cpqarray" | grep -v "block/DAC960" | grep -v "block/virtio" | grep -v "ata/" | \
+ grep -v "net/" | grep -v "pcmcia/" | grep -v "usb/" | \
+ grep -v "firewire" | grep -v "ieee1394/" | grep -v "usbhid/" | grep -v "staging/" | grep -v "wireless/" | grep -v "virtio_pci" >> /tmp/modules-sorted
+# load virtio first!
+grep "virtio_pci" /tmp/modules-stripped >> /tmp/modules-sorted
+# make a correct order for the modules, internal devices have priority!
+# only use old ide modules if boot parameter 'ide-legacy' is given
+if [ "$IDE_LEGACY" = "1" ]; then
+ grep "ide/" /tmp/modules-stripped | grep -v "ide-pci-generic" >> /tmp/modules-sorted
+else
+ grep "ata/pata" /tmp/modules-stripped | grep -v "pata_acpi" >> /tmp/modules-sorted
+fi
+grep "scsi/" /tmp/modules-stripped | grep -v "sd_mod" | grep -v "sr_mod" | grep -v "/sg.ko" | grep -v "/st.ko" >> /tmp/modules-sorted
+grep "block/" /tmp/modules-stripped | grep -v "virtio_blk" | grep -v "sx8" | grep -v "nbd" | grep -v "pktcdvd" | grep -v "floppy" >> /tmp/modules-sorted
+grep "fusion/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "ata/" /tmp/modules-stripped| grep -v "pata" | grep -v "ata_generic" | grep -v "libata" >> /tmp/modules-sorted
+grep "block/" /tmp/modules-stripped | grep "sx8" >> /tmp/modules-sorted
+grep "net/" /tmp/modules-stripped | grep -v "wireless/" | grep -v "usb/" >> /tmp/modules-sorted
+grep "wireless/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "staging/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "pcmcia/" /tmp/modules-stripped >> /tmp/modules-sorted
+
+# speed up usb module loading
+grep "usb-storage" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "usblp" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "usbhid" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "usb/" /tmp/modules-stripped | grep -v "usb-storage" | grep -v "usbhid" | grep -v "usblp" >> /tmp/modules-sorted
+grep "firewire/" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "ieee1394/" /tmp/modules-stripped >> /tmp/modules-sorted
+
+# add scsi and virtio device modules at the end
+grep "virtio_blk" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "sd_mod" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "sr_mod" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "/st.ko" /tmp/modules-stripped >> /tmp/modules-sorted
+grep "/sg.ko" /tmp/modules-stripped >> /tmp/modules-sorted
+
+
+sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" /tmp/modules-sorted >> /tmp/moduleslist
+
+listmods() {
+ key=$1 ; shift
+ ex=
+ while [ "$1" ]; do
+ [ "$ex" ] && ex="$ex|$1" || ex="$1"
+ shift
+ done
+ for ln in $(grep "$key" /tmp/modules-sorted | sed 's|^insmod ||g'); do
+ if [ "$ex" ]; then
+ echo $ln | egrep -v "$ex" | sed -ne "s#^/.*/\(.*\)\.ko.*#\1#p"
+ else
+ echo $ln | sed -ne "s#^/.*/\(.*\)\.ko.*#\1#p"
+ fi
+ done
+}
+showlist() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ echo -n "$cat: "
+ for i in $*; do echo -n "$i "; done
+ echo ""
+}
+
+showlist2() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ echo -n "$cat="
+ for i in $*; do echo -n "$i "; done
+ echo ""
+}
+
+showlist3() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ for i in $*; do echo -n "$i "; done
+ echo ""
+}
+
+# starting different actions
+while [ $# -gt 0 ]; do
+ case $1 in
+ -hooks-dir=*|--hooks-dir=*)
+ HOOKS_DIR="$(echo $1 | awk -F= '{print $2;}')"
+ ;;
+ --load-modules)
+ # load all detected pci modules
+ for i in $(cat /tmp/moduleslist); do
+ if [ -e /lib/udev/load-modules.sh ]; then
+ /lib/udev/load-modules.sh $i > /dev/null 2>&1
+ else
+ modprobe $i > /dev/null 2>&1
+ fi
+ done
+ ;;
+
+ --unload-modules)
+ # load all detected pci modules
+ for i in $(cat /tmp/moduleslist); do
+ modprobe -r $i > /dev/null 2>&1
+ done
+ ;;
+
+ --show-modules)
+ showlist "AGP " $(listmods agp/)
+ showlist "ACPI " $(listmods acpi/)
+ showlist "IDE " $(listmods ide/ ide-)
+ showlist "PATA " $(listmods ata/pata pata_acpi) $(listmods ata/ata_piix)
+ showlist "SCSI " $(listmods virtio/virtio_pci) $(listmods scsi/) $(listmods message/fusion/) $(listmods drivers/block/ nbd pktcdvd sx8 floppy)
+ showlist "SATA " $(listmods ata/ pata ata_generic) $(listmods drivers/block/sx8)
+ showlist "USB " $(listmods usb/ usb/input)
+ showlist "FW " $(listmods firewire/) $(listmods ieee1394/)
+ showlist "NET " $(listmods net/ irda/)
+ showlist "INPUT " $(listmods input/ pcspkr) $(listmods hid/)
+ showlist "IRDA " $(listmods irda/)
+ showlist "ISDN " $(listmods isdn/)
+ showlist "PCMCIA " $(listmods pcmcia/)
+ showlist "SOUND " $(listmods pcspkr) $(listmods sound/)
+ showlist "STAGING" $(listmods staging/)
+ showlist "VIDEO " $(listmods video/)
+ showlist "OTHER " $(listmods modules/ agp/ acpi/ ide/ scsi/ message/fusion block/sx8 block/cciss block/cpqarray block/DAC960 block/virtio virtio/virtio_pci ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ firewire/ hid/ staging/)
+ ;;
+
+ --show-modules-order)
+ showlist "MODULES ORDER" $(listmods modules/)
+ ;;
+
+ --show-agp) showlist "AGP " $(listmods agp/) ;;
+ --show-acpi) showlist "ACPI " $(listmods acpi/) ;;
+ --show-ide) showlist "IDE " $(listmods ide/ ide-) ;;
+ --show-pata) showlist "PATA " $(listmods ata/pata pata_acpi) $(listmods ata/ata_piix) ;;
+ --show-scsi) showlist "SCSI " $(listmods virtio/virtio_pci) $(listmods scsi/) $(listmods message/fusion/) $(listmods drivers/block/ nbd pktcdvd sx8 floppy) ;;
+ --show-sata) showlist "SATA " $(listmods ata/ pata ata_generic) $(listmods drivers/block/sx8) ;;
+ --show-usb) showlist "USB " $(listmods usb/ usb/input) ;;
+ --show-fw) showlist "FW " $(listmods firewire/) $(listmods ieee1394/) ;;
+ --show-net) showlist "NET " $(listmods net/ irda/) ;;
+ --show-input) showlist "INPUT " $(listmods input/ pcspkr) $(listmods hid/) ;;
+ --show-irda) showlist "IRDA " $(listmods irda/) ;;
+ --show-isdn) showlist "ISDN " $(listmods isdn/) ;;
+ --show-pcmcia) showlist "PCMCIA " $(listmods pcmcia/) ;;
+ --show-sound) showlist "SOUND " $(listmods pcspkr) $(listmods sound/) ;;
+ --show-staging) showlist "STAGING" $(listmods staging/) ;;
+ --show-video) showlist "VIDEO " $(listmods video/) ;;
+ --show-other) showlist "OTHER " $(listmods .ko agp/ acpi/ ide/ scsi/ message/fusion block/sx8 block/cciss block/cpqarray block/DAC960 block/virtio virtio/virtio_pci ata/ usb/ ieee1394 net/ isdn/ input/ irda/ pcmcia/ sound/ video/ firewire/ hid/ staging/) ;;
+ --filesystem) FILESYSTEM="ext2 ext3 ext4 nilfs2 btrfs reiserfs xfs jfs vfat"
+ for i in $FILESYSTEM; do
+ [ "$(grep $i /tmp/.blkid)" ] && FS="$FS $i"
+ done
+ [ "$(echo $FS | grep btrfs)" ] && FS="$FS crc32c"
+ MODULES_INITRAMFS="$MODULES_INITRAMFS $FS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --hostcontroller)HOSTCONTROLLER="$(listmods virtio/virtio_pci) $(listmods ide/ ide-) $(listmods ata/pata pata_acpi) $(listmods scsi/ /sg.ko /st.ko scsi_mod sr_mod sd_mod) $(listmods message/fusion/) $(listmods drivers/block/ virtio_blk nbd pktcdvd sx8 floppy) $(listmods ata/ pata ata_generic) $(listmods drivers/block/sx8) $(listmods ehci-hcd) $(listmods uhci-hcd) $(listmods ohci-hcd) $(listmods virtio_blk)"
+ MODULES_INITRAMFS="$MODULES_INITRAMFS $HOSTCONTROLLER"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --ati-kms) KMS="radeon"
+ MODULES_INITRAMFS="$KMS $MODULES_INITRAMFS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --intel-kms) KMS="i915"
+ MODULES_INITRAMFS="$KMS $MODULES_INITRAMFS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --nvidia-kms) KMS="nouveau"
+ MODULES_INITRAMFS="$KMS $MODULES_INITRAMFS"
+ showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --uvesafb) FB="uvesafb"
+ MODULES_INITRAMFS="$FB $MODULES_INITRAMFS"
+ ! [ "$HOOKS" = "1" ] && showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --fbmodule) FB=""
+ for i in $(cat /etc/modprobe.d/framebuffer_blacklist.conf); do
+ i=$(echo $i | sed -e 's/blacklist //g')
+ # check if already in FB array, to avoid double entries
+ if [ "$(cat /proc/modules | grep ^$i)" ]; then
+ ! [ "$(grep -w $FB)" ] && FB="$i"
+ fi
+ done
+ MODULES_INITRAMFS="$FB $MODULES_INITRAMFS "
+ ! [ "$HOOKS" = "1" ] && showlist2 "MODULES" \"$MODULES_INITRAMFS\" | sed -e 's/(\ /(/g' -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --net) if [ "$(showlist2 "MODULES" \($(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/) \) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g' | grep '8139cp')" ] ; then
+ if [ "$(dmesg | grep 'use 8139too')" ]; then
+ MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/)"
+ MODULES_EXPORTED="$(echo $MODULES_EXPORTED | sed -e 's/8139cp//g')"
+ BLACKLIST_UDEV="!8139cp"
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ else
+ MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/)"
+ MODULES_EXPORTED="$(echo $MODULES_EXPORTED | sed -e 's/8139too//g')"
+ BLACKLIST_UDEV="!8139too"
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ fi
+ else
+ MODULES_EXPORTED="$MODULES_EXPORTED $(listmods drivers/net/ irda ppp_generic slhc) $(listmods drivers/usb/net/) $(listmods drivers/staging/)"
+ BLACKLIST_UDEV=""
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ fi
+ ;;
+ --sound) MODULES_EXPORTED="$MODULES_EXPORTED $(listmods pcspkr) $(listmods sound/)"
+ BLACKLIST_UDEV=""
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --usbhost) MODULES_EXPORTED="$MODULES_EXPORTED $(listmods ehci-hcd) $(listmods uhci-hcd) $(listmods ohci-hcd)"
+ BLACKLIST_UDEV=""
+ for i in $MODULES_EXPORTED; do
+ BLACKLIST_UDEV="$BLACKLIST_UDEV !$i"
+ done
+ showlist2 "MODULES" \($BLACKLIST_UDEV $MODULES_EXPORTED\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --modules) showlist2 "MODULES" \($(listmods modules/)\) | sed -e 's/(\ /(/g' -e 's/\ )/)/g' -e 's/\ \ /\ /g'
+ ;;
+ --hooks)
+ if [ "$HOOKS_DIR" = "" ]; then
+ HOOKS_DIR="/lib/initcpio/install"
+ fi
+ START_HOOKS="base v86d udev keymap autodetect ide pata scsi sata usb fw pcmcia net dmraid usbinput $ADVANCED btrfs filesystems"
+ # remove the ones that don't exist on the system
+ for i in ${START_HOOKS}; do
+ if ! [ -e "${HOOKS_DIR}/$i" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/${i}\ //g")
+ fi
+ done
+ # ide/pata check
+ if [ "${IDE_LEGACY}" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/pata//g")
+ else
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/ide//g")
+ fi
+ if ! [ "$USBINPUT" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/usbinput//g")
+ fi
+ if ! [ "$KEYMAP" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/keymap//g")
+ fi
+ if ! [ "$UVESAFB" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/v86d//g")
+ fi
+ if ! [ "$DMRAID" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/dmraid//g")
+ fi
+ if ! [ "$USB" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/usb\ //g")
+ fi
+ if ! [ "$FW" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/fw//g")
+ fi
+ if ! [ "$PCMCIA" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/pcmcia//g")
+ fi
+ if ! [ "$NFS" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/net//g")
+ fi
+ if ! [ "$BTRFS" = "1" ]; then
+ START_HOOKS=$(echo $START_HOOKS | sed -e "s/btrfs//g")
+ fi
+ echo "HOOKS=\"$START_HOOKS\"" | sed -e 's/"\ /"/g' -e 's/\ "/"/g' -e 's/\ \ /\ /g'
+ ;;
+ --advanced) ADVANCED_ARCHBOOT=""
+ for i in $ADVANCED; do
+ ADVANCED_ARCHBOOT="$ADVANCED_ARCHBOOT $(echo arch_$i)"
+ done
+ echo "$ADVANCED_ARCHBOOT"
+ ;;
+ esac
+ shift
+done
+
+# cleanup
+rm /tmp/modules-plain
+rm /tmp/modules-sorted
+rm /tmp/modules-stripped
+rm /tmp/moduleslist
+
+# vim: set ts=2 sw=2 noet:
diff --git a/abs/not_built/core/jack/40-hpet-permissions.rules b/abs/not_built/core/jack/40-hpet-permissions.rules
new file mode 100644
index 0000000..7af3780
--- /dev/null
+++ b/abs/not_built/core/jack/40-hpet-permissions.rules
@@ -0,0 +1,2 @@
+KERNEL=="rtc0", GROUP="audio"
+KERNEL=="hpet", GROUP="audio"
diff --git a/abs/not_built/core/jack/99-audio.conf b/abs/not_built/core/jack/99-audio.conf
new file mode 100644
index 0000000..eb76ef9
--- /dev/null
+++ b/abs/not_built/core/jack/99-audio.conf
@@ -0,0 +1,2 @@
+@audio - rtprio 99
+@audio - memlock unlimited
diff --git a/abs/not_built/core/jack/PKGBUILD b/abs/not_built/core/jack/PKGBUILD
new file mode 100644
index 0000000..7515001
--- /dev/null
+++ b/abs/not_built/core/jack/PKGBUILD
@@ -0,0 +1,58 @@
+# $Id: PKGBUILD 157734 2012-04-29 05:10:29Z allan $
+# Maintainer: Ray Rashif <schiv@archlinux.org>
+# Contributor: tobias <tobias@archlinux.net>
+# Contributor: Robert Emil Berge <robert@rebi.no>
+
+pkgname=jack
+_longname=jack-audio-connection-kit
+pkgver=0.121.3
+pkgrel=6
+pkgdesc="A low-latency audio server"
+arch=('i686' 'x86_64')
+license=('GPL' 'LGPL')
+depends=('libsamplerate' 'readline')
+makedepends=('doxygen' 'libffado' 'celt')
+optdepends=('libffado: FireWire support'
+ 'celt: NetJACK driver')
+url="http://jackaudio.org/"
+backup=(etc/security/limits.d/99-audio.conf)
+options=('!libtool')
+provides=("$_longname=$pkgver")
+conflicts=("$_longname")
+replaces=("$_longname")
+install=$pkgname.install
+source=("http://jackaudio.org/downloads/$_longname-$pkgver.tar.gz"
+ '99-audio.conf'
+ '40-hpet-permissions.rules')
+md5sums=('35f470f7422c37b33eb965033f7a42e8'
+ 'ae65b7c9ebe0fff6c918ba9d97ae342d'
+ '471aad533ff56c5d3cbbf65ce32cadef')
+
+build() {
+ cd "$srcdir/$_longname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --libdir=/usr/lib
+ make
+}
+
+package() {
+ cd "$srcdir/$_longname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+ # configure realtime access/scheduling
+ # see https://bugs.archlinux.org/task/26343
+ install -Dm644 "$srcdir/99-audio.conf" \
+ "$pkgdir/etc/security/limits.d/99-audio.conf"
+
+ install -Dm644 "$srcdir/40-hpet-permissions.rules" \
+ "$pkgdir/usr/lib/udev/rules.d/40-hpet-permissions.rules"
+
+ # install a missing header forgotten by upstream
+ # see https://bugs.archlinux.org/task/26865
+ install -Dm644 "$srcdir/$_longname-$pkgver/jack/jslist.h" \
+ "$pkgdir/usr/include/jack/jslist.h"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/not_built/core/jack/jack.install b/abs/not_built/core/jack/jack.install
new file mode 100644
index 0000000..8be532f
--- /dev/null
+++ b/abs/not_built/core/jack/jack.install
@@ -0,0 +1,5 @@
+post_upgrade() {
+ rm -f etc/security/limits.d/99-realtime.conf
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/not_built/core/kakasi/PKGBUILD b/abs/not_built/core/kakasi/PKGBUILD
new file mode 100644
index 0000000..2a8c08a
--- /dev/null
+++ b/abs/not_built/core/kakasi/PKGBUILD
@@ -0,0 +1,20 @@
+# Maintainer: Allan McRae <mcrae_allan@hotmail.com>
+
+pkgname=kakasi
+pkgver=2.3.4
+pkgrel=2
+pkgdesc="Convert Kanji characters to Hiragana, Katakana or Romaji"
+arch=('i686' 'x86_64')
+url="http://kakasi.namazu.org/"
+license=('GPL')
+source=(http://kakasi.namazu.org/stable/${pkgname}-${pkgver}.tar.gz)
+md5sums=(4eff51aafbd56c9635791a20c03efa8f)
+
+build() {
+ cd "$startdir/src/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr
+ make || return 1
+ make DESTDIR="$startdir/pkg" install
+}
+
diff --git a/abs/not_built/core/kdelibs3/PKGBUILD b/abs/not_built/core/kdelibs3/PKGBUILD
new file mode 100644
index 0000000..5331af0
--- /dev/null
+++ b/abs/not_built/core/kdelibs3/PKGBUILD
@@ -0,0 +1,57 @@
+# $ Id: $
+# Maintainer: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=kdelibs3
+pkgver=3.5.10
+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'
+ 'jasper' 'bzip2' 'openssl' 'libidn' 'libxrender'
+ 'aspell' 'heimdal' 'acl' 'libtiff' 'qt3' 'ca-certificates'
+ 'libjpeg')
+makedepends=('pkgconfig' )
+options=('libtool')
+install='kdelibs3.install'
+source=("http://download.kde.org/stable/${pkgver}/src/kdelibs-${pkgver}.tar.bz2"
+ 'kde3.profile')
+md5sums=('43cd55ed15f63b5738d620ef9f9fd568'
+ '3c49828eb8985cfb25af8e1495f7800a')
+
+build() {
+ cd $srcdir/kdelibs-$pkgver
+
+ . /etc/profile.d/qt3.sh
+ . $srcdir/kde3.profile
+
+ # install KDE3 profile
+ install -D -m755 $srcdir/kde3.profile $pkgdir/etc/profile.d/kde3.sh
+
+ ./configure --prefix=/opt/kde \
+ --with-distribution='Arch Linux' \
+ --with-alsa \
+ --disable-dependency-tracking \
+ --disable-debug \
+ --disable-dnssd \
+ --disable-dnotify \
+ --enable-inotify \
+ --enable-sendfile \
+ --without-lua \
+ --without-hspell \
+ --enable-gcc-hidden-visibility \
+ --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
+
+ # cert bundle seems to be hardcoded
+ # link it to the one from ca-certificates
+ rm -f $pkgdir/opt/kde/share/apps/kssl/ca-bundle.crt
+ ln -sf /etc/ssl/certs/ca-certificates.crt $pkgdir/opt/kde/share/apps/kssl/ca-bundle.crt
+}
diff --git a/abs/not_built/core/kdelibs3/__changelog b/abs/not_built/core/kdelibs3/__changelog
new file mode 100644
index 0000000..2abf977
--- /dev/null
+++ b/abs/not_built/core/kdelibs3/__changelog
@@ -0,0 +1 @@
+remove cups support
diff --git a/abs/not_built/core/kdelibs3/kde3.profile b/abs/not_built/core/kdelibs3/kde3.profile
new file mode 100755
index 0000000..d7c7e9d
--- /dev/null
+++ b/abs/not_built/core/kdelibs3/kde3.profile
@@ -0,0 +1,15 @@
+export KDE3DIR=/opt/kde
+export KDEDIRS=/usr:$KDE3DIR
+export PATH=$PATH:$KDE3DIR/bin
+export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$KDE3DIR/lib/pkgconfig
+if [ ! -z $XDG_DATA_DIRS ]; then
+ export XDG_DATA_DIRS=$XDG_DATA_DIRS:$KDE3DIR/share
+else
+ export XDG_DATA_DIRS=$KDE3DIR/share
+fi
+if [ ! -z $XDG_CONFIG_DIRS ]; then
+ export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:$KDE3DIR/etc/xdg
+else
+ export XDG_CONFIG_DIRS=$KDE3DIR/etc/xdg
+fi
+unset KDE3DIR \ No newline at end of file
diff --git a/abs/not_built/core/kdelibs3/kdelibs3.install b/abs/not_built/core/kdelibs3/kdelibs3.install
new file mode 100644
index 0000000..060ba21
--- /dev/null
+++ b/abs/not_built/core/kdelibs3/kdelibs3.install
@@ -0,0 +1,11 @@
+post_install() {
+ grep -q '/opt/kde/lib' etc/ld.so.conf || echo '/opt/kde/lib' >> etc/ld.so.conf
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ sed -ie '/\/opt\/kde\/lib/d' etc/ld.so.conf
+}
diff --git a/abs/not_built/core/libcl/PKGBUILD b/abs/not_built/core/libcl/PKGBUILD
new file mode 100644
index 0000000..cd9e82e
--- /dev/null
+++ b/abs/not_built/core/libcl/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id$
+#Maintainer: Ionut Biru <ibiru@archlinux.org>
+
+pkgname=libcl
+pkgver=1.0
+_pkgver=275.19
+pkgrel=1
+pkgdesc="OpenCL library and ICD loader from NVIDIA"
+arch=('i686' 'x86_64')
+url="http://www.nvidia.com/"
+depends=('gcc-libs')
+license=('custom')
+options=('!strip')
+
+if [ "$CARCH" = "i686" ]; then
+ _arch='x86'
+ _pkg="NVIDIA-Linux-${_arch}-${_pkgver}"
+ source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${_pkgver}/${_pkg}.run")
+ md5sums=('9e74b1913ff5eb6786600d47b64ba57d')
+elif [ "$CARCH" = "x86_64" ]; then
+ _arch='x86_64'
+ _pkg="NVIDIA-Linux-${_arch}-${_pkgver}-no-compat32"
+ source=("ftp://download.nvidia.com/XFree86/Linux-${_arch}/${_pkgver}/${_pkg}.run")
+ md5sums=('45a6074db3efe961d025afa7a89fa036')
+fi
+build() {
+ cd $srcdir
+ sh ${_pkg}.run --extract-only
+}
+
+package() {
+ cd $srcdir/${_pkg}
+ install -D -m755 libOpenCL.so.1.0.0 $pkgdir/usr/lib/libOpenCL.so.1.0.0
+ ln -s /usr/lib/libOpenCL.so.1.0.0 $pkgdir/usr/lib/libOpenCL.so.1
+ ln -s /usr/lib/libOpenCL.so.1 $pkgdir/usr/lib/libOpenCL.so
+ install -D -m644 LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}
+md5sums=('9e74b1913ff5eb6786600d47b64ba57d')
diff --git a/abs/not_built/core/libdc1394/PKGBUILD b/abs/not_built/core/libdc1394/PKGBUILD
new file mode 100644
index 0000000..d9ccecb
--- /dev/null
+++ b/abs/not_built/core/libdc1394/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 72230 2010-03-13 20:17:43Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libdc1394
+pkgver=2.1.2
+pkgrel=2
+pkgdesc="High level programming interface to control IEEE 1394 based cameras"
+arch=(i686 x86_64)
+license=('LGPL')
+url="http://sourceforge.net/projects/libdc1394/"
+depends=('libraw1394>=2.0.5' 'libusb')
+options=(!libtool !emptydirs)
+source=(http://downloads.sourceforge.net/sourceforge/libdc1394/${pkgname}-${pkgver}.tar.gz)
+md5sums=('b85f1ade88d8d96688d5965ed8603d53')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
+
diff --git a/abs/not_built/core/libdc1394/__changelog b/abs/not_built/core/libdc1394/__changelog
new file mode 100644
index 0000000..2421e7e
--- /dev/null
+++ b/abs/not_built/core/libdc1394/__changelog
@@ -0,0 +1 @@
+1/30/11 - chw - Changed dep from libusb1 to libusb.
diff --git a/abs/not_built/core/libfetch/Makefile b/abs/not_built/core/libfetch/Makefile
new file mode 100644
index 0000000..53bcee9
--- /dev/null
+++ b/abs/not_built/core/libfetch/Makefile
@@ -0,0 +1,89 @@
+prefix = /usr
+DESTDIR =
+DEBUG = false
+FETCH_WITH_INET6 = true
+FETCH_WITH_OPENSSL = true
+
+WARNINGS = -Wall -Wstrict-prototypes -Wsign-compare -Wchar-subscripts \
+ -Wpointer-arith -Wcast-align
+CFLAGS = -O2 -pipe -I. -fPIC $(WARNINGS) \
+ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGE_FILES
+
+CFLAGS += -DFTP_COMBINE_CWDS -DNETBSD
+
+ifeq ($(strip $(FETCH_WITH_INET6)), true)
+CFLAGS+= -DINET6
+endif
+
+ifeq ($(strip $(FETCH_WITH_OPENSSL)), true)
+CFLAGS+= -DWITH_SSL
+LDFLAGS= -lssl -lcrypto
+endif
+
+ifeq ($(strip $(DEBUG)), true)
+CFLAGS += -g -DDEBUG
+else
+CFLAGS += -UDEBUG
+endif
+
+CC = gcc
+LD = gcc
+AR = ar
+RANLIB = ranlib
+INSTALL = install -c -D
+
+OBJS= fetch.o common.o ftp.o http.o file.o
+INCS= fetch.h common.h
+GEN = ftperr.h httperr.h
+MAN = libdownload.3
+
+#pretty print!
+E = @/bin/echo
+Q = @
+
+all: libfetch.so libfetch.a
+.PHONY: all
+
+%.o: %.c $(INCS) $(GEN)
+ $(E) " compile " $@
+ $(Q) $(CC) $(CFLAGS) -c $<
+
+ftperr.h: ftp.errors Makefile errlist.sh
+ $(E) " generate " $@
+ $(Q) ./errlist.sh ftp_errlist FTP ftp.errors > $@
+
+httperr.h: http.errors Makefile errlist.sh
+ $(E) " generate " $@
+ $(Q) ./errlist.sh http_errlist HTTP http.errors > $@
+
+libfetch.so: $(GEN) $(INCS) $(OBJS)
+ $(E) " build " $@
+ $(Q) rm -f $@
+ $(Q) $(LD) $(LDFLAGS) *.o -shared -o $@
+ $(E) " built with: " $(CFLAGS)
+
+libfetch.a: $(GEN) $(INCS) $(OBJS)
+ $(E) " build " $@
+ $(Q) rm -f $@
+ $(Q) $(AR) rcs $@ *.o
+ $(Q) $(RANLIB) $@
+ $(E) " built with: " $(CFLAGS)
+
+clean:
+ $(E) " clean "
+ $(Q) rm -f libfetch.so libfetch.a *.o $(GEN)
+.PHONY: clean
+
+install: all
+ $(Q) $(INSTALL) -m 755 libfetch.so $(DESTDIR)$(prefix)/lib/libfetch.so
+ $(Q) $(INSTALL) -m 644 libfetch.a $(DESTDIR)$(prefix)/lib/libfetch.a
+ $(Q) $(INSTALL) -m 644 fetch.h $(DESTDIR)$(prefix)/include/fetch.h
+ $(Q) $(INSTALL) -m 644 fetch.3 $(DESTDIR)$(prefix)/share/man/man3/fetch.3
+.PHONY: install
+
+uninstall:
+ $(Q) rm -f $(DESTDIR)$(prefix)/lib/libfetch.so
+ $(Q) rm -f $(DESTDIR)$(prefix)/lib/libfetch.a
+ $(Q) rm -f $(DESTDIR)$(prefix)/include/fetch.h
+ $(Q) rm -f $(DESTDIR)$(prefix)/share/man/man3/fetch.3
+.PHONY: uninstall
diff --git a/abs/not_built/core/libfetch/PKGBUILD b/abs/not_built/core/libfetch/PKGBUILD
new file mode 100644
index 0000000..641e7d4
--- /dev/null
+++ b/abs/not_built/core/libfetch/PKGBUILD
@@ -0,0 +1,46 @@
+# $Id$
+# Maintainer: Aaron Griffin <aaron@archlinux.org>
+# Contributor: Xavier Chantry <shiningxc@gmail.com>
+
+pkgname=libfetch
+pkgver=2.33
+pkgrel=1
+pkgdesc="URL based download library"
+arch=('i686' 'x86_64')
+license=('BSD')
+depends=('openssl>=1.0.0')
+url="http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/net/libfetch/"
+source=(Makefile
+ ftp://ftp.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('5167d18db7660228e75290fc7d25fe56'
+ 'a176b94f7f30344ef8a71c047ca2136b')
+
+# keep an upgrade path for older installations
+PKGEXT='.pkg.tar.gz'
+
+# source PKGBUILD && mksource
+mksource() {
+ export CVSROOT=:pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
+ D=pkgsrc/net/libfetch
+ [ -d "$D" ] && cvs up "$D" || cvs co "$D"
+ pushd "$D"
+ dirname=$(sed -n 's/DISTNAME=.*\(libfetch-.*$\)/\1/p' Makefile)
+ cp -r files $dirname
+ tar -czv --exclude=CVS -f ../../../$dirname.tar.gz $dirname
+ rm -r $dirname
+ popd
+}
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ cp $srcdir/Makefile .
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+ licdir=$pkgdir/usr/share/licenses/libfetch/
+ mkdir -p $licdir
+ sed -n -e '/Copyright (c)/,/SUCH DAMAGE\./p' common.c | cut -c '4-' > $licdir/LICENSE
+}
diff --git a/abs/not_built/core/libfetch/libfetch-2.33-1-i686.pkg.tar.gz b/abs/not_built/core/libfetch/libfetch-2.33-1-i686.pkg.tar.gz
new file mode 120000
index 0000000..2c8ffbe
--- /dev/null
+++ b/abs/not_built/core/libfetch/libfetch-2.33-1-i686.pkg.tar.gz
@@ -0,0 +1 @@
+/data/pkg_repo/packages/libfetch-2.33-1-i686.pkg.tar.gz \ No newline at end of file
diff --git a/abs/not_built/core/libgsf/PKGBUILD b/abs/not_built/core/libgsf/PKGBUILD
new file mode 100644
index 0000000..a94faa2
--- /dev/null
+++ b/abs/not_built/core/libgsf/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id: PKGBUILD 89728 2010-09-03 13:08:07Z remy $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+
+pkgbase=libgsf
+pkgname=('libgsf' 'libgsf-gnome')
+pkgver=1.14.18
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://www.gnome.org/"
+license=('GPL' 'LGPL')
+makedepends=('libxml2>=2.7.7' 'glib2>=2.24.1' 'bzip2' 'intltool' 'pkgconfig'
+ 'python2' 'libbonobo>=2.24.3' 'gconf>=2.28.1' 'pygtk')
+options=('!libtool' '!emptydirs')
+source=(http://ftp.gnome.org/pub/GNOME/sources/${pkgbase}/1.14/${pkgbase}-${pkgver}.tar.bz2)
+sha256sums=('16d29e82f7eba68f919f2588ea5328973490fe6d4a7a5f160e8af89b387c9a95')
+
+build() {
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --mandir=/usr/share/man --disable-static || return 1
+ make || return 1
+}
+
+package_libgsf() {
+ pkgdesc="The GNOME Structured File Library is a utility library for reading and writing structured file formats"
+ depends=('libxml2>=2.7.7' 'glib2>=2.24.1' 'bzip2')
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make DESTDIR="${pkgdir}" GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 install || return 1
+ rm -f "${pkgdir}/usr/share/man/man1/gsf-office-thumbnailer.1"
+ rm -f "${pkgdir}/usr/lib/libgsf-gnome"*
+ rm -rf "${pkgdir}/usr/include/libgsf-1/gsf-gnome/"
+ rm -rf "${pkgdir}/etc/gconf"
+ rm -f "${pkgdir}/usr/lib/pkgconfig/libgsf-gnome-1.pc"
+ rm -f "${pkgdir}/usr/bin/gsf-office-thumbnailer"
+ rm -f "${pkgdir}"/usr/lib/python*/site-packages/gsf/gnomemodule.so
+}
+
+package_libgsf-gnome() {
+ pkgdesc="Libgsf GNOME components"
+ depends=("libgsf=${pkgver}" 'libbonobo>=2.24.3' 'gconf>=2.28.1')
+ install=libgsf-gnome.install
+
+ cd "${srcdir}/${pkgbase}-${pkgver}"
+ make -C gsf DESTDIR="${pkgdir}" install-libLTLIBRARIES || return 1
+ make -C gsf-gnome DESTDIR="${pkgdir}" install || return 1
+ make -C thumbnailer DESTDIR="${pkgdir}" install || return 1
+ make -C python DESTDIR="${pkgdir}" install || return 1
+ make -C doc DESTDIR="${pkgdir}" install-manpageDATA || return 1
+
+ rm -f "${pkgdir}/usr/share/man/man1/gsf.1"
+ rm -f "${pkgdir}/usr/share/man/man1/gsf-vba-dump.1"
+ rm -f "${pkgdir}"/usr/lib/python*/site-packages/gsf/_*
+ rm -f "${pkgdir}"/usr/lib/libgsf-1.so*
+ install -m755 -d "${pkgdir}/usr/lib/pkgconfig"
+ install -m644 libgsf-gnome-1.pc "${pkgdir}/usr/lib/pkgconfig/" || return 1
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema "${pkgdir}/usr/share/gconf/schemas/libgsf-gnome.schemas" --domain libgsf "${pkgdir}/etc/gconf/schemas/"*.schemas || return 1
+ rm -f "${pkgdir}/etc/gconf/schemas/"*.schemas
+}
diff --git a/abs/not_built/core/libgsf/libgsf-gnome.install b/abs/not_built/core/libgsf/libgsf-gnome.install
new file mode 100644
index 0000000..60f62ff
--- /dev/null
+++ b/abs/not_built/core/libgsf/libgsf-gnome.install
@@ -0,0 +1,19 @@
+pkgname=libgsf-gnome
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ if [ -f usr/share/gconf/schemas/${pkgname}.schemas ]; then
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+ fi
+}
diff --git a/abs/not_built/core/libsmbios/PKGBUILD b/abs/not_built/core/libsmbios/PKGBUILD
new file mode 100644
index 0000000..c996a28
--- /dev/null
+++ b/abs/not_built/core/libsmbios/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 78087 2010-04-19 09:25:42Z dgriffiths $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alessio 'mOLOk' Bolognino <themolok@gmail.com>
+# Contributor: daniel g. siegel <dgsiegel@gmail.com>
+
+pkgname=libsmbios
+pkgver=2.2.16
+pkgrel=2
+pkgdesc="A library for providing access to as much BIOS information as possible"
+arch=('i686' 'x86_64')
+url="http://linux.dell.com/libsmbios/main/index.html"
+license=('GPL' 'custom')
+depends=('gcc-libs>=4.3.3')
+makedepends=('libxml2')
+optdepends=('python: tools')
+source=(http://linux.dell.com/libsmbios/download/${pkgname}/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz)
+options=('!libtool')
+md5sums=('6edf6659fbb77e7d0f60d5217a7d88ed')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ mkdir build
+ cd build
+ ../configure --prefix=/usr --sysconfdir=/etc --disable-static || return 1
+ mkdir -p out/libsmbios_c
+ mkdir -p out/libsmbios_c++
+ LD_PRELOAD="" make || return 1
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}/build"
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m755 -d "${pkgdir}/usr/include"
+ cp -a ../src/include/* "${pkgdir}/usr/include/" || return 1
+ cp -a out/public-include/* "${pkgdir}/usr/include/" || return 1
+
+ rm -rf "${pkgdir}/etc/yum"
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 ../COPYING-OSL "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/abs/not_built/core/libwmf/PKGBUILD b/abs/not_built/core/libwmf/PKGBUILD
new file mode 100644
index 0000000..1206151
--- /dev/null
+++ b/abs/not_built/core/libwmf/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 87507 2010-08-15 06:45:18Z eric $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: FJ <joostef@gmail.com>
+
+pkgname=libwmf
+pkgver=0.2.8.4
+pkgrel=8
+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"
+license=("LGPL")
+depends=('libpng' 'libx11' 'freetype2' 'libjpeg' 'gsfonts' 'expat')
+makedepends=('gtk2' 'libxt' 'pkg-config')
+options=('!libtool' '!docs' '!emptydirs')
+install=libwmf.install
+source=(http://downloads.sourceforge.net/sourceforge/wvware/${pkgname}-${pkgver}.tar.gz
+ libpng14.patch libwmf-0.2.8.4-useafterfree.patch)
+md5sums=('d1177739bf1ceb07f57421f0cee191e0' '33d3c07a1be9f99fd88de220930c5550'\
+ '0f02c1cb8a87bf7158634503bf0537e2')
+sha1sums=('822ab3bd0f5e8f39ad732f2774a8e9f18fc91e89' '15edb94eec7c9cea988e83660b334e56bf1fe897'\
+ 'ea6d28880840e86c96f9079bfd591da54dcffa5c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/libpng14.patch"
+ patch -Np1 -i "${srcdir}/libwmf-0.2.8.4-useafterfree.patch"
+ ./configure --prefix=/usr \
+ --with-gsfontdir=/usr/share/fonts/Type1 \
+ --with-fontdir=/usr/share/fonts/Type1 \
+ --with-gsfontmap=/usr/share/ghostscript/8.15/lib/Fontmap.GS
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ #Remove fonts, these are in gsfonts
+ rm -rf "${pkgdir}/usr/share/fonts"
+ #Remove static GTK loader, can't use it anyways
+ rm -f "${pkgdir}"/usr/lib/gtk-2.0/*/loaders/io-wmf.a
+}
diff --git a/abs/not_built/core/libwmf/libpng14.patch b/abs/not_built/core/libwmf/libpng14.patch
new file mode 100644
index 0000000..3d38c71
--- /dev/null
+++ b/abs/not_built/core/libwmf/libpng14.patch
@@ -0,0 +1,12 @@
+diff -Nur libwmf-0.2.8.4.orig/src/extra/gd/gd_png.c libwmf-0.2.8.4/src/extra/gd/gd_png.c
+--- libwmf-0.2.8.4.orig/src/extra/gd/gd_png.c 2005-07-27 23:35:06.000000000 +0300
++++ libwmf-0.2.8.4/src/extra/gd/gd_png.c 2010-01-17 01:33:58.000000000 +0200
+@@ -136,7 +136,7 @@
+ /* first do a quick check that the file really is a PNG image; could
+ * have used slightly more general png_sig_cmp() function instead */
+ gdGetBuf (sig, 8, infile);
+- if (!png_check_sig (sig, 8))
++ if (png_sig_cmp (sig, 0, 8))
+ return NULL; /* bad signature */
+
+ #ifndef PNG_SETJMP_NOT_SUPPORTED
diff --git a/abs/not_built/core/libwmf/libwmf-0.2.8.4-useafterfree.patch b/abs/not_built/core/libwmf/libwmf-0.2.8.4-useafterfree.patch
new file mode 100644
index 0000000..328c541
--- /dev/null
+++ b/abs/not_built/core/libwmf/libwmf-0.2.8.4-useafterfree.patch
@@ -0,0 +1,10 @@
+--- libwmf-0.2.8.4/src/extra/gd/gd_clip.c.CVE-2009-1364-im-clip-list 2009-04-24 04:06:44.000000000 -0400
++++ libwmf-0.2.8.4/src/extra/gd/gd_clip.c 2009-04-24 04:08:30.000000000 -0400
+@@ -70,6 +70,7 @@ void gdClipSetAdd(gdImagePtr im,gdClipRe
+ { more = gdRealloc (im->clip->list,(im->clip->max + 8) * sizeof (gdClipRectangle));
+ if (more == 0) return;
+ im->clip->max += 8;
++ im->clip->list = more;
+ }
+ im->clip->list[im->clip->count] = (*rect);
+ im->clip->count++;
diff --git a/abs/not_built/core/libwmf/libwmf.install b/abs/not_built/core/libwmf/libwmf.install
new file mode 100644
index 0000000..9c99a90
--- /dev/null
+++ b/abs/not_built/core/libwmf/libwmf.install
@@ -0,0 +1,13 @@
+post_install() {
+ if [ -x usr/bin/gdk-pixbuf-query-loaders ]; then
+ gdk-pixbuf-query-loaders > etc/gtk-2.0/gdk-pixbuf.loaders
+ fi
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
diff --git a/abs/not_built/core/libx86/PKGBUILD b/abs/not_built/core/libx86/PKGBUILD
new file mode 100644
index 0000000..a686b6b
--- /dev/null
+++ b/abs/not_built/core/libx86/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 21250 2008-12-11 16:58:44Z thayer $
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: tardo <tardo@nagi-fanboi.net>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=libx86
+pkgver=1.1
+pkgrel=2
+pkgdesc="Provides an lrmi interface that works on x86, am64 and alpha"
+arch=('i686' 'x86_64')
+url="http://www.codon.org.uk/~mjg59/libx86/"
+license=('custom')
+depends=('glibc')
+source=(http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-$pkgver.tar.gz
+ libx86-ifmask.patch)
+md5sums=('41bee1f8e22b82d82b5f7d7ba51abc2a'
+ '573897186eb8670d8d97c64ea7614001')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ # lrmi.c patch courtesy of Gentoo
+ patch -Np0 -i $srcdir/libx86-ifmask.patch || return 1
+
+ # compensate for x86_64
+ if [ "$CARCH" = "x86_64" ]; then
+ make BACKEND=x86emu || return 1
+ else
+ make || return 1
+ fi
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install || return 1
+ chmod 644 $pkgdir/usr/lib/libx86.a || return 1
+
+ install -D -m 644 COPYRIGHT $pkgdir/usr/share/licenses/$pkgname/COPYRIGHT || return 1
+}
diff --git a/abs/not_built/core/libx86/libx86-ifmask.patch b/abs/not_built/core/libx86/libx86-ifmask.patch
new file mode 100644
index 0000000..c99eeb8
--- /dev/null
+++ b/abs/not_built/core/libx86/libx86-ifmask.patch
@@ -0,0 +1,21 @@
+--- lrmi.c.orig 2008-09-06 12:24:36.070136428 +0200
++++ lrmi.c 2008-09-06 12:28:10.584287458 +0200
+@@ -55,6 +55,18 @@ OTHER DEALINGS IN THE SOFTWARE.
+ #include "x86-common.h"
+
+ #if defined(__linux__)
++#ifndef TF_MASK
++#define TF_MASK X86_EFLAGS_TF
++#endif
++#ifndef IF_MASK
++#define IF_MASK X86_EFLAGS_IF
++#endif
++#ifndef IOPL_MASK
++#define IOPL_MASK X86_EFLAGS_IOPL
++#endif
++#ifndef VIF_MASK
++#define VIF_MASK X86_EFLAGS_VIF
++#endif
+ #define DEFAULT_VM86_FLAGS (IF_MASK | IOPL_MASK)
+ #elif defined(__NetBSD__) || defined(__FreeBSD__)
+ #define DEFAULT_VM86_FLAGS (PSL_I | PSL_IOPL)
diff --git a/abs/not_built/core/libxfontcache/LICENSE b/abs/not_built/core/libxfontcache/LICENSE
new file mode 100644
index 0000000..c2fdbbd
--- /dev/null
+++ b/abs/not_built/core/libxfontcache/LICENSE
@@ -0,0 +1,99 @@
+* Copyright (c) 1998-1999 Shunsuke Akiyama <akiyama@jp.FreeBSD.org>.
+ * All rights reserved.
+ * Copyright (c) 1998-1999 X-TrueType Server Project, 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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)
+
+
+#
+# Copyright 2005 Red Hat, Inc.
+#
+# 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 Red Hat not be used in
+# advertising or publicity pertaining to distribution of the software without
+# specific, written prior permission. Red Hat makes no
+# representations about the suitability of this software for any purpose. It
+# is provided "as is" without express or implied warranty.
+#
+# RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+# EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+# DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+# TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+
+#
+# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+#
+# 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.
+#
+# The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+#
+# Except as contained in this notice, the name of the copyright holders shall
+# not be used in advertising or otherwise to promote the sale, use or
+# other dealings in this Software without prior written authorization
+# from the copyright holders.
+#
+
+
+
+Copyright (C) 2003 The XFree86 Project, 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, 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 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 XFREE86 PROJECT 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.
+
+Except as contained in this notice, the name of the XFree86 Project
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+from the XFree86 Project.
+
diff --git a/abs/not_built/core/libxfontcache/PKGBUILD b/abs/not_built/core/libxfontcache/PKGBUILD
new file mode 100644
index 0000000..0f01a34
--- /dev/null
+++ b/abs/not_built/core/libxfontcache/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 55250 2009-10-12 16:05:23Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxfontcache
+pkgver=1.0.5
+pkgrel=2
+pkgdesc="X11 font cache library"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxext' 'fontcacheproto')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(${url}/releases/individual/lib/libXfontcache-${pkgver}.tar.bz2 LICENSE)
+
+build() {
+ cd ${srcdir}/libXfontcache-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc --disable-static \
+ --build=${CHOST} --host=${CHOST}
+ make || return 1
+}
+package() {
+ cd ${srcdir}/libXfontcache-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 ../LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+md5sums=('bbd37768c87f63cf2eb845b2c0f56515'
+ '9738fb66a1a69ce086c461d5bedc7d8f')
diff --git a/abs/not_built/core/libxtrap/PKGBUILD b/abs/not_built/core/libxtrap/PKGBUILD
new file mode 100644
index 0000000..37427a3
--- /dev/null
+++ b/abs/not_built/core/libxtrap/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 4456 2008-07-07 16:29:51Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxtrap
+pkgver=1.0.0
+pkgrel=3
+pkgdesc="X11 event trapping extension library"
+arch=('i686' 'x86_64')
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxext' 'libxt' 'trapproto')
+makedepends=('pkgconfig')
+options=(!libtool)
+source=(${url}/releases/individual/lib/libXTrap-${pkgver}.tar.bz2)
+md5sums=('1e2d966b5b2b89910e418bb0f78e10de')
+
+build() {
+ cd ${srcdir}/libXTrap-${pkgver}
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+package() {
+ cd ${srcdir}/libXTrap-${pkgver}
+ 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/not_built/core/libxxf86misc/PKGBUILD b/abs/not_built/core/libxxf86misc/PKGBUILD
new file mode 100644
index 0000000..729ca3b
--- /dev/null
+++ b/abs/not_built/core/libxxf86misc/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 55245 2009-10-12 16:01:59Z andyrtr $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=libxxf86misc
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="X11 XFree86 miscellaneous extension library"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(libxext xf86miscproto)
+makedepends=(pkgconfig)
+options=(!libtool)
+source=(${url}/releases/individual/lib/libXxf86misc-${pkgver}.tar.bz2)
+
+build() {
+ cd ${srcdir}/libXxf86misc-${pkgver}
+ ./configure --prefix=/usr --mandir=/usr/share/man --disable-static \
+ --build=${CHOST} --host=${CHOST}
+ make || return 1
+}
+package() {
+ cd ${srcdir}/libXxf86misc-${pkgver}
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
+md5sums=('6bc0bf78909fd71021c466c793d4385c')
diff --git a/abs/not_built/core/linhes-live/PKGBUILD b/abs/not_built/core/linhes-live/PKGBUILD
new file mode 100644
index 0000000..c86e3cc
--- /dev/null
+++ b/abs/not_built/core/linhes-live/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: R. Dale Thomas <rdt[at]KnoppMyth[dot]net>
+# 2008.09.25
+pkgname=linhes-live
+pkgver=5.3.3
+pkgrel=25
+
+pkgdesc="LinHes compulsory components for the Live System."
+url="http://KnoppMyth.net"
+depends=()
+arch=( i586 i686 x86_64 )
+license=('GPL')
+
+build() {
+ # setup the local environment:
+ local rDir=bin eDir=etc lDir=lib sDir=session-save oDir=opt/$pkgname
+ local srcDir=${startdir}/src pkgDir=${startdir}/pkg
+ local insDir=${pkgDir}/$oDir proDir=${pkgDir}/${eDir}/profile.d
+
+ mkdir -p $pkgDir $insDir $proDir
+ cp -dr ${startdir}/$eDir $pkgDir
+ local pthDir=
+ echo 'export PATH=${PATH}:'"/$oDir/$rDir" > ${proDir}/${pkgname}.sh
+ cp -dr ${startdir}/$lDir $pkgDir
+ cp -dr ${startdir}/$rDir $insDir
+ [ -d ${startdir}/$sDir ] && cp -dr ${startdir}/$sDir $insDir
+ chown -R root.root $pkgDir
+ return 0
+}
+
+# End
+#change hook1 to wait for usb cdroms
+#add extra login to f_remountro for vmware/usb
diff --git a/abs/not_built/core/linhes-live/bin/gen_fstab b/abs/not_built/core/linhes-live/bin/gen_fstab
new file mode 100755
index 0000000..db36546
--- /dev/null
+++ b/abs/not_built/core/linhes-live/bin/gen_fstab
@@ -0,0 +1,122 @@
+#! /bin/sh
+#
+# gen_fstab - make new fstab for larch live system based on detected devices
+#
+# Author: Michael Towers <gradgrind[at]online[dot]de>
+#
+# This file is part of the larch project.
+#
+# larch 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.
+#
+# larch 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 larch; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#----------------------------------------------------------------------------
+# 2007.12.17
+
+# Note that the results are, by default, not copied into place
+# They end up here:
+DEST="/tmp/fstab"
+MNT="/tmp/mnt"
+
+# However, passing '-l' as command-line option will install them.
+# The old fstab will then be backed up to fstab~.
+LOAD=""
+if [ "$1" = "-l" ]; then LOAD="-l"; fi
+
+if [ -n "$( df | grep " ${MNT}" )" ]; then
+ echo "ERROR: Mounted filesystem at/within ${MNT}"
+ exit 1
+fi
+mkdir -p ${MNT}
+rm -rf ${MNT}/*
+
+tmpfile="/tmp/fstab2"
+: >${tmpfile}
+
+echo "# fstab generated by gen_fstab" >${DEST}
+echo "#<file system> <dir> <type> <options> <dump> <pass>" >>${DEST}
+echo >>${DEST}
+
+echo "none /dev/pts devpts defaults 0 0" >>${DEST}
+echo "none /dev/shm tmpfs defaults 0 0" >>${DEST}
+echo >>${DEST}
+
+# Get all other partitions
+sfdisk -d | grep "^/dev/" | sed "s|\(.*\):.*Id=\(..\).*|\1 \2|" | \
+ while read dev id; do
+ # Ignore if id is "Extended" or "LVM", these are not usable partitions
+ if [ "${id}" = "5" -o "${id}" = "8e" ]; then continue; fi
+ # See if swap
+ if [ "${id}" = "82" ]; then
+ printf "%-12s %-12s %-8s defaults,noatime 0 0\n" \
+ ${dev} swap swap >>${DEST}
+ continue
+ fi
+ removable=""
+ part=$( basename ${dev} )
+ if [ $( cat /sys/block/${part:0:3}/removable 2>/dev/null ) -ne 0 ]; then
+ removable="_rmv"
+ fi
+ mountdir=${part}${removable}
+ printf "%-12s %-12s %-8s user,noauto,noatime 0 0\n" \
+ ${dev} /mnt/${mountdir} auto >>${tmpfile}
+ mkdir -p ${MNT}/${mountdir}
+ done
+
+# LVM
+for lvmd in $( ls /dev/mapper 2>/dev/null | grep -v control ); do
+ printf "%-30s %-22s %-8s user,noauto,noatime 0 0\n" \
+ /dev/mapper/${lvmd} /mnt/${lvmd} auto >>${tmpfile}
+ mkdir -p ${MNT}/${lvmd}
+done
+
+echo >>${DEST}
+cat ${tmpfile} >>${DEST}
+rm ${tmpfile}
+echo >>${DEST}
+
+# CD devices
+for dev in $( cat /proc/sys/dev/cdrom/info 2>/dev/null | head -n 3 | \
+ tail -n 1 | cut -d ":" -f 2 ); do
+ mountdir="${dev}_cd"
+ mkdir ${MNT}/${mountdir}
+ printf "%-12s %-12s %-8s user,noauto,exec,unhide 0 0\n" \
+ /dev/${dev} /mnt/${mountdir} auto >>${DEST}
+done
+
+echo >>${DEST}
+echo "# This would do for a floppy" >>${DEST}
+echo "#/dev/fd0 /mnt/floppy vfat,ext2 rw,user,noauto 0 0" >>${DEST}
+echo "# + mkdir /mnt/floppy" >>${DEST}
+echo >>${DEST}
+echo "# E.g. for USB storage:" >>${DEST}
+echo "#/dev/sdb1 /mnt/usb auto rw,user,noauto 0 0" >>${DEST}
+echo "# + mkdir /mnt/usb" >>${DEST}
+
+if [ -n "${LOAD}" ]; then
+ # test if the script is started by root user. If not, exit
+ if [ $UID -ne 0 ]; then
+ echo "Only root can run ${APP}"; exit 1
+ fi
+
+ cp -b ${DEST} /etc/fstab
+ # Delete removeable mount points which are not currently mounted
+ for m in $( ls /mnt | grep ^[hs]d ); do
+ if [ -z "$( df | grep " /mnt/${m}$" )" ]; then
+ rmdir /mnt/${m}
+ fi
+ done
+ for m in $( ls ${MNT} ); do
+ mkdir -p /mnt/${m}
+ done
+fi
diff --git a/abs/not_built/core/linhes-live/bin/km b/abs/not_built/core/linhes-live/bin/km
new file mode 100755
index 0000000..386d966
--- /dev/null
+++ b/abs/not_built/core/linhes-live/bin/km
@@ -0,0 +1,76 @@
+#!/bin/sh
+# $Id: km,v 1.2 2005/12/13 04:14:53 judd Exp $
+# Modified by gradgrind to deal only with i386 keymaps
+# and BASEDIR changed
+# - also saves results to /etc/rc.conf
+
+# test if the script is started by root user. If not, exit
+if [ $UID -ne 0 ]; then
+ echo "This should be run as root"; exit 1
+fi
+
+ANSWER="/tmp/.km"
+BASEDIR="/usr/share/kbd"
+
+domenu()
+{
+ menutype=$1 ; shift
+ text=$1 ; shift
+ height=$1 ; shift
+ width=$1 ; shift
+ mheight=$1 ; shift
+
+ dialog --cancel-label "Skip" --$menutype "$text" $height $width $mheight $*
+}
+
+if [ ! -d $BASEDIR/keymaps ]; then
+ echo "Cannot load keymaps, as none were found in $BASEDIR/keymaps" >&2
+ exit 1
+else
+ echo "Scanning for keymaps..."
+ KEYMAPS=
+ for t in qwerty qwertz azerty dvorak; do
+ for i in `find $BASEDIR/keymaps/i386/$t -follow -name "*.gz"`; do
+ fn=`echo $i | sed "s|$BASEDIR/keymaps/i386/||"`
+ KEYMAPS="$KEYMAPS $fn -"
+ done
+ done
+ domenu menu "Select A Keymap" 22 60 16 $KEYMAPS 2>$ANSWER
+ keymap=`cat $ANSWER`
+fi
+
+if [ ! -d $BASEDIR/consolefonts ]; then
+ echo "Cannot load consolefonts, as none were found in $BASEDIR/consolefonts" >&2
+else
+ echo "Scanning for fonts..."
+ FONTS=
+ for i in `find $BASEDIR/consolefonts -follow -name "*.gz"`; do
+ fn=`echo $i | sed "s|$BASEDIR/consolefonts/||"`
+ FONTS="$FONTS $fn -"
+ done
+ domenu menu "Select A Console Font" 22 60 16 $FONTS 2>$ANSWER
+ font=`cat $ANSWER`
+fi
+
+if [ "$keymap" ]; then
+ echo "Loading keymap: $keymap"
+ loadkeys -q $BASEDIR/keymaps/i386/$keymap
+ sed -i "s|^KEYMAP=.*|KEYMAP=\"$( echo $keymap | \
+ cut -d'.' -f1 )\"|" /etc/rc.conf
+fi
+
+if [ "$font" ]; then
+ echo "Loading font: $font"
+ for i in `seq 1 4`; do
+ if [ -d /dev/vc ]; then
+ setfont $BASEDIR/consolefonts/$font -C /dev/vc/${i}
+ else
+ setfont $BASEDIR/consolefonts/$font -C /dev/tty${i}
+ fi
+ done
+ sed -i "s|^CONSOLEFONT=.*|CONSOLEFONT=\"$( echo $font | \
+ cut -d'.' -f1 )\"|" /etc/rc.conf
+fi
+
+exit 0
+
diff --git a/abs/not_built/core/linhes-live/etc/live-shutdown b/abs/not_built/core/linhes-live/etc/live-shutdown
new file mode 100644
index 0000000..b6a8378
--- /dev/null
+++ b/abs/not_built/core/linhes-live/etc/live-shutdown
@@ -0,0 +1,90 @@
+# Functions used by rc.shutdown
+# Modified versions for linhes live systems
+
+f_saveclock ()
+{
+ :
+}
+
+f_swapoff ()
+{
+ ############################# Include session saving functions
+# . /opt/linhes-live/session-save/shutdown2
+# if [ -f /tmp/checkse ]; then
+# . /tmp/checkse
+# else
+# checkse
+# fi
+
+ if [ -n "${saving}" ] && ! session_save; then
+ echo
+ echo "If you know what you are doing, you may be able to recover"
+ echo "something from this unpleasant situation."
+ echo
+ echo "You may use the command line to investigate further ..."
+ echo
+ echo "When finished please enter 'exit', the shutdown process will"
+ echo "then continue."
+ sh -i
+ fi
+
+ #############################
+
+ stat_busy "Deactivating Swap"
+ /sbin/swapoff -a
+ stat_done
+}
+
+f_remountro ()
+{
+ 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/not_built/core/linhes-live/etc/live-sysinit b/abs/not_built/core/linhes-live/etc/live-sysinit
new file mode 100644
index 0000000..40edad9
--- /dev/null
+++ b/abs/not_built/core/linhes-live/etc/live-sysinit
@@ -0,0 +1,73 @@
+# Functions used by rc.sysinit
+# Modified versions for linhes live systems
+
+f_header ()
+{
+ cR='\e[31m' cY='\e[1;33m' cN='\e[0m' cW='\e[1;37m'
+ echo " "
+ printsep
+ printf " ${cR}LinHes ${cY}Installation${cN}/${cY}Live${cW} CDROM${cN}. "
+ printsep
+ echo " "
+}
+
+f_fscheck ()
+{
+ stat_busy "Initializing /etc/mtab"
+ #/bin/mount -n -o remount,rw /
+
+ /bin/rm -f /etc/mtab*
+
+ # Make entries for aufs/unionfs, tmpfs and live medium in /etc/mtab
+ grep "^aufs */ " /proc/mounts >>/etc/mtab
+ grep "^unionfs */ " /proc/mounts >>/etc/mtab
+ grep "^tmpfs */.livesys " /proc/mounts >>/etc/mtab
+ if [ -d /.livesys/medium/live ]; then
+ grep " /.livesys/medium " /proc/mounts >>/etc/mtab
+ fi
+
+ f_mountlocal
+ stat_done
+
+ if [ -z "$( cat /etc/fstab | grep "^#KEEP" )" ]; then
+ stat_busy "Generating fresh /etc/fstab"
+ /opt/linhes-live/bin/gen_fstab -l
+ stat_done
+ fi
+
+ # now mount all the local filesystems
+ stat_busy "Mounting Local Filesystems"
+ /bin/mount -a -t $NETFS
+ stat_done
+}
+
+f_swapon ()
+{
+ #+*** Copy session-save flag-file (if it exists)
+ [ -f /live/nosave ] && cp /live/nosave /.livesys
+ #-***
+
+ #*** Conditional swap activation
+ if [ -e /.livesys/swapon ]; then
+ 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/not_built/core/linhes-live/etc/loginroot b/abs/not_built/core/linhes-live/etc/loginroot
new file mode 100755
index 0000000..e3153c6
--- /dev/null
+++ b/abs/not_built/core/linhes-live/etc/loginroot
@@ -0,0 +1,3 @@
+#! /bin/sh
+login -f root
+# End
diff --git a/abs/not_built/core/linhes-live/etc/rc.shutdown-live b/abs/not_built/core/linhes-live/etc/rc.shutdown-live
new file mode 100755
index 0000000..79eae47
--- /dev/null
+++ b/abs/not_built/core/linhes-live/etc/rc.shutdown-live
@@ -0,0 +1,168 @@
+#!/bin/bash
+#
+# /etc/rc.shutdown
+#
+
+###
+# Based on initscripts 2008.05-1
+###
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+###############################################################
+### These functions have been separated out, so that they can be
+### replaced in linhes live systems.
+
+f_saveclock ()
+{
+ stat_busy "Saving System Clock"
+ if [ "$TIMEZONE" != "" -a -e "/usr/share/zoneinfo/$TIMEZONE" ]; then
+ /bin/rm -f /etc/localtime
+ /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime
+ fi
+
+ HWCLOCK_PARAMS="--systohc"
+ if [ "$HARDWARECLOCK" = "UTC" ]; then
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc"
+ else
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime"
+ fi
+ if [ "$USEDIRECTISA" = "yes" -o "$USEDIRECTISA" = "YES" ]; then
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --directisa"
+ fi
+ /sbin/hwclock $HWCLOCK_PARAMS
+ stat_done
+}
+
+f_swapoff ()
+{
+ stat_busy "Deactivating Swap"
+ /sbin/swapoff -a
+ stat_done
+}
+
+f_remountro ()
+{
+ stat_busy "Remounting Root Filesystem Read-only"
+ /bin/mount -n -o remount,ro /
+ stat_done
+}
+
+###############################################################
+
+### Override above functions if running linhes live system
+[ -f /etc/live-shutdown ] && . /etc/live-shutdown
+
+# avoid staircase effect
+/bin/stty onlcr
+
+echo " "
+printhl "Initiating Shutdown..."
+echo " "
+
+# avoid NIS hanging syslog-ng on shutdown by unsetting the domainname
+if [ -x /bin/domainname ]; then
+ /bin/domainname ""
+fi
+
+if [ -x /etc/rc.local.shutdown ]; then
+ /etc/rc.local.shutdown
+fi
+
+if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then
+ # Shutdown daemons
+ let i=${#DAEMONS[@]}
+ while [ $i -ge 0 ]; do
+ if [ "${DAEMONS[$i]:0:1}" != '!' ]; then
+ ck_daemon ${DAEMONS[$i]#@} || /etc/rc.d/${DAEMONS[$i]#@} stop
+ fi
+ let i=i-1
+ done
+ # find any leftover daemons and shut them down in reverse order
+ if [ -d /var/run/daemons ]; then
+ for daemon in $(/bin/ls -1t /var/run/daemons); do
+ /etc/rc.d/$daemon stop
+ done
+ fi
+fi
+
+# Terminate all processes
+stat_busy "Sending SIGTERM To Processes"
+/sbin/killall5 -15 &> /dev/null
+/bin/sleep 5
+stat_done
+
+stat_busy "Sending SIGKILL To Processes"
+/sbin/killall5 -9 &> /dev/null
+/bin/sleep 1
+stat_done
+
+stat_busy "Saving Random Seed"
+/bin/dd if=/dev/urandom of=/var/run/random-seed count=1 bs=512 2> /dev/null
+stat_done
+
+#F Save system time
+f_saveclock
+
+# removing psmouse module to fix some reboot issues on newer laptops
+/sbin/modprobe -r psmouse >/dev/null 2>&1
+
+# Write to wtmp file before unmounting
+/sbin/halt -w
+
+#F Deactivate swaps
+f_swapoff
+
+stat_busy "Unmounting Filesystems"
+/bin/umount -a -t noramfs,notmpfs,nosysfs,noproc
+stat_done
+
+# Kill non-root encrypted partition mappings
+if [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
+ stat_busy "Deactivating encrypted volumes:"
+ CS=/sbin/cryptsetup.static
+ do_uncrypt() {
+ if [ $# -ge 3 ]; then
+ stat_append "${1}.."
+ $CS remove $1 >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ stat_append "failed "
+ else
+ stat_append "ok "
+ fi
+ fi
+ }
+ while read line; do
+ eval do_uncrypt "$line"
+ done </etc/crypttab
+ stat_done
+fi
+
+if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
+ if [ -x /sbin/lvm -a -d /sys/block ]; then
+ stat_busy "Deactivating LVM2 groups"
+ /sbin/lvm vgchange --ignorelockingfailure -an >/dev/null 2>&1
+ stat_done
+ fi
+fi
+
+#F Remount / ro
+f_remountro
+#Eject the CD
+
+# Power off or reboot
+if [ "$RUNLEVEL" = "0" ]; then
+ printsep
+ printhl "${C_H2}POWER OFF"
+ /sbin/poweroff -d -f -h -i
+else
+ printsep
+ printhl "${C_H2}REBOOTING"
+ # if kexec is installed and a kernel is loaded, use it
+ [ -x /sbin/kexec ] && /sbin/kexec -e > /dev/null 2>&1
+ /sbin/reboot -d -f -i
+fi
+
+# vim: set ts=2 sw=2 noet:
+# End
diff --git a/abs/not_built/core/linhes-live/etc/rc.sysinit-live b/abs/not_built/core/linhes-live/etc/rc.sysinit-live
new file mode 100755
index 0000000..afdc2ae
--- /dev/null
+++ b/abs/not_built/core/linhes-live/etc/rc.sysinit-live
@@ -0,0 +1,469 @@
+#!/bin/bash
+#
+# /etc/rc.sysinit
+#
+
+###
+# Based on initscripts 2008.05-1
+###
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+###############################################################
+### These functions have been separated out, so that they can be
+### replaced in linhes live systems.
+
+f_header ()
+{
+ echo " "
+ printhl "Arch Linux $C_OTHER(${C_H2}Core Dump$C_OTHER)\n"
+ printhl "${C_H2}http://www.archlinux.org"
+ printhl "Copyright 2002-2007 Judd Vinet"
+ printhl "Copyright 2007-2008 Aaron Griffin"
+ printhl "Distributed under the GNU General Public License (GPL)"
+ printsep
+}
+
+f_fscheck ()
+{
+ status "Mounting Root Read-only" /bin/mount -n -o remount,ro /
+
+ if [ -x /sbin/fsck ]; then
+ stat_busy "Checking Filesystems"
+ if /bin/grep -qw quiet /proc/cmdline; then
+ /sbin/fsck -A -T -C -a -t $NETFS $FORCEFSCK >/dev/null 2>&1
+ else
+ /sbin/fsck -A -T -C -a -t $NETFS $FORCEFSCK 2>/dev/null
+ fi
+ fsckret=$?
+ if [ ${fsckret} -gt 1 ]; then
+ stat_fail
+ if [ $((${fsckret}&2)) -eq 2 ]; then
+ echo
+ echo "********************** REBOOT REQUIRED *********************"
+ echo "* *"
+ echo "* The system will be rebooted automatically in 15 seconds. *"
+ echo "* *"
+ echo "************************************************************"
+ echo
+ /bin/sleep 15
+ else
+ echo
+ echo "***************** FILESYSTEM CHECK FAILED ****************"
+ echo "* *"
+ echo "* Please repair manually and reboot. Note that the root *"
+ echo "* file system is currently mounted read-only. To remount *"
+ echo "* it read-write type: mount -n -o remount,rw / *"
+ echo "* When you exit the maintenance shell the system will *"
+ echo "* reboot automatically. *"
+ echo "* *"
+ echo "************************************************************"
+ echo
+ /sbin/sulogin -p
+ fi
+ echo "Automatic reboot in progress..."
+ /bin/umount -a
+ /bin/mount -n -o remount,ro /
+ /sbin/reboot -f
+ exit 0
+ fi
+ stat_done
+ fi
+
+ stat_busy "Mounting Local Filesystems"
+ /bin/mount -n -o remount,rw /
+ /bin/rm -f /etc/mtab*
+ # make sure / gets written to /etc/mtab
+ /bin/mount -o remount,rw /
+
+ f_mountlocal
+ stat_done
+}
+
+f_mountlocal ()
+{
+ # Write /proc, /sys and /dev to /etc/mtab
+ if [ -e /proc/mounts ]; then
+ /bin/grep -e "/proc " -e "/sys " -e "/dev " /proc/mounts >> /etc/mtab
+ fi
+ # now mount all the local filesystems
+ /bin/mount -a -t $NETFS
+}
+
+f_swapon ()
+{
+ status "Activating Swap" /sbin/swapon -a
+}
+
+###############################################################
+
+### Override above functions if running linhes live system
+[ -f /etc/live-sysinit ] && . /etc/live-sysinit
+
+#F Print header
+f_header
+
+# mount /proc, /sys and our RAM /dev
+/bin/mount -n -t ramfs none /dev
+/bin/mount -n -t proc none /proc
+/bin/mount -n -t sysfs none /sys
+
+# Create our default nodes that minilogd may need
+/bin/mknod /dev/null c 1 3
+/bin/mknod /dev/zero c 1 5
+/bin/mknod /dev/console c 5 1
+
+# More initial /dev setup that udev doesn't do
+/bin/ln -snf /proc/self/fd /dev/fd
+/bin/ln -snf /proc/self/fd/0 /dev/stdin
+/bin/ln -snf /proc/self/fd/1 /dev/stdout
+/bin/ln -snf /proc/self/fd/2 /dev/stderr
+/bin/ln -snf /proc/kcore /dev/core
+/bin/mkdir /dev/pts
+/bin/mkdir /dev/shm
+
+# start up our mini logger until syslog takes over
+/sbin/minilogd
+
+# anything more serious than KERN_WARNING goes to the console
+# 'verbose' cmdline parameter enables more messages
+if /bin/grep -q " verbose" /proc/cmdline; then
+ /bin/dmesg -n 8
+else
+ /bin/dmesg -n 3
+fi
+
+# enable rtc access
+/sbin/modprobe rtc-cmos >/dev/null 2>&1
+RTC_MAJOR=$(/bin/grep -w rtc /proc/devices 2>/dev/null); RTC_MAJOR="${RTC_MAJOR%% *}"
+if [ -n "$RTC_MAJOR" ]; then
+ /bin/mkdir /dev/misc/
+ /bin/mknod /dev/misc/rtc0 c $RTC_MAJOR 0
+ /bin/ln -s /dev/misc/rtc0 /dev/rtc
+fi
+
+HWCLOCK_PARAMS="--hctosys"
+if [ "$HARDWARECLOCK" = "UTC" ]; then
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --utc"
+else
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --localtime"
+fi
+if [ "$USEDIRECTISA" = "yes" -o "$USEDIRECTISA" = "YES" ]; then
+ HWCLOCK_PARAMS="$HWCLOCK_PARAMS --directisa"
+fi
+
+# Set clock early to fix some bugs with filesystem checks
+# Clock is set again later to match rc.conf
+if [ -f /etc/localtime ]; then
+ /sbin/hwclock $HWCLOCK_PARAMS --noadjfile
+fi
+
+echo > /proc/sys/kernel/hotplug
+
+if [ -x /sbin/udevadm -a -d /sys/block ]; then
+ # We have udev and /sys appears to be mounted, use UDev
+ #status "Starting UDev Daemon" /etc/start_udev init
+
+ stat_busy "Starting UDev Daemon"
+ /sbin/udevd --daemon
+ stat_done
+else
+ # Static /dev, our last resort
+ status "Using static /dev filesystem" true
+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
+ /sbin/modprobe $mod
+ fi
+ done
+ stat_done
+ fi
+ if [ -d /proc/acpi ]; then
+ stat_busy "Loading standard ACPI modules"
+ ACPI_MODULES="ac battery button fan processor thermal"
+ k="$(echo $BLACKLIST ${MOD_BLACKLIST[@]} | /bin/sed 's|-|_|g')"
+ j="$(echo ${MODULES[@]} | /bin/sed 's|-|_|g')"
+ #add disabled MODULES (!) to blacklist - much requested feature
+ for m in ${j}; do
+ [ "$m" != "${m#!}" ] && k="${k} ${m#!}"
+ done
+ # add disablemodules= from commandline to blacklist
+ k="${k} $(echo ${disablemodules} | /bin/sed 's|-|_|g' | /bin/sed 's|,| |g')"
+ for n in ${ACPI_MODULES}; do
+ if ! echo ${k} | /bin/grep "\<$n\>" 2>&1 >/dev/null; then
+ /sbin/modprobe $n > /dev/null 2>&1
+ fi
+ done
+ stat_done
+ fi
+fi
+
+# run udev uevents
+if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then
+ #status "Loading UDev uevents" /etc/start_udev uevents
+ stat_busy "Loading UDev uevents"
+ udevstart="$(/bin/date +%s%0N)"
+ /sbin/udevadm trigger
+ /sbin/udevadm settle
+ stat_done
+ udevend="$(/bin/date +%s%0N)"
+ printhl " UDev uevent processing time: $((($udevend-$udevstart)/1000000))ms"
+fi
+
+# bring up the loopback interface
+if [ -d /sys/class/net/lo ]; then
+ stat_busy "Bringing up loopback interface"
+ /sbin/ifconfig lo 127.0.0.1 up
+ if [ $? -ne 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+fi
+
+# If necessary, find md devices and manually assemble RAID arrays
+if [ -f /etc/mdadm.conf -a "$(/bin/grep ^ARRAY /etc/mdadm.conf 2>/dev/null)" ]; then
+ # udev won't create these md nodes, so we do it ourselves
+ for dev in $(/bin/grep ^ARRAY /etc/mdadm.conf | /bin/awk '{print $2}'); do
+ path=$(echo $dev | /bin/sed 's|/[^/]*$||')
+ node=$(echo $dev | /bin/sed "s|^$path/||")
+ minor=$(echo $node | /bin/sed 's|^[^0-9]*||')
+ [ ! -e $path/$node ] && /bin/mknod $path/$node b 9 $minor
+ done
+ status "Activating RAID arrays" /sbin/mdadm --assemble --scan
+fi
+
+if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
+ if [ -x /sbin/lvm -a -d /sys/block ]; then
+ # Kernel 2.6.x, LVM2 groups
+ /sbin/modprobe -q dm-mod 2>/dev/null
+ stat_busy "Activating LVM2 groups"
+ /sbin/lvm vgscan --ignorelockingfailure --mknodes >/dev/null
+ /sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
+ if [ $? -ne 0 ]; then
+ stat_fail
+ else
+ stat_done
+ fi
+ fi
+fi
+
+# Set up non-root encrypted partition mappings
+if [ -f /etc/crypttab -a -n "$(/bin/grep -v ^# /etc/crypttab | /bin/grep -v ^$)" ]; then
+ /sbin/modprobe -q dm-mod 2>/dev/null
+ stat_busy "Unlocking encrypted volumes:"
+ csfailed=0
+ CS=/sbin/cryptsetup.static
+ do_crypt() {
+ if [ $# -ge 3 ]; then
+ cname="$1"
+ csrc="$2"
+ cpass="$3"
+ shift 3
+ copts="$*"
+ stat_append "${cname}.."
+ # For some fun reason, the parameter ordering varies for
+ # LUKS and non-LUKS devices. Joy.
+ if [ "${cpass}" = "SWAP" ]; then
+ # This is DANGEROUS! The only possible safety check
+ # is to not proceed in case we find a LUKS device
+ # This may cause dataloss if it is not used carefully
+ if $CS isLuks $csrc 2>/dev/null; then
+ false
+ else
+ $CS -d /dev/urandom $copts create $cname $csrc >/dev/null
+ if [ $? -eq 0 ]; then
+ stat_append "creating swapspace.."
+ /sbin/mkswap -L $cname /dev/mapper/$cname >/dev/null
+ fi
+ fi
+ elif [ "${cpass}" = "ASK" ]; then
+ printf "\nOpening '${cname}' volume:\n"
+
+ if $CS isLuks $csrc 2>/dev/null; then
+ $CS $copts luksOpen $csrc $cname < /dev/console
+ else
+ $CS $copts create $cname $csrc < /dev/console
+ fi
+ elif [ "${cpass:0:1}" != "/" ]; then
+ if $CS isLuks $csrc 2>/dev/null; then
+ echo "$cpass" | $CS $copts luksOpen $csrc $cname >/dev/null
+ else
+ echo "$cpass" | $CS $copts create $cname $csrc >/dev/null
+ fi
+ else
+ if $CS isLuks $csrc 2>/dev/null; then
+ $CS -d $cpass $copts luksOpen $csrc $cname >/dev/null
+ else
+ $CS -d $cpass $copts create $cname $csrc >/dev/null
+ fi
+ fi
+ if [ $? -ne 0 ]; then
+ csfailed=1
+ stat_append "failed "
+ else
+ stat_append "ok "
+ fi
+ fi
+ }
+ while read line; do
+ eval do_crypt "$line"
+ done </etc/crypttab
+ if [ $csfailed -eq 0 ]; then
+ stat_done
+ else
+ stat_fail
+ fi
+ # Maybe someone has LVM on an encrypted block device
+ if [ "$USELVM" = "yes" -o "$USELVM" = "YES" ]; then
+ if [ -x /sbin/lvm -a -d /sys/block ]; then
+ /sbin/lvm vgscan --ignorelockingfailure --mknodes >/dev/null
+ /sbin/lvm vgchange --ignorelockingfailure -a y >/dev/null
+ fi
+ fi
+fi
+
+FORCEFSCK=
+[ -f /forcefsck ] && FORCEFSCK="-- -f"
+NETFS="nonfs,nonfs4,nosmbfs,nocifs,nocodafs,noncpfs,nosysfs,noshfs,nofuse,nofuseblk"
+
+#F Check filesystems
+f_fscheck
+
+#F Activate swaps
+f_swapon
+
+stat_busy "Configuring System Clock"
+if [ ! -f /var/lib/hwclock/adjtime ]; then
+ echo "0.0 0 0.0" > /var/lib/hwclock/adjtime
+fi
+if [ "$TIMEZONE" != "" -a -e "/usr/share/zoneinfo/$TIMEZONE" ]; then
+ /bin/rm -f /etc/localtime
+ /bin/cp "/usr/share/zoneinfo/$TIMEZONE" /etc/localtime
+fi
+
+/sbin/hwclock $HWCLOCK_PARAMS
+stat_done
+
+if [ -f /var/run/random-seed ]; then
+ stat_busy "Initializing Random Seed"
+ /bin/cat /var/run/random-seed >/dev/urandom
+ stat_done
+fi
+
+stat_busy "Removing Leftover Files"
+/bin/rm -f /etc/nologin &>/dev/null
+/bin/rm -f /etc/shutdownpid &>/dev/null
+/bin/rm -f /var/lock/* &>/dev/null
+/bin/rm -rf /tmp/* /tmp/.* &>/dev/null
+/bin/rm -f /forcefsck &>/dev/null
+(cd /var/run && /usr/bin/find . ! -type d -exec /bin/rm -f -- {} \; )
+: > /var/run/utmp
+# Keep {x,k,g}dm happy with xorg
+/bin/mkdir /tmp/.ICE-unix && /bin/chmod 1777 /tmp/.ICE-unix
+/bin/mkdir /tmp/.X11-unix && /bin/chmod 1777 /tmp/.X11-unix
+stat_done
+
+#status "Updating Shared Library Links" /sbin/ldconfig
+
+if [ "$HOSTNAME" != "" ]; then
+ status "Setting Hostname: $HOSTNAME" /bin/hostname $HOSTNAME
+fi
+
+# Set the NIS domain name, if necessary
+[ -f /etc/conf.d/nisdomainname ] && . /etc/conf.d/nisdomainname
+if [ "$NISDOMAINNAME" != "" ]; then
+ status "Setting NIS Domain Name: $NISDOMAINNAME" /bin/nisdomainname $NISDOMAINNAME
+fi
+
+status "Updating Module Dependencies" /sbin/depmod -A
+
+# Flush old locale settings
+: >/etc/profile.d/locale.sh
+/bin/chmod 755 /etc/profile.d/locale.sh
+# Set user defined locale
+[ -z "$LOCALE" ] && LOCALE="en_US"
+stat_busy "Setting Locale: $LOCALE"
+echo "export LANG=$LOCALE" >>/etc/profile.d/locale.sh
+stat_done
+
+if echo "$LOCALE" | /bin/grep -qi utf ; then
+ stat_busy "Setting Consoles to UTF-8 mode"
+ # UTF-8 consoles are default since 2.6.24 kernel
+ # this code is needed not only for older kernels,
+ # but also when user has set vt.default_utf8=0 but LOCALE is *.UTF-8.
+ /usr/bin/kbd_mode -u
+ for i in $(/usr/bin/seq 0 63); do
+ printf "\e%%G" > /dev/vc/${i}
+ done
+ # the $CONSOLE check helps us avoid this when running scripts from cron
+ echo 'if [ "$CONSOLE" = "" -a "$TERM" = "linux" -a -t 1 ]; then printf "\e%%G"; fi' >>/etc/profile.d/locale.sh
+ stat_done
+ [ -n "$KEYMAP" ] && status "Loading Keyboard Map: $KEYMAP" /bin/loadkeys -q -u $KEYMAP
+else
+ stat_busy "Setting Consoles to legacy mode"
+ # make non-UTF-8 consoles work on 2.6.24 and newer kernels
+ /usr/bin/kbd_mode -a
+ for i in $(/usr/bin/seq 0 63); do
+ printf "\e%%@" > /dev/vc/${i}
+ done
+ # the $CONSOLE check helps us avoid this when running scripts from cron
+ echo 'if [ "$CONSOLE" = "" -a "$TERM" = "linux" -a -t 1 ]; then printf "\e%%@"; fi' >>/etc/profile.d/locale.sh
+ stat_done
+ [ -n "$KEYMAP" ] && status "Loading Keyboard Map: $KEYMAP" /bin/loadkeys -q $KEYMAP
+fi
+
+if [ -n "$CONSOLEFONT" ]; then
+ stat_busy "Loading Console Font: $CONSOLEFONT"
+ #CONSOLEMAP in UTF-8 shouldn't be used
+ if [ -n "$CONSOLEMAP" ] && echo "$LOCALE" | /bin/grep -qi utf ; then
+ CONSOLEMAP=""
+ fi
+ for i in $(/usr/bin/seq 0 63); do
+ if [ -n "$CONSOLEMAP" ]; then
+ /usr/bin/setfont -m $CONSOLEMAP $CONSOLEFONT -C /dev/vc/${i} >/dev/null 2>&1
+ else
+ /usr/bin/setfont $CONSOLEFONT -C /dev/vc/${i} >/dev/null 2>&1
+ fi
+ done
+ if [ $? -ne 0 ]; then
+ stat_fail
+ else
+ for i in $(/usr/bin/seq 0 63); do
+ printf "\e(K" > /dev/vc/${i}
+ done
+ # the $CONSOLE check helps us avoid this when running scripts from cron
+ echo 'if [ "$CONSOLE" = "" -a "$TERM" = "linux" -a -t 1 ]; then printf "\e(K"; fi' >>/etc/profile.d/locale.sh
+ stat_done
+ fi
+fi
+
+# Adding persistent network/cdrom generated rules
+if [ -f "/dev/.udev/tmp-rules--70-persistent-cd.rules" ]; then
+ stat_busy "Adding persistent cdrom udev rules"
+ /bin/cat /dev/.udev/tmp-rules--70-persistent-cd.rules >> /etc/udev/rules.d/70-persistent-cd.rules
+ stat_done
+fi
+if [ -f "/dev/.udev/tmp-rules--70-persistent-net.rules" ]; then
+ stat_busy "Adding persistent network udev rules"
+ /bin/cat /dev/.udev/tmp-rules--70-persistent-net.rules >> /etc/udev/rules.d/70-persistent-net.rules
+ stat_done
+fi
+
+# Save our dmesg output from this boot
+if [ -f /var/log/dmesg.log ]; then
+ /bin/rm /var/log/dmesg.log
+fi
+/bin/dmesg > /var/log/dmesg.log
+
+# vim: set ts=2 noet:
+# End
diff --git a/abs/not_built/core/linhes-live/etc/ulogin b/abs/not_built/core/linhes-live/etc/ulogin
new file mode 100755
index 0000000..085c431
--- /dev/null
+++ b/abs/not_built/core/linhes-live/etc/ulogin
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# ulogin - A script for autologin of a selected user (and more)
+#-----------------------------------------------------------------
+# 2008.04.06
+
+user=$( cat /tmp/newuser 2>/dev/null )
+
+rm -f /tmp/newuser
+rm -f /tmp/xlogout
+
+if [ -n "${user}" ]; then
+ login -f ${user}
+else
+ # offer choice of user
+ ulist="$( cat /etc/passwd | grep ':/home/.*sh$' )"
+ echo -e "\nLogin a user or quit:"
+ echo " 0 : root"
+ echo " 1 : REBOOT"
+ echo " 2 : HALT"
+
+ i=2
+ for entry in ${ulist}; do
+ i=$(( ${i} + 1 ))
+ user="$( echo ${entry} | cut -d':' -f1 )"
+ users[${i}]=${user}
+ printf "%4d : %s\n" ${i} ${user}
+ done
+ while true; do
+ read -p "Enter a number from 0 to ${i} : " n
+ if [ "${n}" = 0 ]; then
+ login -f root
+ elif [ "${n}" = 1 ]; then
+ exec reboot
+ elif [ "${n}" = 2 ]; then
+ exec halt
+ elif [ -n "$( echo "${n}" | grep "^[0-9]\+$" )" ] && \
+ [ -n "${users[${n}]}" ]; then
+ login -f ${users[${n}]}
+ else
+ echo " *** Invalid choice ..."
+ continue
+ fi
+ break
+ done
+fi
+
+if grep "r" /tmp/xlogout &>/dev/null; then
+ reboot
+elif grep "h" /tmp/xlogout &>/dev/null; then
+ halt
+fi
+
+# This file is only needed for shutting down
+rm -f /tmp/checkse
+
+# End
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/gen_larch_init b/abs/not_built/core/linhes-live/lib/initcpio/gen_larch_init
new file mode 100755
index 0000000..d834e8f
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/gen_larch_init
@@ -0,0 +1,12 @@
+#! /bin/bash
+
+# gen_larch_init
+#
+# Author: Michael Towers <gradgrind[at]online[dot]de>
+
+# Create an initramfs for a larch live system
+# $1 - kernel version
+
+# The cpio.gz image is generated in larch.img
+
+/sbin/mkinitcpio -c /lib/initcpio/mkinitcpio.conf -k $1 -g larch.img
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch1 b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch1
new file mode 100644
index 0000000..88ccc3e
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch1
@@ -0,0 +1,125 @@
+# vim: set ft=sh:
+
+# larch1 - live 'hook' for mkinitcpio: set up tmpfs and find boot device
+
+# Author: Michael Towers (gradgrind) <mt.42@web.de>
+#
+# This file is part of the larch project.
+#
+# larch 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.
+#
+# larch 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 larch; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#----------------------------------------------------------------------------
+#2008.02.11
+
+# Replacement for msg which includes leading and trailing spaces
+msg_ () { [ "${quiet}" != "y" ] && echo "$@"; }
+
+# Try to mount a disk, partition or cdrom and look for the file
+# 'larchboot' in the /larch directory.
+# If LiveCD system found in the device, return 0, else return 1
+# and leave the device mounted.
+# $1 = device name (e.g. "/dev/hda2")
+# $2 = directory where devices will be mounted
+#
+test_live_data_dir ()
+{
+ /bin/mount -r -t iso9660 "$1" $2 >/dev/null 2>/dev/null || \
+ /bin/mount -r -t vfat -o noatime,nodiratime "$1" $2 >/dev/null 2>/dev/null || \
+ /bin/mount -r -t ext2 -o noatime,nodiratime "$1" $2 >/dev/null 2>/dev/null
+ if [ $? -eq 0 ]; then
+ if [ -f "$2/larch/larchboot" ]; then
+ LDEV="$1"
+ msg_ " ... found at $1"
+ return 0
+ else
+ /bin/umount $2 2>/dev/null
+ msg_ " ... $1 mounted, but no 'larch/larchboot' found"
+ fi
+ else
+ msg_ " ... not $1"
+ fi
+ return 1
+}
+
+run_hook ()
+{
+ msg_ ":: Creating writeable filesystem (tmpfs)"
+ /bin/mkdir "/tfs"
+ # Boot option copy-to-ram (c2r)
+ if [ "${c2r}" = "y" ]; then
+ TFSSIZE="90%"
+ else
+ TFSSIZE="60%"
+ fi
+ /bin/mount -t tmpfs -o "size=${TFSSIZE}" tmpfs "/tfs"
+
+ # Directory for test mounts (and then for live CD)
+ cdmount="/livecd"
+ /bin/mkdir "${cdmount}"
+
+ # look for livecd data directory, first try ${root}
+ LDEV="${root}"
+ if [ "x${LDEV}" != "x" ]; then
+ /bin/mount -r -t iso9660 "${LDEV}" "${cdmount}" >/dev/null 2>/dev/null || \
+ /bin/mount -r -t vfat -o noatime,nodiratime "${LDEV}" "${cdmount}" >/dev/null 2>/dev/null || \
+ /bin/mount -r -t ext2 -o noatime,nodiratime "${LDEV}" "${cdmount}" >/dev/null 2>/dev/null
+ if [ $? -eq 0 ]; then
+ if [ -d "${cdmount}/larch" ]; then
+ msg_ ":: larch system at ${LDEV}"
+ else
+ /bin/umount "${cdmount}" 2>/dev/null
+ echo "!! No larch system at ${LDEV}"
+ LDEV=""
+ fi
+ else
+ echo "!! Couldn't mount ${LDEV}"
+ LDEV=""
+ fi
+ fi
+
+ # then try cdroms
+ if [ "x${LDEV}" = "x" ]; then
+ msg_ ":: Looking for boot device"
+ cdroms=$( /bin/cat /proc/sys/dev/cdrom/info | { while read a b c; do
+ if [ "${a}" = "drive" -a "${b}" = "name:" ]; then
+ echo "${c}"
+ break
+ fi
+ done
+ } )
+ for i in ${cdroms}; do
+ test_live_data_dir "/dev/${i}" "${cdmount}"
+ if [ $? -eq 0 ]; then break; fi
+ done
+ fi
+
+ # test USB devices (and disks) repeatedly until timed out
+ if [ "x${LDEV}" = "x" ]; then
+ msg_ ":: Searching for usb (and disk) devices .."
+ for i in 1 2 3 4 5; do
+ msg_ " :wait ${i} :::"
+ /bin/sleep ${i}
+ for d in /dev/sd[a-z][0-9]*; do
+ 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/not_built/core/linhes-live/lib/initcpio/hooks/larch2 b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch2
new file mode 100644
index 0000000..74b4e64
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch2
@@ -0,0 +1,33 @@
+# larch2 - live 'hook' for mkinitcpio: unionfs specific
+
+# Author: Michael Towers (gradgrind) <mt.42@web.de>
+#
+# This file is part of the larch project.
+#
+# larch 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.
+#
+# larch 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 larch; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#----------------------------------------------------------------------------
+#2007.12.13
+
+run_hook ()
+{
+ #!!! --- unionfs specific
+ # Need unionfs module
+ /bin/modprobe unionfs
+ ovlmnt="ro"
+ bropt="dirs="
+ sqfmnt="ro"
+ utype="unionfs"
+}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch2_aufs b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch2_aufs
new file mode 100644
index 0000000..ac8e40b
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch2_aufs
@@ -0,0 +1,33 @@
+# larch2_aufs - live 'hook' for mkinitcpio: aufs specific
+
+# Author: Michael Towers (gradgrind) <mt.42@web.de>
+#
+# This file is part of the larch project.
+#
+# larch 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.
+#
+# larch 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 larch; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#----------------------------------------------------------------------------
+# 2008.02.29
+
+run_hook ()
+{
+ #!!! --- aufs specific
+ # Need aufs module
+ /bin/modprobe aufs
+ ovlmnt="rr+wh"
+ sqfmnt="rr"
+ bropt="br:"
+ utype="aufs"
+}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch3 b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch3
new file mode 100644
index 0000000..b301aa9
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/hooks/larch3
@@ -0,0 +1,196 @@
+# larch3 - live 'hook' for mkinitcpio:
+# deal with c2r,
+# mount base system,
+# load overlay,
+# set up unioned root filesystem.
+# Also manages overlay merging.
+
+# Author: Michael Towers <gradgrind[at]online[dot]de>
+#
+# This file is part of the larch project.
+#
+# larch 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.
+#
+# larch 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 larch; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+#----------------------------------------------------------------------------
+# 2008.04.04
+
+run_hook ()
+{
+ if [ "x${LDEV}" = "x" ]; then
+ err "Sorry, couldn't find boot medium ..."
+ break="y"
+ return
+ fi
+
+ /sbin/modprobe loop
+
+ # Path to compressed base system
+ sysSqf=${cdmount}/system.sqf
+
+ ovlpath=${cdmount}
+
+ # A possibility to use alternative files:
+ if [ -f ${cdmount}/larch/boot-init ]; then
+ . ${cdmount}/larch/boot-init
+ fi
+
+ # Path to compressed 'modifications' archive
+ modsSqf=${ovlpath}/mods.sqf
+ # Default overlay file and directory
+ overlay=${ovlpath}/overlay.ovl
+
+ # Make union root
+ /bin/mkdir /union
+
+ # Deal with new archives
+ if [ -f ${overlay}_ ]; then
+ /bin/mount -o remount,rw ${LDEV} ${cdmount}
+ /bin/mv ${overlay} ${overlay}~
+ /bin/mv ${overlay}_ ${overlay}
+
+ if [ -f ${modsSqf}_ ]; then
+ /bin/mv ${modsSqf} ${modsSqf}~
+ /bin/mv ${modsSqf}_ ${modsSqf}
+ fi
+ /bin/mount -o remount,ro ${LDEV} ${cdmount}
+ fi
+
+ # Boot option copy-to-ram (c2r)
+ if [ "${c2r}" = "y" ]; then
+ msg_ ":: Copying base system to RAM, this will take a while ..."
+ /bin/cat ${sysSqf} > /tfs/system.sqf
+ if [ $? -ne 0 ]; then
+ err "Sorry, not enough RAM"
+ break="y"
+ return
+ fi
+ sysSqf=/tfs/system.sqf
+
+ msg_ ":: Copying mods archive to RAM, this might take a while ..."
+ /bin/cat ${modsSqf} > /tfs/mods.sqf
+ if [ $? -ne 0 ]; then
+ err "Sorry, not enough RAM"
+ break="y"
+ return
+ fi
+ modsSqf=/tfs/mods.sqf
+
+ # force use of swap (if available)
+ :> /tfs/swapon
+
+ elif [ "${swap}" = "y" ]; then
+ :> /tfs/swapon
+ fi
+
+ 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
+
+ # Make stuff in 'system' available by providing the loader and
+ # library path
+ ldli=$( cd /tfs/system; echo lib/ld-linux*.so.2 )
+ /bin/ln -s /tfs/system/${ldli} /${ldli}
+ 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 -
+
+ # Copy the installation tidy-up script (for removing custom live-only stuff),
+ # and any other files in 'larch/copy' directory
+ if [ -d ${ovlpath}/larch/copy ]; then
+ cd ${ovlpath}/larch/copy
+ for f in *; do
+ cat ${f} >/tfs/${f}
+ done
+ fi
+
+ msg_ ":: Setting up union file system"
+
+ layers="/tfs/overlay=rw:/tfs/mods=${ovlmnt}:/tfs/system=${sqfmnt}"
+ /bin/mount -t ${utype} -o ${bropt}${layers} ${utype} /union
+
+ echo "${utype}" > /tfs/utype
+
+ # Minimal device nodes needed before udev does its work
+ /bin/mkdir /union/dev
+ /bin/mknod /union/dev/console c 5 1
+ /bin/mknod /union/dev/null c 1 3
+ /bin/mknod /union/dev/zero c 1 5
+
+ # Make special directories
+ /bin/mkdir -m 1777 /union/tmp
+ /bin/mkdir /union/media
+ /bin/mkdir /union/sys
+ /bin/mkdir /union/proc
+
+ # Make the tmpfs stuff accessible within the union
+ /bin/mkdir /union/.livesys
+ /bin/mount -o bind /tfs /union/.livesys
+
+ /bin/mkdir /union/.livesys/medium
+
+ /bin/mount -o bind /tfs/system /union/.livesys/system
+ /bin/mount -o bind /tfs/overlay /union/.livesys/overlay
+ /bin/mount -o bind ${cdmount} /union/.livesys/medium
+
+ if [ "x${modsSqf}" != "x" ]; then
+ /bin/mount -o move /tfs/mods /union/.livesys/mods
+ fi
+
+ # Remember the boot device
+ echo "${LDEV}" > /tfs/bootdevice
+
+ if [ "${c2r}" = "y" ]; then
+ # Set flag to inform system of copy-to-ram
+ :> /tfs/c2r
+
+ # Unmount boot device
+ /bin/umount ${cdmount}
+ fi
+
+ msg_ ":: End of live system set-up"
+
+ # Now some tweaks to alter 'init' actions from non-larch hooks, etc.
+ # Override rootdelay from usb hook
+ if [ "x${larchdelay}" = "x" ]; then
+ # To avoid spurious udevd pid numbers
+ export rootdelay=1
+ else
+ # Allow adjustment via boot option
+ export rootdelay=${larchdelay}
+ fi
+ # root must be set to something or other, even though larch doesn't
+ # need it ...
+ export root="/dev/loop0"
+}
+
+#######
+# The actual root switch occurs later, when 'init' execs 'kinit'.
+# I handle this by overwriting the 'kinit' binary with my own script.
+# This will unmount dev, sys and proc and then exec run-init.
+#######
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/install/larch1 b/abs/not_built/core/linhes-live/lib/initcpio/install/larch1
new file mode 100644
index 0000000..56baf48
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/install/larch1
@@ -0,0 +1,15 @@
+install ()
+{
+ MODULES="vfat isofs ext2 ext3 nls_cp437"
+ BINARIES=""
+ FILES=""
+ SCRIPT="larch1"
+}
+
+help ()
+{
+cat<<HELPEOF
+ This hook deals with booting a larch live CD. It is the first larch hook,
+creating a tmpfs and seeking the boot medium.
+HELPEOF
+}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/install/larch2 b/abs/not_built/core/linhes-live/lib/initcpio/install/larch2
new file mode 100644
index 0000000..a906227
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/install/larch2
@@ -0,0 +1,15 @@
+install ()
+{
+ MODULES="unionfs"
+ BINARIES=""
+ FILES=""
+ SCRIPT="larch2"
+}
+
+help ()
+{
+cat<<HELPEOF
+ This hook deals with booting a larch live CD. It handles selection of the
+desired unioning file system, here unionfs.
+HELPEOF
+}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/install/larch2_aufs b/abs/not_built/core/linhes-live/lib/initcpio/install/larch2_aufs
new file mode 100644
index 0000000..0e19de9
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/install/larch2_aufs
@@ -0,0 +1,15 @@
+install ()
+{
+ MODULES="aufs"
+ BINARIES=""
+ FILES=""
+ SCRIPT="larch2_aufs"
+}
+
+help ()
+{
+cat<<HELPEOF
+ This hook deals with booting a larch live CD. It handles selection of the
+desired unioning file system, here aufs.
+HELPEOF
+}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/install/larch3 b/abs/not_built/core/linhes-live/lib/initcpio/install/larch3
new file mode 100644
index 0000000..7dad03c
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/install/larch3
@@ -0,0 +1,18 @@
+install ()
+{
+ MODULES="squashfs loop reiserfs"
+ BINARIES=""
+ FILES=""
+ SCRIPT="larch3"
+# add_file "/lib/initcpio/kinit" "/bin/kinit" ##### This doesn't work, so:
+ sed -i 's|.*/usr/lib/klibc/bin/kinit\.shared.*||' "${FILELIST}"
+ sed -i 's|/usr/lib/klibc/bin/kinit|/lib/initcpio/kinit|' "${FILELIST}"
+}
+
+help ()
+{
+cat<<HELPEOF
+ This hook deals with booting a larch live CD. It is the last larch hook,
+setting up the tmpfs root file system.
+HELPEOF
+}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/kinit b/abs/not_built/core/linhes-live/lib/initcpio/kinit
new file mode 100755
index 0000000..7c86f4b
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/kinit
@@ -0,0 +1,6 @@
+#! /bin/sh
+
+umount /sys
+umount /proc
+umount /dev
+exec run-init -c /dev/console /union /sbin/init ${CMDLINE}
diff --git a/abs/not_built/core/linhes-live/lib/initcpio/mkinitcpio.conf b/abs/not_built/core/linhes-live/lib/initcpio/mkinitcpio.conf
new file mode 100644
index 0000000..79cca21
--- /dev/null
+++ b/abs/not_built/core/linhes-live/lib/initcpio/mkinitcpio.conf
@@ -0,0 +1,54 @@
+# vim:set ft=sh
+# MODULES
+# The following modules are loaded before any boot hooks are
+# run. Advanced users may wish to specify all system modules
+# in this array. For instance:
+# MODULES="piix ide_disk reiserfs"
+MODULES=""
+
+# BINARIES
+# This setting includes, into the CPIO image, and additional
+# binaries a given user may wish. This is run first, so may
+# be used to override the actual binaries used in a given hook.
+# (Existing files are NOT overwritten is already added)
+# BINARIES are dependancy parsed, so you may safely ignore libraries
+#BINARIES=""
+
+# FILES
+# This setting is similar to BINARIES above, however, files are added
+# as-is and are not parsed in anyway. This is useful for config files.
+# Some users may wish to include modprobe.conf for custom module options,
+# like so:
+# FILES="/etc/modprobe.conf"
+FILES=""
+
+# HOOKS
+# This is the most important setting in this file. The HOOKS control the
+# modules and scripts added to the image, and what happens at boot time.
+# Order is important, and it is recommended that you do not change the
+# order in which HOOKS are added. Run 'mkinitcpio -H <hook name>' for
+# help on a given hook.
+# 'base' is _required_ unless you know precisely what you are doing.
+# 'udev' is _required_ in order to automatically load modules
+# 'modload' may be used in place of 'udev', but is not recommended
+# 'filesystems' is _required_ unless you specify your fs modules in MODULES
+# Examples:
+# This setup specifies all modules in the MODULES setting above.
+# No raid, lvm, or encrypted root is needed.
+# HOOKS="base"
+#
+# This setup will autodetect all modules for your system and should
+# work as a sane default
+# HOOKS="base udev autodetect ide scsi sata filesystems"
+#
+# This setup will generate a 'full' image which supports most systems.
+# No autodetection is done.
+# HOOKS="base udev ide scsi sata usb filesystems"
+#
+# This setup assembles an ide raid array with an encrypted root FS.
+# Note: See 'mkinitcpio -H raid' for more information on raid devices.
+# HOOKS="base udev ide filesystems raid encrypt"
+#
+# This setup loads an LVM volume group on a usb device.
+# HOOKS="base udev usb filesystems lvm"
+HOOKS="base udev pata scsi sata usb larch1 larch2___aufs___ larch3"
diff --git a/abs/not_built/core/linuxtv-dvb-apps/PKGBUILD b/abs/not_built/core/linuxtv-dvb-apps/PKGBUILD
new file mode 100644
index 0000000..7dd5b29
--- /dev/null
+++ b/abs/not_built/core/linuxtv-dvb-apps/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id$
+# Contributor: Jaroslaw Swierczynski <swiergot@aur.archlinux.org>
+# Contributor: Camille Moncelier <pix@devlife.org>
+
+pkgname=linuxtv-dvb-apps
+pkgver=1.1.1
+pkgrel=4
+_hgrev=68d20621d93a
+pkgdesc='Viewer programs for DVB cards'
+arch=('i686' 'x86_64')
+url='http://www.linuxtv.org/'
+license=('GPL')
+install=linuxtv-dvb-apps.install
+#source=(http://www.linuxtv.org/download/dvb/$pkgname-$pkgver.tar.bz2)
+source=("http://linuxtv.org/hg/dvb-apps/archive/${_hgrev}.tar.bz2")
+
+build() {
+ cd dvb-apps-${_hgrev}
+
+ rm -rf include
+
+ make -C lib
+
+ make -C util
+}
+
+package() {
+ cd dvb-apps-${_hgrev}
+
+ make -C lib DESTDIR=${pkgdir} install
+
+ make -C util DESTDIR=${pkgdir} install
+
+ chmod 755 ${pkgdir}/usr/lib/*.so*
+}
+
+md5sums=('6e4bc8e5b22609b212f968c7d88e90ab')
diff --git a/abs/not_built/core/linuxtv-dvb-apps/linuxtv-dvb-apps.install b/abs/not_built/core/linuxtv-dvb-apps/linuxtv-dvb-apps.install
new file mode 100644
index 0000000..a260be2
--- /dev/null
+++ b/abs/not_built/core/linuxtv-dvb-apps/linuxtv-dvb-apps.install
@@ -0,0 +1,8 @@
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ echo ">>> Some initial-tuning-data files have been installed under"
+ echo ">>> /usr/share/dvb-utils/scan/"
+ echo ">>> you can use them to generate your channel.conf file"
+}
+
diff --git a/abs/not_built/core/lshw/PKGBUILD b/abs/not_built/core/lshw/PKGBUILD
new file mode 100644
index 0000000..6d76925
--- /dev/null
+++ b/abs/not_built/core/lshw/PKGBUILD
@@ -0,0 +1,34 @@
+# $Id: PKGBUILD 29087 2010-10-10 07:47:30Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Stefano Zamprogno <stefano dot zamprogno at gmail dot com>
+# Contributor: Chuck Yang <Chuck.Yang@gmail.com>
+
+pkgname=lshw
+pkgver=B.02.15
+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')
+arch=('i686' 'x86_64')
+depends=('gcc-libs')
+optdepends=('gtk2')
+makedepends=('gcc')
+source=(http://ezix.org/software/files/lshw-$pkgver.tar.gz
+ abi_stdlib.diff)
+md5sums=('970bd9eb05fa3ae139a24a417465c54c'
+ '7adcdd7a2be2feba956a9832cf36abdf')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+# patch -Np1 -i ../abi_stdlib.diff || return 1
+
+ make || return 1
+ make gui || return 1
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir/ install || return 1
+ make DESTDIR=$pkgdir/ install-gui || return 1
+}
+
diff --git a/abs/not_built/core/lshw/abi_stdlib.diff b/abs/not_built/core/lshw/abi_stdlib.diff
new file mode 100644
index 0000000..ffe88d1
--- /dev/null
+++ b/abs/not_built/core/lshw/abi_stdlib.diff
@@ -0,0 +1,23 @@
+diff -wbBur lshw-B.02.14/src/core/abi.cc lshw-B.02.14.my//src/core/abi.cc
+--- lshw-B.02.14/src/core/abi.cc 2009-02-12 22:53:09.000000000 +0000
++++ lshw-B.02.14.my//src/core/abi.cc 2010-05-24 14:30:18.000000000 +0000
+@@ -10,6 +10,7 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+ #include <dirent.h>
++#include <stdlib.h>
+
+ __ID("@(#) $Id: mem.cc 1352 2006-05-27 23:54:13Z ezix $");
+
+diff -wbBur lshw-B.02.14/src/core/scsi.cc lshw-B.02.14.my//src/core/scsi.cc
+--- lshw-B.02.14/src/core/scsi.cc 2009-02-12 22:53:09.000000000 +0000
++++ lshw-B.02.14.my//src/core/scsi.cc 2010-05-24 14:32:13.000000000 +0000
+@@ -842,7 +842,7 @@
+
+ if (!controller)
+ {
+- controller = node.addChild(hwNode::hwNode("scsi", hw::storage));
++ controller = node.addChild(hwNode("scsi", hw::storage));
+ if (controller)
+ {
+ controller->setLogicalName(host_logicalname(number));
diff --git a/abs/not_built/core/lzop/PKGBUILD b/abs/not_built/core/lzop/PKGBUILD
new file mode 100644
index 0000000..240422d
--- /dev/null
+++ b/abs/not_built/core/lzop/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 98428 2010-11-08 21:29:39Z andrea $
+# Maintainer:
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+
+pkgname=lzop
+pkgver=1.03
+pkgrel=1
+pkgdesc="File compressor using lzo lib"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://www.lzop.org/"
+depends=('lzo2')
+source=(http://www.lzop.org/download/${pkgname}-${pkgver}.tar.gz)
+md5sums=('006c5e27fb78cdd14a628fdfa5aa1905')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/abs/not_built/core/mailx/PKGBUILD b/abs/not_built/core/mailx/PKGBUILD
new file mode 100644
index 0000000..0041d2a
--- /dev/null
+++ b/abs/not_built/core/mailx/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: judd <jvinet@zeroflux.org>
+# Committer: Judd Vinet <jvinet@zeroflux.org>
+pkgname=mailx
+pkgver=8.1.1
+pkgrel=14
+pkgdesc="A commandline utility for sending email"
+arch=(i686 x86_64)
+url="http://www.opengroup.org/onlinepubs/007908799/xcu/mailx.html"
+license=('BSD')
+groups=('base')
+depends=('glibc')
+source=(ftp://ftp.archlinux.org/other/mailx/$pkgname-$pkgver-fixed.tar.gz \
+ mailx-$pkgver.patch mailx-gcc4.patch)
+md5sums=('63cad526ac64b57bcba2c0daaa1f3048' '905cfa35b5131524bfec0c677d456bd3'\
+ '8716c7c7b3f5d348443230e2fe543bf6')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver-fixed
+ patch -Np1 -i ../mailx-$pkgver.patch || return 1
+ patch -Np0 -i ../mailx-gcc4.patch || return 1
+ make all || return 1
+ make DESTDIR=$startdir/pkg install
+}
diff --git a/abs/not_built/core/mailx/mailx-8.1.1.patch b/abs/not_built/core/mailx/mailx-8.1.1.patch
new file mode 100644
index 0000000..2c0b777
--- /dev/null
+++ b/abs/not_built/core/mailx/mailx-8.1.1.patch
@@ -0,0 +1,32 @@
+diff -Naur mailx-8.1.1-fixed-orig/Makefile mailx-8.1.1-fixed/Makefile
+--- mailx-8.1.1-fixed-orig/Makefile Thu Mar 16 09:30:36 2000
++++ mailx-8.1.1-fixed/Makefile Wed Feb 27 12:50:09 2002
+@@ -7,18 +7,20 @@
+ BINOWN = root
+ BINGRP = mail
+
++DESTDIR =
++
+ all:
+ gcc $(SRCS) -o $(PROG)
+
+ install:
+- mkdir -p /usr/share/misc
+- mkdir -p /usr/share/man/man1
+- mkdir -p /etc
+- mkdir -p /usr/bin
+- install -o $(BINOWN) -g $(BINGRP) -m 2755 $(PROG) /usr/bin
+- install -o root -g root -m 644 mail.1 /usr/share/man/man1
++ mkdir -p $(DESTDIR)/usr/share/misc
++ mkdir -p $(DESTDIR)/usr/man/man1
++ mkdir -p $(DESTDIR)/etc
++ mkdir -p $(DESTDIR)/usr/bin
++ install -o $(BINOWN) -g $(BINGRP) -m 2755 $(PROG) $(DESTDIR)/usr/bin
++ install -o root -g root -m 644 mail.1 $(DESTDIR)/usr/man/man1
+ cd misc; install -c -o ${BINOWN} -g ${BINGRP} \
+- -m 444 ${SFILES} /usr/share/misc
++ -m 444 ${SFILES} $(DESTDIR)/usr/share/misc
+ cd misc; install -c -o root -g root \
+- -m 644 ${EFILES} /etc
++ -m 644 ${EFILES} $(DESTDIR)/etc
+
diff --git a/abs/not_built/core/mailx/mailx-gcc4.patch b/abs/not_built/core/mailx/mailx-gcc4.patch
new file mode 100644
index 0000000..54740a2
--- /dev/null
+++ b/abs/not_built/core/mailx/mailx-gcc4.patch
@@ -0,0 +1,12 @@
+K. Piche: Unofficial patch for mailx.
+
+--- dotlock.c.orig 2005-09-18 20:28:20.000000000 -0400
++++ dotlock.c 2005-09-18 20:26:59.000000000 -0400
+@@ -47,6 +47,7 @@
+ #include <errno.h>
+ #include <signal.h>
+
++#include "def.h"
+ #include "extern.h"
+
+ #ifndef O_SYNC
diff --git a/abs/not_built/core/mcpp/PKGBUILD b/abs/not_built/core/mcpp/PKGBUILD
new file mode 100644
index 0000000..57dae67
--- /dev/null
+++ b/abs/not_built/core/mcpp/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 22398 2008-12-26 17:32:45Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=mcpp
+pkgver=2.7.2
+pkgrel=1
+pkgdesc="Matsui's CPP implementation precisely conformed to standards"
+arch=(i686 x86_64)
+license=('custom')
+url="http://mcpp.sourceforge.net"
+source=(http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz )
+depends=(glibc)
+md5sums=('512de48c87ab023a69250edc7a0c7b05')
+
+build() {
+ 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}"
+ ln -sf ../doc/${pkgname}/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/mcpp/mcpp-2.6.4-patch b/abs/not_built/core/mcpp/mcpp-2.6.4-patch
new file mode 100644
index 0000000..bbdf09c
--- /dev/null
+++ b/abs/not_built/core/mcpp/mcpp-2.6.4-patch
@@ -0,0 +1,22 @@
+*** src/support.c.orig 2007-05-18 21:31:17.000000000 +0900
+--- src/support.c 2007-09-17 22:11:27.000000000 +0900
+***************
+*** 1678,1686 ****
+ , NULL, (long) c, NULL);
+ case '\t': /* Horizontal space */
+ case ' ':
+! if (mcpp_mode == OLD_PREP) {
+! if ((*(tp - 1) != ' ' && *(tp - 1) != COM_SEP))
+! *(tp - 1) = ' '; /* Squeeze COM_SEP with spaces */
+ } else {
+ if (*(tp - 1) != ' ')
+ *tp++ = ' '; /* Squeeze white spaces */
+--- 1678,1685 ----
+ , NULL, (long) c, NULL);
+ case '\t': /* Horizontal space */
+ case ' ':
+! if (mcpp_mode == OLD_PREP && (*(tp - 1) == COM_SEP)) {
+! *(tp - 1) = ' '; /* Squeeze COM_SEP with spaces */
+ } else {
+ if (*(tp - 1) != ' ')
+ *tp++ = ' '; /* Squeeze white spaces */
diff --git a/abs/not_built/core/mjpegtools/PKGBUILD b/abs/not_built/core/mjpegtools/PKGBUILD
new file mode 100644
index 0000000..bf31ebf
--- /dev/null
+++ b/abs/not_built/core/mjpegtools/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 84755 2010-07-04 03:32:01Z eric $
+# Contributor: Damir Perisa <damir.perisa@bluewin.ch>
+# Mantainer: Roberto Carvajal <roberto@archlinux.org>
+
+pkgname=mjpegtools
+pkgver=1.9.0
+pkgrel=12
+pkgdesc="Set of tools that can do recording of videos and playback, simple cut-and-paste editing and the MPEG compression of audio and video"
+arch=(i686 x86_64)
+license=('GPL')
+url="http://mjpeg.sourceforge.net/"
+depends=('libjpeg>=8' 'libpng>=1.4.0' 'sdl' 'gcc-libs' 'libdv' 'libjpeg6')
+makedepends=('gtk2>=2.18.6')
+optdepends=('gtk2: glav GUI')
+options=('!makeflags' '!libtool')
+install=mjpegtools.install
+source=(http://downloads.sourceforge.net/sourceforge/mjpeg/${pkgname}-${pkgver}.tar.gz
+ mjpegtools-1.9.0-glibc-2.10.patch
+ png2yuv-fix-memleak.patch
+ mjpegtools-1.9.0-jpeg-7.patch)
+md5sums=('309a6fcf0900a010d6a9c1e91afc2f5c' 'b8ae66237d83be533db8eea166fd3357'\
+ '39e1def8fb0f7c58a217b22dc251a86a' 'ccc7562a3933877d3362da7cf4695ea0')
+sha1sums=('1701233354c7ea86b5b7808c4dd5d03a71118e48' '3029f0e835e693b144298ed9f8143c9566be26f3'\
+ '8af5c3747756353bef56d03bafbdd086ff15c02c' '2bdb1b3b8591cede11d4a133a758e8ead35db4dd')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i -e '/ARCHFLAGS=/s:=.*:=:' configure
+ patch -Np1 -i "$srcdir/mjpegtools-1.9.0-glibc-2.10.patch"
+ patch -Np1 -i "${srcdir}/png2yuv-fix-memleak.patch"
+ patch -Np0 -i "${srcdir}/mjpegtools-1.9.0-jpeg-7.patch"
+ env CPPFLAGS="-I/opt/libjpeg6/include" LDFLAGS="-L/opt/libjpeg6/lib"
+ ./configure --prefix=/usr --enable-largefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ install -m644 mpeg2enc/mpeg2syntaxcodes.h "${pkgdir}/usr/include/mjpegtools/mpeg2enc/"
+}
diff --git a/abs/not_built/core/mjpegtools/__changelog b/abs/not_built/core/mjpegtools/__changelog
new file mode 100644
index 0000000..aa74d17
--- /dev/null
+++ b/abs/not_built/core/mjpegtools/__changelog
@@ -0,0 +1,2 @@
+change to build against libjpeg6
+ env CPPFLAGS="-I/opt/libjpeg6/include" LDFLAGS="-L/opt/libjpeg6/lib" ./configure -
diff --git a/abs/not_built/core/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch b/abs/not_built/core/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch
new file mode 100644
index 0000000..e161560
--- /dev/null
+++ b/abs/not_built/core/mjpegtools/mjpegtools-1.9.0-glibc-2.10.patch
@@ -0,0 +1,11 @@
+--- mjpegtools-1.9.0/mplex/lpcmstrm_in.cpp.orig 2009-05-27 01:31:46.000000000 -0700
++++ mjpegtools-1.9.0/mplex/lpcmstrm_in.cpp 2009-05-27 01:33:09.000000000 -0700
+@@ -53,7 +53,7 @@
+
+ bool LPCMStream::Probe(IBitStream &bs )
+ {
+- char *last_dot = strrchr( bs.StreamName(), '.' );
++ const char *last_dot = strrchr( bs.StreamName(), '.' );
+ return
+ last_dot != NULL
+ && strcmp( last_dot+1, "lpcm") == 0;
diff --git a/abs/not_built/core/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch b/abs/not_built/core/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch
new file mode 100644
index 0000000..ec36731
--- /dev/null
+++ b/abs/not_built/core/mjpegtools/mjpegtools-1.9.0-jpeg-7.patch
@@ -0,0 +1,24 @@
+Fix segmentation fault with jpeg-7 and above where dinfo.do_fancy_upsampling isn't set by default to FALSE anymore.
+
+Patch by: Salah Coronya
+
+http://bugs.gentoo.org/show_bug.cgi?id=293919
+
+--- lavtools/jpegutils.c
++++ lavtools/jpegutils.c
+@@ -502,6 +502,7 @@
+
+ jpeg_read_header (&dinfo, TRUE);
+ dinfo.raw_data_out = TRUE;
++ dinfo.do_fancy_upsampling = FALSE;
+ dinfo.out_color_space = JCS_YCbCr;
+ dinfo.dct_method = JDCT_IFAST;
+ guarantee_huff_tables(&dinfo);
+@@ -599,6 +600,7 @@
+ if (field > 0) {
+ jpeg_read_header (&dinfo, TRUE);
+ dinfo.raw_data_out = TRUE;
++ dinfo.do_fancy_upsampling = FALSE;
+ dinfo.out_color_space = JCS_YCbCr;
+ dinfo.dct_method = JDCT_IFAST;
+ jpeg_start_decompress (&dinfo);
diff --git a/abs/not_built/core/mjpegtools/mjpegtools.install b/abs/not_built/core/mjpegtools/mjpegtools.install
new file mode 100644
index 0000000..1ef7d6f
--- /dev/null
+++ b/abs/not_built/core/mjpegtools/mjpegtools.install
@@ -0,0 +1,16 @@
+infodir=/usr/share/info
+file=mjpeg-howto.info
+
+post_install() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info $infodir/$file.gz $infodir/dir 2> /dev/null
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ [ -x usr/bin/install-info ] || return 0
+ install-info --delete $infodir/$file.gz $infodir/dir 2> /dev/null
+}
diff --git a/abs/not_built/core/mjpegtools/png2yuv-fix-memleak.patch b/abs/not_built/core/mjpegtools/png2yuv-fix-memleak.patch
new file mode 100644
index 0000000..a6f03a4
--- /dev/null
+++ b/abs/not_built/core/mjpegtools/png2yuv-fix-memleak.patch
@@ -0,0 +1,10 @@
+--- mjpegtools-1.9.0/lavtools/png2yuv.c.orig 2010-01-17 14:26:24.000000000 +0100
++++ mjpegtools-1.9.0/lavtools/png2yuv.c 2010-01-17 14:27:53.000000000 +0100
+@@ -407,6 +407,7 @@
+ return 2;
+ }
+
++ png_destroy_read_struct(&png_ptr, &info_ptr, &end_info);
+ fclose(pngfile);
+
+ return 1;
diff --git a/abs/not_built/core/mythstream/PKGBUILD b/abs/not_built/core/mythstream/PKGBUILD
new file mode 100644
index 0000000..73fbf25
--- /dev/null
+++ b/abs/not_built/core/mythstream/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: kleptophobiac@gmail.com
+
+pkgname=mythstream
+pkgver=0.18_3
+pkgrel=13
+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' 'fftw' 'fftw2' 'perl-xml-xql')
+source=("http://home.kabelfoon.nl/~moongies/sw9vc4htz2/mythstream_mythtv-r21640.tar.gz" "mythstream.0.24.patch" "streams.res")
+md5sums=('')
+install=mythstream.install
+groups=('mythtv-extras')
+install=mythstream.install
+
+build() {
+ cd $startdir/src/mythstream_mythtv-r21640
+ ln -s ../../../mythtv/stable-0.24/mythtv/src/mythtv/mythtv/libs/lib* .
+
+ patch -p1 < ../mythstream.0.24.patch || return 1
+
+ export QTDIR=/usr/lib/qt
+ export PATH=$QTDIR/bin:$PATH
+
+ qmake mythstream.pro
+ make qmake || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+ cp $srcdir/streams.res $pkgdir/usr/share/mythtv/mythstream
+}
+
+md5sums=('ba354b83fefe6028c5379fb832a44b6a'
+ '69804486cde663586283cf2a226f0ed4'
+ 'b7fb47a56b6809938f237632174faeb2')
diff --git a/abs/not_built/core/mythstream/mythstream.0.24.patch b/abs/not_built/core/mythstream/mythstream.0.24.patch
new file mode 100644
index 0000000..d518c97
--- /dev/null
+++ b/abs/not_built/core/mythstream/mythstream.0.24.patch
@@ -0,0 +1,529 @@
+diff -ruaN mythstream_mythtv-r21640.orig/libs/harvester.h mythstream_mythtv-r21640/libs/harvester.h
+--- mythstream_mythtv-r21640.orig/libs/harvester.h 2009-08-30 21:46:35.000000000 +0000
++++ mythstream_mythtv-r21640/libs/harvester.h 2011-02-25 01:50:53.000000000 +0000
+@@ -23,7 +23,7 @@
+ #include <q3process.h>
+ #include <qthread.h>
+ #include <q3process.h>
+-#include <qhttp.h>
++#include <QtNetwork/qhttp.h>
+ #include <q3dict.h>
+ #include <qmap.h>
+ //Added by qt3to4:
+diff -ruaN mythstream_mythtv-r21640.orig/libs/player.xml mythstream_mythtv-r21640/libs/player.xml
+--- mythstream_mythtv-r21640.orig/libs/player.xml 2009-08-31 20:16:28.000000000 +0000
++++ mythstream_mythtv-r21640/libs/player.xml 2011-02-25 00:36:30.000000000 +0000
+@@ -341,11 +341,6 @@
+ </item>
+
+ <item>
+- <name>-vo</name>
+- <value>xv,</value>
+- </item>
+-
+- <item>
+ <name>-user-agent</name>
+ <value>QuickTime/0</value>
+ </item>
+diff -ruaN mythstream_mythtv-r21640.orig/libs/streamconfig.cpp mythstream_mythtv-r21640/libs/streamconfig.cpp
+--- mythstream_mythtv-r21640.orig/libs/streamconfig.cpp 2009-09-02 14:40:18.000000000 +0000
++++ mythstream_mythtv-r21640/libs/streamconfig.cpp 2011-02-25 01:50:45.000000000 +0000
+@@ -46,7 +46,7 @@
+
+ Window hierarchy
+ StreamTunedConfig: main config window with "stream" and "storage" tabs //StreamTuned only
+- gContext->GetMainWindow() // MythTV only
++ GetMythMainWindow() // MythTV only
+ StreamConfig: stream configuration handler (stream tab)
+ StorageGroup: StreamConfig goupBox with storage controls
+ StreamEditGroup: StreamConfig groupBox with stream property edit boxes
+diff -ruaN mythstream_mythtv-r21640.orig/libs/streams.res mythstream_mythtv-r21640/libs/streams.res
+--- mythstream_mythtv-r21640.orig/libs/streams.res 1970-01-01 00:00:00.000000000 +0000
++++ mythstream_mythtv-r21640/libs/streams.res 2011-02-25 01:51:06.000000000 +0000
+@@ -0,0 +1,281 @@
++
++
++[item]
++Interaction
++Apple movie trailers
++whatever
++trailers
++*apple
++
++[item]
++Interaction
++Browse Shoutcast genres
++http://www.shoutcast.com
++[emptystring]
++*shoutcast/menu
++
++[item]
++Interaction
++Uitzending gemist - laatste uitzendingen (Dutch)
++http://www.uitzendinggemist.nl
++Uitzending gemist selectie
++omroep/menu
++
++[item]
++Interaction
++World Wide Media Project
++[emptystring]
++[emptystring]
++*wwmp/menu
++
++[item]
++Interaction
++tv-links - Monty Python's Flying Circus
++http://tv-links.co.uk/listings/1/2526
++[emptystring]
++tvlinks/listing
++
++[item]
++Interaction
++wwiTV list
++http://wwitv.com/television/tvbar.htm
++List of television stations
++wwitv/countries
++
++[item]
++Podcast feeds
++Beercasting
++http://beercasting.com/rss.xml
++(podcast)
++podcast
++
++[item]
++Podcast feeds
++Feed me weird things
++http://del.icio.us/rss/audio/feedmeweirdthings
++(podcast) http://del.icio.us/rss/audio/feedmeweirdthings
++rdfcast
++
++[item]
++Podcast feeds
++SETI Institute
++http://podcast.seti.org/index.xml
++podcast
++podcast
++
++[item]
++Radio
++BBC World Service
++http://www.bbc.co.uk/worldservice/meta/tx/nb/live_news_au_nb.ram
++International
++[emptystring]
++
++[item]
++Radio
++DR R&B, Denmark
++http://www.dr.dk/netradio/Metafiler/ASX/DR_RogB_128.asx
++Copenhagen, Denmark
++[emptystring]
++
++[item]
++Radio
++Energy Black, Switzerland
++http://broadcast.infomaniak.ch/energyblack-high.mp3.m3u
++Zurich, Switzerland
++[emptystring]
++
++[item]
++Radio
++Fun Radio, belgium
++http://www.funradio.be/funradiobe-low.high.pls
++[emptystring]
++[emptystring]
++
++[item]
++Radio
++Juventus Radio
++http://live.juventus.hu:8000/live.m3u
++Budapest, Hungary
++[emptystring]
++
++[item]
++Radio
++Shoutcast Country
++http://www.shoutcast.com/directory/index.phtml?sgenre=Country&numresult=50
++Country music stations
++shoutcast
++
++[item]
++Radio
++Shoutcast Rock
++http://www.shoutcast.com/directory/index.phtml?sgenre=Rock&numresult=50
++Shoutcast Rock stations
++shoutcast
++
++[item]
++Radio
++The Voice, Norway
++http://213.158.233.199:6006/listen.pls
++Oslo, Norway
++[emptystring]
++
++[item]
++Radio
++WGBH, Boston
++http://streams.wgbh.org/classical.pls
++Boston, Massachusetts
++[emptystring]
++
++[item]
++Radio
++WholeWheatRadio stream
++http://64.62.252.134:2680/listen.pls
++[emptystring]
++[emptystring]
++
++[item]
++TV
++Holland Doc
++mms://livemedia.omroep.nl/vprohollanddoc-bb
++Nederland 4 themakanaal
++[emptystring]
++
++[item]
++TV
++NASA TV
++http://www.nasa.gov/ram/35037main_portal.ram
++[emptystring]
++[emptystring]
++
++[item]
++TV
++NRK News TV
++mms://media00.nrk.no/mms2/nydi/AutoEnc/mn1840.wmv
++Norwegen
++[emptystring]
++
++[item]
++TV
++National Nine News TV
++mms://broadband.netshow.ninemsn.com.au/broadband/news/story1.wmv
++Australia
++[emptystring]
++
++[item]
++TV
++RBC TV
++http://tv.gldn.net:80/rbc
++Russia
++[emptystring]
++
++[item]
++TV
++Tweede Kamer
++mms://213.75.12.78/TKStream3
++Dutch Parliament
++[emptystring]
++
++[item]
++TV
++Uitzending gemist RSS feed
++http://www.uitzendinggemist.nl/index.php/rss
++Laatste uitzendingen
++omroep/rss
++
++[item]
++TV
++United Nations TV
++rtsp://a4.l878435134.c8784.g.lr.akamaistream.net/live/D/4/8784/v0001/reflector:35134
++[emptystring]
++[emptystring]
++
++[item]
++TV
++VPro 3Voor12 Central TV
++mms://livemedia.omroep.nl/vpro3voor12tvcentral-bb
++http://3voor12.vpro.nl
++[emptystring]
++
++[item]
++TV
++VPro 3Voor12 on Stage TV
++mms://livemedia.omroep.nl/vpro3voor12tvonstage-bb
++[emptystring]
++[emptystring]
++
++[item]
++TV
++YLE 24 News TV
++http://ra.yle.fi/ramgen/yle24/video/uusin_rk.rm
++Finland
++[emptystring]
++
++[item]
++TV
++Yomiuri News TV
++http://www.yomiuri.co.jp/stream/vnews/vnews-w.asx
++Japan
++[emptystring]
++
++[item]
++Video
++DailyMotion custom search
++http://www.dailymotion.com/rss/relevance/search/<:search term::funny:>/<:page::1:>
++Edit search term with virtual keyboard
++dailymotion/playall
++
++[item]
++Video
++DailyMotion playlist demo: Alicia Keys Live
++http://www.dailymotion.com/rss/relevance/search/Alicia+Keys+live/1
++Mark streams (M) and play
++dailymotion/playall
++
++[item]
++Video
++Dailymotion download and play: VH1/1
++http://www.dailymotion.com/rss/relevance/search/vh1/1
++[emptystring]
++dailymotion/feed
++
++[item]
++Video
++Dailymotion playlist demo: Amy Winehouse
++http://www.dailymotion.com/rss/relevance/search/Amy+Winehouse+live/1
++Mark streams (M) and play
++dailymotion/playall
++
++[item]
++Video
++YouTube top viewed today
++http://youtube.com/rss/global/top_viewed_today.rss
++Voor andere feeds zie youtube
++youtube/feed
++
++[item]
++stream lists
++Icecast list
++http://dir.xiph.org/yp.xml
++Harvested with icecast.pl script
++icecast
++
++[item]
++stream lists
++OperaCast list
++http://www.operacast.com/opstations.htm
++Stationlist from www.operacast.com
++operacast
++
++[item]
++stream lists
++Operanut list (default parser)
++http://operanut.com/radio.htm
++Some dead streams
++[emptystring]
++
++[item]
++stream lists
++Robins BBC parser
++ask the parser :)
++BBC parsing by Robin Gilks
++*bbc/robins_links
+diff -ruaN mythstream_mythtv-r21640.orig/mythstream/main.cpp mythstream_mythtv-r21640/mythstream/main.cpp
+--- mythstream_mythtv-r21640.orig/mythstream/main.cpp 2009-09-02 16:40:49.000000000 +0000
++++ mythstream_mythtv-r21640/mythstream/main.cpp 2011-02-25 01:50:45.000000000 +0000
+@@ -57,12 +57,12 @@
+
+ if (sel == "stream_config")
+ {
+- StreamConfig config(gContext->GetMainWindow(), "stream", streamStorage, repos);
++ StreamConfig config(GetMythMainWindow(), "stream", streamStorage, repos);
+ config.exec();
+ }
+ else if (sel == "storage_config")
+ {
+- StorageConfig config(gContext->GetMainWindow(), "storage", streamStorage, repos);
++ StorageConfig config(GetMythMainWindow(), "storage", streamStorage, repos);
+ config.exec();
+ }
+
+@@ -149,7 +149,7 @@
+ void runStream(void)
+ {
+ GetMythUI()->AddCurrentLocation("mythstream");
+- MythStream stream(gContext->GetMainWindow(), "stream");
++ MythStream stream(GetMythMainWindow(), "stream");
+ stream.exec();
+ GetMythUI()->RemoveCurrentLocation( );
+ }
+diff -ruaN mythstream_mythtv-r21640.orig/mythstream/mythstream.cpp mythstream_mythtv-r21640/mythstream/mythstream.cpp
+--- mythstream_mythtv-r21640.orig/mythstream/mythstream.cpp 2009-09-02 21:22:33.000000000 +0000
++++ mythstream_mythtv-r21640/mythstream/mythstream.cpp 2011-02-25 01:50:45.000000000 +0000
+@@ -499,7 +499,7 @@
+ QString parameter;
+ int res;
+
+- popBox = new MythPopupBox(gContext->GetMainWindow(), "");
++ popBox = new MythPopupBox(GetMythMainWindow(), "");
+ popBox->addLabel(label);
+
+ editBox = new MythLineEdit(popBox, "");
+@@ -545,7 +545,7 @@
+ QString parameter;
+ int res;
+
+- popBox = new MythPopupBox(gContext->GetMainWindow(), "");
++ popBox = new MythPopupBox(GetMythMainWindow(), "");
+ popBox->addLabel(" Edit Stream Item ");
+
+ MythLineEdit *folderBox = new MythLineEdit(popBox, "");
+@@ -1295,7 +1295,7 @@
+ bool handled;
+ QStringList actions;
+
+- handled = gContext->GetMainWindow()->TranslateKeyPress("Stream", e, actions);
++ handled = GetMythMainWindow()->TranslateKeyPress("Stream", e, actions);
+ handled = false;
+
+ for (int i = 0; i < actions.size() && !handled; i++)
+diff -ruaN mythstream_mythtv-r21640.orig/mythstream/mythstream.pro mythstream_mythtv-r21640/mythstream/mythstream.pro
+--- mythstream_mythtv-r21640.orig/mythstream/mythstream.pro 2009-08-26 07:31:07.000000000 +0000
++++ mythstream_mythtv-r21640/mythstream/mythstream.pro 2011-02-25 01:50:37.000000000 +0000
+@@ -1,3 +1,4 @@
++include ( ../mythconfig.mak )
+ include ( ../settings.pro )
+
+ TEMPLATE = lib
+diff -ruaN mythstream_mythtv-r21640.orig/parsers/youtube/vid.pl mythstream_mythtv-r21640/parsers/youtube/vid.pl
+--- mythstream_mythtv-r21640.orig/parsers/youtube/vid.pl 2009-09-02 22:18:49.000000000 +0000
++++ mythstream_mythtv-r21640/parsers/youtube/vid.pl 2011-02-25 01:51:16.000000000 +0000
+@@ -61,9 +61,11 @@
+
+ my $a, $b;
+
+-if ( ($a, $b) = $data =~ /swfArgs\s\=\s\{.*?"t":\s*"([^"]+)".+?"video_id":\s*"([^"]+)"/ )
++if ( ($a, $b) = $data =~ /'SWF_ARGS'\s*\:\s*\{.*?"t":\s*"([^"]+)".+?"video_id":\s*"([^"]+)"/ )
+ {
+- $url = "http://www.youtube.com/get_video?video_id=$b&t=$a";
++ my $url = "http://www.youtube.com/get_video?video_id=$b&t=$a";
++
++ my $fmt_h264 = ($data =~ /'SWF_URL'\s*:\s*.*\.flash\.canPlayH264Videos()/);
+
+ $item = $doc->createElement('item');
+ $root->appendChild($item);
+@@ -73,6 +75,17 @@
+ $item->appendChild( newNode('descr', "") );
+ $item->appendChild( newNode('handler', "") );
+
++ if ($fmt_h264)
++ {
++ $item = $doc->createElement('item');
++ $root->appendChild($item);
++
++ $item->appendChild( newNode('name', "play: $sname [H.264]") );
++ $item->appendChild( newNode('url', $url . '&fmt=18') );
++ $item->appendChild( newNode('descr', "") );
++ $item->appendChild( newNode('handler', "") );
++ }
++
+ if (! ($playlist_enable == 1) )
+ {
+ $item = $doc->createElement('item');
+@@ -82,6 +95,17 @@
+ $item->appendChild( newNode('url', $url) );
+ $item->appendChild( newNode('descr', "") );
+ $item->appendChild( newNode('handler', "STREAM_DL") );
++
++ if ($fmt_h264)
++ {
++ $item = $doc->createElement('item');
++ $root->appendChild($item);
++
++ $item->appendChild( newNode('name', "download: $sname [H.264]") );
++ $item->appendChild( newNode('url', $url . '&fmt=18') );
++ $item->appendChild( newNode('descr', "") );
++ $item->appendChild( newNode('handler', "STREAM_DL") );
++ }
+ }
+ }
+
+diff -ruaN mythstream_mythtv-r21640.orig/parsers/youtube/youvid.pl mythstream_mythtv-r21640/parsers/youtube/youvid.pl
+--- mythstream_mythtv-r21640.orig/parsers/youtube/youvid.pl 2009-09-02 22:18:49.000000000 +0000
++++ mythstream_mythtv-r21640/parsers/youtube/youvid.pl 2011-02-25 01:51:16.000000000 +0000
+@@ -65,10 +65,12 @@
+
+ my $a, $b;
+
+-if ( ($a, $b) = $data =~ /swfArgs\s\=\s\{.*?"t":\s*"([^"]+)".+?"video_id":\s*"([^"]+)"/ )
++if ( ($a, $b) = $data =~ /'SWF_ARGS'\s*\:\s*\{.*?"t":\s*"([^"]+)".+?"video_id":\s*"([^"]+)"/ )
+ {
+ $url = "http://www.youtube.com/get_video?video_id=$b&t=$a";
+
++ my $fmt_h264 = ($data =~ /'SWF_URL'\s*:\s*.*\.flash\.canPlayH264Videos()/);
++
+ $item = $doc->createElement('item');
+ $root->appendChild($item);
+
+@@ -77,6 +79,17 @@
+ $item->appendChild( newNode('descr', "") );
+ $item->appendChild( newNode('handler', "") );
+
++ if ($fmt_h264)
++ {
++ $item = $doc->createElement('item');
++ $root->appendChild($item);
++
++ $item->appendChild( newNode('name', "play: $sname [H.264]") );
++ $item->appendChild( newNode('url', $url . '&fmt=18') );
++ $item->appendChild( newNode('descr', "") );
++ $item->appendChild( newNode('handler', "") );
++ }
++
+ $item = $doc->createElement('item');
+ $root->appendChild($item);
+
+@@ -84,6 +97,17 @@
+ $item->appendChild( newNode('url', $url) );
+ $item->appendChild( newNode('descr', "") );
+ $item->appendChild( newNode('handler', "STREAM_DL") );
++
++ if ($fmt_h264)
++ {
++ $item = $doc->createElement('item');
++ $root->appendChild($item);
++
++ $item->appendChild( newNode('name', "download: $sname [H.264]") );
++ $item->appendChild( newNode('url', $url . '&fmt=18') );
++ $item->appendChild( newNode('descr', "") );
++ $item->appendChild( newNode('handler', "STREAM_DL") );
++ }
+ }
+
+ print $head->toString;
+diff -ruaN mythstream_mythtv-r21640.orig/settings.pro mythstream_mythtv-r21640/settings.pro
+--- mythstream_mythtv-r21640.orig/settings.pro 2009-09-02 22:07:04.000000000 +0000
++++ mythstream_mythtv-r21640/settings.pro 2011-02-25 01:51:26.000000000 +0000
+@@ -14,15 +14,15 @@
+ RUNPREFIX = $$PREFIX
+ }
+
+-INCLUDEPATH += $${PREFIX}/include
+-INCLUDEPATH += $${PREFIX}/include/mythtv
+-INCLUDEPATH += $${PREFIX}/include/mythtv/libmythdb
+-INCLUDEPATH += $${PREFIX}/include/mythtv/libmythui
+-INCLUDEPATH += $${PREFIX}/include/mythtv/libmyth
++INCLUDEPATH += $${SYSROOT}$${PREFIX}/include
++INCLUDEPATH += $${SYSROOT}$${PREFIX}/include/mythtv
++INCLUDEPATH += $${SYSROOT}$${PREFIX}/include/mythtv/libmythdb
++INCLUDEPATH += $${SYSROOT}$${PREFIX}/include/mythtv/libmythui
++INCLUDEPATH += $${SYSROOT}$${PREFIX}/include/mythtv/libmyth
+
+-INCLUDEPATH += $${PREFIX}/include/qt4/Qt
++INCLUDEPATH += $${SYSROOT}$${PREFIX}/include/qt4/Qt
+
+-#INCLUDEPATH *= /usr/local/include
++#INCLUDEPATH *= $${SYSROOT}/usr/local/include
+
+ DEFINES += _GNU_SOURCE
+ DEFINES += PREFIX=\\\"$${RUNPREFIX}\\\"
+@@ -31,7 +31,3 @@
+ QMAKE_LFLAGS -= -Wl,--no-undefined
+ #QMAKE_LFLAGS -= --no-undefined
+ QMAKE LFLAGS += -DQT_THREAD_SUPPORT
+-
+-release {
+- QMAKE_CXXFLAGS_RELEASE = -O2 -fomit-frame-pointer
+-}
diff --git a/abs/not_built/core/mythstream/mythstream.install b/abs/not_built/core/mythstream/mythstream.install
new file mode 100644
index 0000000..3b87835
--- /dev/null
+++ b/abs/not_built/core/mythstream/mythstream.install
@@ -0,0 +1,23 @@
+# arg 1: the new package version
+post_install() {
+ mv /usr/share/mythtv/themes/defaultmenu/is.xml /tmp
+ grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp
+ echo "<!--#MythStream-->" >> /tmp/is.xml.tmp
+ echo " <button>" >> /tmp/is.xml.tmp
+ echo " <type>STREAM</type>" >> /tmp/is.xml.tmp
+ echo " <text>MythStream</text>" >> /tmp/is.xml.tmp
+ echo " <action>PLUGIN mythstream</action>" >> /tmp/is.xml.tmp
+ echo " </button>" >> /tmp/is.xml.tmp
+ echo "<!--#MythStream-->" >> /tmp/is.xml.tmp
+ echo "" >> /tmp/is.xml.tmp
+ echo "</mythmenu>" >> /tmp/is.xml.tmp
+ mv /tmp/is.xml.tmp /usr/share/mythtv/themes/defaultmenu/is.xml
+}
+post_remove() {
+ mv /usr/share/mythtv/themes/defaultmenu/is.xml /tmp/is.xml.tmp
+ sed -e '/\#MythStream/,/\#MythStream/d' < /tmp/is.xml.tmp > /usr/share/mythtv/themes/defaultmenu/is.xml
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/not_built/core/mythstream/streams.res b/abs/not_built/core/mythstream/streams.res
new file mode 100644
index 0000000..1e48084
--- /dev/null
+++ b/abs/not_built/core/mythstream/streams.res
@@ -0,0 +1,281 @@
+
+
+[item]
+Interaction
+Apple movie trailers
+whatever
+trailers
+*apple
+
+[item]
+Interaction
+Browse Shoutcast genres
+http://www.shoutcast.com
+[emptystring]
+*shoutcast/menu
+
+[item]
+Interaction
+Uitzending gemist - laatste uitzendingen (Dutch)
+http://www.uitzendinggemist.nl
+Uitzending gemist selectie
+omroep/menu
+
+[item]
+Interaction
+World Wide Media Project
+[emptystring]
+[emptystring]
+*wwmp/menu
+
+[item]
+Interaction
+tv-links - Monty Python's Flying Circus
+http://tv-links.co.uk/listings/1/2526
+[emptystring]
+tvlinks/listing
+
+[item]
+Interaction
+wwiTV list
+http://wwitv.com/television/tvbar.htm
+List of television stations
+wwitv/countries
+
+[item]
+Podcast feeds
+Beercasting
+http://beercasting.com/rss.xml
+(podcast)
+podcast
+
+[item]
+Podcast feeds
+Feed me weird things
+http://del.icio.us/rss/audio/feedmeweirdthings
+(podcast) http://del.icio.us/rss/audio/feedmeweirdthings
+rdfcast
+
+[item]
+Podcast feeds
+SETI Institute
+http://podcast.seti.org/index.xml
+podcast
+podcast
+
+[item]
+Radio
+BBC World Service
+http://www.bbc.co.uk/worldservice/meta/tx/nb/live_news_au_nb.ram
+International
+[emptystring]
+
+[item]
+Radio
+DR R&B, Denmark
+http://www.dr.dk/netradio/Metafiler/ASX/DR_RogB_128.asx
+Copenhagen, Denmark
+[emptystring]
+
+[item]
+Radio
+Energy Black, Switzerland
+http://broadcast.infomaniak.ch/energyblack-high.mp3.m3u
+Zurich, Switzerland
+[emptystring]
+
+[item]
+Radio
+Fun Radio, belgium
+http://www.funradio.be/funradiobe-low.high.pls
+[emptystring]
+[emptystring]
+
+[item]
+Radio
+Juventus Radio
+http://live.juventus.hu:8000/live.m3u
+Budapest, Hungary
+[emptystring]
+
+[item]
+Radio
+Shoutcast Country
+http://www.shoutcast.com/directory/index.phtml?sgenre=Country&numresult=50
+Country music stations
+shoutcast
+
+[item]
+Radio
+Shoutcast Rock
+http://www.shoutcast.com/directory/index.phtml?sgenre=Rock&numresult=50
+Shoutcast Rock stations
+shoutcast
+
+[item]
+Radio
+The Voice, Norway
+http://213.158.233.199:6006/listen.pls
+Oslo, Norway
+[emptystring]
+
+[item]
+Radio
+WGBH, Boston
+http://streams.wgbh.org/classical.pls
+Boston, Massachusetts
+[emptystring]
+
+[item]
+Radio
+WholeWheatRadio stream
+http://64.62.252.134:2680/listen.pls
+[emptystring]
+[emptystring]
+
+[item]
+TV
+Holland Doc
+mms://livemedia.omroep.nl/vprohollanddoc-bb
+Nederland 4 themakanaal
+[emptystring]
+
+[item]
+TV
+NASA TV
+http://www.nasa.gov/ram/35037main_portal.ram
+[emptystring]
+[emptystring]
+
+[item]
+TV
+NRK News TV
+mms://media00.nrk.no/mms2/nydi/AutoEnc/mn1840.wmv
+Norwegen
+[emptystring]
+
+[item]
+TV
+National Nine News TV
+mms://broadband.netshow.ninemsn.com.au/broadband/news/story1.wmv
+Australia
+[emptystring]
+
+[item]
+TV
+RBC TV
+http://tv.gldn.net:80/rbc
+Russia
+[emptystring]
+
+[item]
+TV
+Tweede Kamer
+mms://213.75.12.78/TKStream3
+Dutch Parliament
+[emptystring]
+
+[item]
+TV
+Uitzending gemist RSS feed
+http://www.uitzendinggemist.nl/index.php/rss
+Laatste uitzendingen
+omroep/rss
+
+[item]
+TV
+United Nations TV
+rtsp://a4.l878435134.c8784.g.lr.akamaistream.net/live/D/4/8784/v0001/reflector:35134
+[emptystring]
+[emptystring]
+
+[item]
+TV
+VPro 3Voor12 Central TV
+mms://livemedia.omroep.nl/vpro3voor12tvcentral-bb
+http://3voor12.vpro.nl
+[emptystring]
+
+[item]
+TV
+VPro 3Voor12 on Stage TV
+mms://livemedia.omroep.nl/vpro3voor12tvonstage-bb
+[emptystring]
+[emptystring]
+
+[item]
+TV
+YLE 24 News TV
+http://ra.yle.fi/ramgen/yle24/video/uusin_rk.rm
+Finland
+[emptystring]
+
+[item]
+TV
+Yomiuri News TV
+http://www.yomiuri.co.jp/stream/vnews/vnews-w.asx
+Japan
+[emptystring]
+
+[item]
+Video
+DailyMotion custom search
+http://www.dailymotion.com/rss/relevance/search/<:search term::funny:>/<:page::1:>
+Edit search term with virtual keyboard
+dailymotion/playall
+
+[item]
+Video
+DailyMotion playlist demo: Alicia Keys Live
+http://www.dailymotion.com/rss/relevance/search/Alicia+Keys+live/1
+Mark streams (M) and play
+dailymotion/playall
+
+[item]
+Video
+Dailymotion download and play: VH1/1
+http://www.dailymotion.com/rss/relevance/search/vh1/1
+[emptystring]
+dailymotion/feed
+
+[item]
+Video
+Dailymotion playlist demo: Amy Winehouse
+http://www.dailymotion.com/rss/relevance/search/Amy+Winehouse+live/1
+Mark streams (M) and play
+dailymotion/playall
+
+[item]
+Video
+YouTube top viewed today
+http://youtube.com/rss/global/top_viewed_today.rss
+Voor andere feeds zie youtube
+youtube/feed
+
+[item]
+stream lists
+Icecast list
+http://dir.xiph.org/yp.xml
+Harvested with icecast.pl script
+icecast
+
+[item]
+stream lists
+OperaCast list
+http://www.operacast.com/opstations.htm
+Stationlist from www.operacast.com
+operacast
+
+[item]
+stream lists
+Operanut list (default parser)
+http://operanut.com/radio.htm
+Some dead streams
+[emptystring]
+
+[item]
+stream lists
+Robins BBC parser
+ask the parser :)
+BBC parsing by Robin Gilks
+*bbc/robins_links
diff --git a/abs/not_built/core/mythtv/stable-0.24/morethemes/PKGBUILD b/abs/not_built/core/mythtv/stable-0.24/morethemes/PKGBUILD
new file mode 100644
index 0000000..c6368bc
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/morethemes/PKGBUILD
@@ -0,0 +1,66 @@
+pkgname=morethemes
+pkgver=0.24
+pkgrel=6
+pkgdesc="Additional themes for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('any')
+depends=('mythtv')
+groups=('mythtv-extras')
+source=(#'ftp://ftp.knoppmyth.net/R6/sources/morethemes-0.23.tar.bz2'
+ 'ftp://miroku.no-ip.com/blue-abstract-wide.2010.09.16.tar.bz2'
+ 'http://elkin.de/mythtv/2010.09.08-blootube-ng.tar.bz2'
+ 'http://elkin.de/mythtv/2010.11.04-Willi.tar.lzma'
+ 'http://elkin.de/mythtv/2010.03.13-bando-blue.tar.bz2'
+ 'http://www.thepetersclan.com/files/TintedGlass-1.18.tbz2'
+ 'http://www.thepetersclan.com/files/Mod-Gray-OSD.tar.bz2'
+ 'http://www.thepetersclan.com/files/Bluebar-Hires-OSD.tar.bz2'
+ 'http://www.thepetersclan.com/files/BlueCurves-OSD.tar.bz2'
+ 'http://www.thepetersclan.com/files/SimplyBlue-OSD.tbz2'
+ 'http://www.thepetersclan.com/files/BlueCurves2-OSD.tbz2'
+ 'http://www.thepetersclan.com/files/BlueCurves-2.1-OSD.tbz2'
+ 'http://www.mythtv.org/themes/LCARS.tar.gz'
+ 'http://www.mythtv.org/themes/TransBlue.tar.gz'
+ 'http://www.westnet.com/~chris/Mythtv/Retro-wide.tar.gz'
+ 'retro-wide_video-ui.xml-filetypes.patch'
+ 'http://capnbry.net/~bmayland/fi/pvr150/SimpleGray-OSD-0.4.tar.bz2'
+ 'http://www.jobs-khakis-chicks.com/MythTV/IsthmusBlue-OSD.tar.gz'
+ 'http://static.castlesblog.com/public/Glass-OSD-V1.3.zip'
+ 'http://static.castlesblog.com/public/Minimal-OSD-V1.1.zip')
+
+build() {
+ cd ${srcdir}
+ mkdir -p ${pkgdir}/usr/share/mythtv/themes
+
+ msg "Copying files..."
+ for d in `ls -d */`
+ do
+ cp -a "${d}" ${pkgdir}/usr/share/mythtv/themes
+ done
+
+ # Housekeeping
+ rm -fr "${pkgdir}/usr/share/mythtv/themes/__MACOSX" || return 1
+ # Little fix
+ cd ${pkgdir}/usr/share/mythtv/themes/Retro-wide || return 1
+ patch -p0 <${srcdir}/retro-wide_video-ui.xml-filetypes.patch || return 1
+}
+
+md5sums=('878605505599a0f49c44f3df9affe10f'
+ '7c2a2b238b7d44e52b7a8a0361d395aa'
+ '2890f3b991db805a88a48eb6c7048f91'
+ 'c6d90fb469bc30a94e32f76c82122dd3'
+ '80d250bf87c8f72ee238a91c854c0a11'
+ 'c973d0779967034f7a5bc0043574d6f9'
+ 'fb32ddd900e54cff62a62a21025b2585'
+ '79247cf87bbee10363bb214325b7f671'
+ '67c501b80afdefeca623261634dafd9c'
+ '7b2f2eca37f2d9598b00bce85a193bae'
+ '9793dc85a486e1ad9d0c0b6684efd245'
+ 'a36bb7b2597a44128401b1aba9106122'
+ '21d6f967631e45b7039b965a63755282'
+ 'bfc56ffe1c872989f7a1cb7ae20aea49'
+ 'e05bb3d77a11f97a1d547b2f5bc1ddf7'
+ '09dd8679b56794f9850a2382b4e1ea62'
+ 'b6c187b233778abacce102fe609d4e09'
+ 'f8d4fd90f1e45512ea5237de59d5090d'
+ '5646e1df6f593f7116cbdec656146266')
diff --git a/abs/not_built/core/mythtv/stable-0.24/morethemes/retro-wide_video-ui.xml-filetypes.patch b/abs/not_built/core/mythtv/stable-0.24/morethemes/retro-wide_video-ui.xml-filetypes.patch
new file mode 100644
index 0000000..c98487f
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/morethemes/retro-wide_video-ui.xml-filetypes.patch
@@ -0,0 +1,22 @@
+--- video-ui.xml.orig 2010-07-04 06:21:18.000000000 +0000
++++ video-ui.xml 2010-07-04 06:22:22.000000000 +0000
+@@ -967,14 +967,17 @@
+
+ <button name="done_button" from="basebutton">
+ <position>700,550</position>
++ <value>Done</value>
+ </button>
+
+ <button name="new_button" from="basebutton">
+- <position>600,550</position>
++ <position>400,550</position>
++ <value>New</value>
+ </button>
+
+ <button name="delete_button" from="basebutton">
+- <position>0,550</position>
++ <position>100,550</position>
++ <value>Delete</value>
+ </button>
+ </window>
+
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythplugins/PKGBUILD b/abs/not_built/core/mythtv/stable-0.24/mythplugins/PKGBUILD
new file mode 100644
index 0000000..760948f
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythplugins/PKGBUILD
@@ -0,0 +1,129 @@
+# $Id: PKGBUILD 91281 2010-09-26 06:04:21Z remy $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgbase=mythplugins
+pkgname=('mytharchive'
+ 'mythbrowser'
+ 'mythgallery'
+ 'mythgame'
+ 'mythmusic'
+ 'mythnetvision'
+ 'mythnews'
+ 'mythvideo'
+ 'mythweather'
+ 'mythzoneminder')
+pkgver=0.24
+pkgrel=20
+arch=('i686' 'x86_64')
+url="http://www.mythtv.org"
+license=('GPL')
+conflicts=('mythmovies')
+makedepends=("mythtv>=${pkgver}" 'mplayer' 'fftw2' 'dvdauthor' 'libexif'
+ 'python-imaging' 'libcdaudio' 'taglib' 'perl-xml-simple' 'dcraw'
+ 'libvisual' 'perl-xml-xpath' 'perl-image-size' 'perl-json'
+ 'perl-class-inspector' 'perl-datetime-format-iso8601'
+ 'flac' 'libvorbis' 'python2' 'python-pycurl' 'python-oauth')
+source=(ftp://ftp.knoppmyth.net/R6/sources/mythtv-0.24-fixes.tar.bz2
+ mythburn.py.patch)
+_gitroot="https://github.com/MythTV/mythtv.git"
+_gitname="mythtv"
+
+build() {
+ cd "${srcdir}/${_gitname}"
+ msg "Updating from GIT..."
+ git pull
+ msg "The local files are updated."
+ find . -name '*.py' -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+ cd ${srcdir}/${_gitname}/${pkgbase}
+ ./configure --prefix=/usr \
+ --enable-all
+
+ qmake mythplugins.pro || return 1
+ make || return 1
+}
+
+package_mytharchive() {
+ pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows"
+ depends=("mythtv>=${pkgver}" 'libxmu' 'pil' 'dvdauthor' 'm2vrequantiser')
+# replaces=('mytharchive')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mytharchive"
+ patch mythburn/scripts/mythburn.py < $srcdir/mythburn.py.patch || return 1
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythbrowser() {
+ pkgdesc="Mini web browser for MythTV"
+ depends=("mythtv>=${pkgver}")
+# replaces=('mythbrowser')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythbrowser"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythgallery() {
+ pkgdesc="Image gallery plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'libexif')
+# replaces=('mythgallery')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythgallery"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythgame() {
+ pkgdesc="Game emulator module for MythTV"
+ depends=("mythtv>=${pkgver}" 'zlib')
+# replaces=('mythgame')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythgame"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythmusic() {
+ pkgdesc="Music playing plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'flac' 'libvorbis' 'libcdaudio' 'cdparanoia' 'taglib' 'libvisual-plugins' 'projectm')
+# replaces=('mythmusic')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythmusic"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythnetvision() {
+ pkgdesc="MythNetvision plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'python-pycurl' 'python-oauth')
+# replaces=('mythnetvision')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythnetvision"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythnews() {
+ pkgdesc="News checking plugin for MythTV"
+ depends=("mythtv>=${pkgver}")
+# replaces=('mythnews')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythnews"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythvideo() {
+ pkgdesc="Video playback and browsing plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'mplayer' 'perl-xml-simple')
+# replaces=('mythvideo')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythvideo"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythweather() {
+ pkgdesc="Weather checking plugin for MythTV"
+ depends=("mythtv>=${pkgver}" 'perl-xml-xpath' 'perl-image-size'
+ 'perl-class-inspector' 'perl-datetime-format-iso8601'
+ 'perl-date-manip' 'perl-json')
+# replaces=('mythweather')
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythweather"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+
+package_mythzoneminder() {
+ pkgdesc="Allows for viewing of CCTV cameras through zoneminder"
+ depends=("mythtv>=${pkgver}" zoneminder)
+# replaces=('mythzoneminder')
+# install=mythplugins-mythzoneminder.install
+ cd "${srcdir}/${_gitname}/${pkgbase}/mythzoneminder"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+md5sums=('91488a6b1b05d14c5c5c601908b699e5'
+ 'cc7e6887acda167fcc5336af33f29411')
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythplugins/mythburn.py.patch b/abs/not_built/core/mythtv/stable-0.24/mythplugins/mythburn.py.patch
new file mode 100644
index 0000000..abac7df
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythplugins/mythburn.py.patch
@@ -0,0 +1,303 @@
+--- mythburn.py.orig 2011-09-16 13:41:43.000000000 -0500
++++ mythburn.py 2011-09-17 10:51:36.000000000 -0500
+@@ -38,7 +38,7 @@
+ #******************************************************************************
+
+ # version of script - change after each update
+-VERSION="0.1.20101206-1"
++VERSION="0.1.20110821-1"
+
+ # keep all temporary files for debugging purposes
+ # set this to True before a first run through when testing
+@@ -75,6 +75,7 @@
+ from fcntl import ioctl
+ import CDROM
+ from shutil import copy
++from subprocess import Popen, PIPE
+
+ # media types (should match the enum in mytharchivewizard.h)
+ DVD_SL = 0
+@@ -606,7 +607,7 @@
+ # of a video file from its stream info file
+
+ def getVideoParams(folder):
+- """Returns the video resolution, fps and aspect ratio for the video file from the streamindo.xml file"""
++ """Returns the video resolution, fps and aspect ratio for the video file from the streaminfo.xml file"""
+
+ #open the XML containing information about this file
+ infoDOM = xml.dom.minidom.parse(os.path.join(folder, 'streaminfo.xml'))
+@@ -642,14 +643,14 @@
+ # Gets the aspect ratio of a video file from its stream info file
+
+ def getAspectRatioOfVideo(index):
+- """Returns the aspect ratio of the video file (1.333, 1.778, etc)"""
++ """Returns the aspect ratio of the original video file (1.333, 1.778, etc)"""
+
+ #open the XML containing information about this file
+- infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++ infoDOM = xml.dom.minidom.parse(os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+
+ #error out if its the wrong XML
+ if infoDOM.documentElement.tagName != "file":
+- fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo.xml'))
++ fatalError("Stream info file doesn't look right (%s)" % os.path.join(getItemTempPath(index), 'streaminfo_orig.xml'))
+ video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
+ if video.attributes["aspectratio"].value != 'N/A':
+ aspect_ratio = float(video.attributes["aspectratio"].value)
+@@ -1762,6 +1763,37 @@
+
+
+ #############################################################
++# Finds the path of a video file from the local video path
++# or Storage Group
++
++def getVideoPath(filename):
++ # connect
++ db = getDatabaseConnection()
++ # create a cursor
++ cursor = db.cursor()
++ # execute SQL statement
++ cursor.execute("""SELECT dirname
++ FROM storagegroup
++ WHERE groupname='Videos'""")
++ # get the resultset as a tuple
++ result = cursor.fetchall()
++ # make result a list and add local video path if exists
++ result = [videopath] + list(result)
++
++ # iterate through result set
++ for sg in result:
++ if doesFileExist(os.path.join("".join(sg), filename)) == True:
++ filepath = "".join(sg)
++ write("Video Path: %s" % filepath)
++ return (filepath)
++ break
++
++ db.close()
++ del db
++ del cursor
++
++
++#############################################################
+ # Pre-process a single video/recording file
+
+ def preProcessFile(file, folder, count):
+@@ -1775,11 +1807,11 @@
+ #3. Extract a single frame from the video to use as a thumbnail and resolution check
+ mediafile=""
+
+- if file.attributes["type"].value == "recording":
++ if file.attributes["type"].value=="recording":
+ mediafile = file.attributes["filename"].value
+- elif file.attributes["type"].value == "video":
+- mediafile = os.path.join(videopath, file.attributes["filename"].value)
+- elif file.attributes["type"].value == "file":
++ elif file.attributes["type"].value=="video":
++ mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value)
++ elif file.attributes["type"].value=="file":
+ mediafile = file.attributes["filename"].value
+ else:
+ fatalError("Unknown type of video file it must be 'recording', 'video' or 'file'.")
+@@ -1935,9 +1967,39 @@
+
+ if result <> 0:
+ fatalError("Failed while running mytharchivehelper to get stream information from %s" % filename)
++
++ #open the XML containing information about this file
++ infoDOM = xml.dom.minidom.parse(xmlFilename)
++
++ #error out if its the wrong XML
++ if infoDOM.documentElement.tagName != "file":
++ fatalError("This info file doesn't look right (%s)." % xmlFilename)
++
++ file = infoDOM.getElementsByTagName("file")[0]
++ video = infoDOM.getElementsByTagName("file")[0].getElementsByTagName("streams")[0].getElementsByTagName("video")[0]
++
++ #use ffmpeg to get display aspect ratio (DAR) of video
++ cmd = path_ffmpeg[0] + " -i " + quoteFilename(file.attributes["filename"].value) + " 2>&1"
++ aspect_ratio = Popen(cmd, shell=True, stdout=PIPE).stdout.read()
++ if "DAR" in aspect_ratio:
++ #clean DAR string
++ aspect_ratio = aspect_ratio.split("DAR ")[-1].split(",")[0]
++ aspect_ratio = ''.join([c for c in aspect_ratio if c in '1234567890:']).split(":")
++ else:
++ #calculate aspect from video size
++ aspect_ratio = getVideoSize(xmlFilename)
++
++ #convert to decimal
++ aspect_ratio = float(aspect_ratio[0]) / float(aspect_ratio[1])
++
++ write("Video %s aspect ratio is: %s" % (filename, aspect_ratio))
++
++ #set aspect ratio
++ video.setAttribute("aspectratio",str(aspect_ratio))
++
++ WriteXMLToFile (infoDOM,xmlFilename)
+
+ # print out the streaminfo.xml file to the log
+- infoDOM = xml.dom.minidom.parse(xmlFilename)
+ write("streaminfo.xml :-\n" + infoDOM.toprettyxml(" ", ""), False)
+
+ #############################################################
+@@ -2322,7 +2384,7 @@
+ #############################################################
+ # Re-encodes a file to mpeg2
+
+-def encodeVideoToMPEG2(source, destvideofile, video, audio1, audio2, aspectratio, profile):
++def encodeVideoToMPEG2(source, destvideofile, video, folder, audio1, audio2, aspectratio, profile):
+ """Encodes an unknown video source file eg. AVI to MPEG2 video and AC3 audio, use ffmpeg"""
+
+ profileNode = findEncodingProfile(profile)
+@@ -2347,6 +2409,18 @@
+ value = quoteFilename(destvideofile)
+ if value == "%aspect":
+ value = aspectratio
++ if value == "720x480" or value == "720x576":
++ #add padding to correct for aspects > than 1.9:1
++ videores, fps, videoAR = getVideoParams(folder)
++ if float(videoAR) >= 1.9:
++ if videomode == "ntsc":
++ videoheight = 480
++ else:
++ videoheight = 576
++
++ croppixels = videoheight - (720 / float(videoAR))
++ write("CropPixels Total: %s" % croppixels)
++ value = "720x%d -vf pad=720:%d:0:%d:black" % (videoheight - croppixels, videoheight, croppixels / 2)
+
+ # only re-encode the audio if it is not already in AC3 format
+ if audio1[AUDIO_CODEC] == "AC3":
+@@ -2383,12 +2457,12 @@
+ command += " -newaudio"
+
+ #make sure we get the correct stream(s) that we want
+- command += " -map 0:%d -map 0:%d " % (video[VIDEO_INDEX], audio1[AUDIO_INDEX])
++ command += " -map 0:%d -map 0:%d" % (video[VIDEO_INDEX], audio1[AUDIO_INDEX])
+ if audio2[AUDIO_ID] != -1:
+ command += "-map 0:%d" % (audio2[AUDIO_INDEX])
+
+ if passes == 1:
+- write(command)
++ write("Running ffmpeg: %s" % command)
+ result = runCommand(command)
+ if result!=0:
+ fatalError("Failed while running ffmpeg to re-encode video.\n"
+@@ -2399,7 +2473,7 @@
+
+ pass1 = string.replace(command, "%passno","1")
+ pass1 = string.replace(pass1, "%passlogfile", passLog)
+- write("Pass 1 - " + pass1)
++ write("Running ffmpeg Pass 1: %s" % pass1)
+ result = runCommand(pass1)
+
+ if result!=0:
+@@ -2411,7 +2485,7 @@
+
+ pass2 = string.replace(command, "%passno","2")
+ pass2 = string.replace(pass2, "%passlogfile", passLog)
+- write("Pass 2 - " + pass2)
++ write("Running ffmpeg Pass 2: %s" % pass2)
+ result = runCommand(pass2)
+
+ if result!=0:
+@@ -2443,10 +2517,6 @@
+ outaudiosamplerate = 48000
+ outaudiocodec = "ac3"
+ deinterlace = 0
+- croptop = 0
+- cropright = 0
+- cropbottom = 0
+- cropleft = 0
+ qmin = 5
+ qmax = 31
+ qdiff = 31
+@@ -2470,14 +2540,6 @@
+ outvideores = value
+ if name == "-deinterlace":
+ deinterlace = 1
+- if name == "-croptop":
+- croptop = value
+- if name == "-cropright":
+- cropright = value
+- if name == "-cropbottom":
+- cropbottom = value
+- if name == "-cropleft":
+- cropleft = value
+ if name == "-qmin":
+ qmin = value
+ if name == "-qmax":
+@@ -2526,7 +2588,6 @@
+ command += "-aspect %s -r %s " % (aspectratio, fps)
+ if (deinterlace == 1):
+ command += "-deinterlace "
+- command += "-croptop %s -cropright %s -cropbottom %s -cropleft %s " % (croptop, cropright, cropbottom, cropleft)
+ command += "-s %s -b %s -vcodec mpeg2video " % (outvideores, outvideobitrate)
+ command += "-qmin %s -qmax %s -qdiff %s " % (qmin, qmax, qdiff)
+ command += "-ab %s -ar %s -acodec %s " % (outaudiobitrate, outaudiosamplerate, outaudiocodec)
+@@ -2543,7 +2604,7 @@
+ if (not(doesFileExist(os.path.join(folder, "audout")) and doesFileExist(os.path.join(folder, "vidout")))):
+ fatalError("Waited too long for mythtranscode to create the fifos - giving up!!")
+
+- write("Running ffmpeg")
++ write("Running ffmpeg: %s" % command)
+ result = runCommand(command)
+ if result != 0:
+ os.kill(PID, signal.SIGKILL)
+@@ -4724,7 +4785,7 @@
+ elif file.attributes["type"].value=="recording":
+ mediafile = file.attributes["filename"].value
+ elif file.attributes["type"].value=="video":
+- mediafile=os.path.join(videopath, file.attributes["filename"].value)
++ mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value)
+ elif file.attributes["type"].value=="file":
+ mediafile=file.attributes["filename"].value
+ else:
+@@ -4834,8 +4895,7 @@
+ starttime = -1
+ usecutlist = -1
+
+- encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder,
+- profile, usecutlist)
++ encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder, profile, usecutlist)
+ mediafile = os.path.join(folder, 'newfile2.mpg')
+ else:
+ #we need to re-encode the file, make sure we get the right video/audio streams
+@@ -4861,8 +4921,7 @@
+ profile = defaultEncodingProfile
+
+ #do the re-encode
+- encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+- audio1, audio2, aspectratio, profile)
++ encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, folder, audio1, audio2, aspectratio, profile)
+ mediafile = os.path.join(folder, 'newfile2.mpg')
+
+ #remove the old mediafile that was run through mythtranscode
+@@ -4936,7 +4995,7 @@
+ elif file.attributes["type"].value=="recording":
+ mediafile = file.attributes["filename"].value
+ elif file.attributes["type"].value=="video":
+- mediafile=os.path.join(videopath, file.attributes["filename"].value)
++ mediafile = os.path.join(getVideoPath(file.attributes["filename"].value), file.attributes["filename"].value)
+ elif file.attributes["type"].value=="file":
+ mediafile=file.attributes["filename"].value
+ else:
+@@ -4988,8 +5047,7 @@
+ starttime = -1
+ usecutlist = -1
+
+- encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder,
+- profile, usecutlist)
++ encodeNuvToMPEG2(chanid, starttime, mediafile, os.path.join(folder, "newfile2.mpg"), folder, profile, usecutlist)
+ mediafile = os.path.join(folder, 'newfile2.mpg')
+ else:
+ #we need to re-encode the file, make sure we get the right video/audio streams
+@@ -5015,8 +5073,7 @@
+ profile = defaultEncodingProfile
+
+ #do the re-encode
+- encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video,
+- audio1, audio2, aspectratio, profile)
++ encodeVideoToMPEG2(mediafile, os.path.join(folder, "newfile2.mpg"), video, folder, audio1, audio2, aspectratio, profile)
+ mediafile = os.path.join(folder, 'newfile2.mpg')
+
+ #remove an intermediate file
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythplugins/mythplugins-mythzoneminder.install b/abs/not_built/core/mythtv/stable-0.24/mythplugins/mythplugins-mythzoneminder.install
new file mode 100644
index 0000000..142212b
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythplugins/mythplugins-mythzoneminder.install
@@ -0,0 +1,3 @@
+post_install() {
+ echo "If you want to use this plugin, install zoneminder from AUR."
+}
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythsmolt/PKGBUILD b/abs/not_built/core/mythtv/stable-0.24/mythsmolt/PKGBUILD
new file mode 100644
index 0000000..c145741
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythsmolt/PKGBUILD
@@ -0,0 +1,23 @@
+pkgname=mythsmolt
+pkgver=0.24
+pkgrel=9
+pkgdesc="mythsmolt, a hardware profileing tool"
+arch=('i686' 'x86_64')
+url="http://www.mythvantage.com"
+license=('GPL')
+depends=("mythtv>=${pkgver}" urlgrabber python-simplejson python-pycurl)
+#source=("http://jmeyer.us/download/mythsmolt.tar.gz" 'smolt_init_login.sh' 'mythsmolt.patch')
+source=("http://jmeyer.us/download/mythsmolt.tar.gz" 'smolt_init_login.sh' )
+
+groups=('mythtv-extras')
+
+build() {
+ cd $startdir/src/mythsmolt
+# patch -p1 < ../mythsmolt.patch || return 1
+ ./configure.sh
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install
+ install -D -m 755 $srcdir/smolt_init_login.sh $pkgdir/etc/profile.d/smolt_init_login.sh
+}
+md5sums=('17d740c348301ab47ac557ad7402115b'
+ '57a3416d90e59abbd5062436583c17e1')
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythsmolt/mythsmolt.patch b/abs/not_built/core/mythtv/stable-0.24/mythsmolt/mythsmolt.patch
new file mode 100644
index 0000000..4767865
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythsmolt/mythsmolt.patch
@@ -0,0 +1,8 @@
+diff -ruaN mythsmolt.orig/settings.pro mythsmolt/settings.pro
+--- mythsmolt.orig/settings.pro 2010-01-06 15:49:59.000000000 +0000
++++ mythsmolt/settings.pro 2010-05-28 03:30:59.000000000 +0000
+@@ -1,3 +1,3 @@
+
+-LIBVERSION = 0.24
++LIBVERSION = 0.24
+
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythsmolt/smolt_init_login.sh b/abs/not_built/core/mythtv/stable-0.24/mythsmolt/smolt_init_login.sh
new file mode 100644
index 0000000..0b76305
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythsmolt/smolt_init_login.sh
@@ -0,0 +1,39 @@
+if [ $UID = 0 -o $UID = 1000 ]
+then
+ INIT=`ps -p 1 -o comm=`
+ if [ x$INIT = xrunit ]
+ then
+ if [[ -f /home/mythtv/.configure && $- = *i* ]]
+ then
+ if [ ! -z "$PS1" ]
+ then
+ if [ $0 = "-bash" ]
+ then
+ if [ ! -e /home/mythtv/.mythtv/MythSmolt/hw-uuid ]
+ then
+ echo ""
+ echo "####################################################"
+ echo "It appears you have not yet run smolt"
+ echo "Please take the time to submit your hardware profile"
+ echo ""
+ echo "press any key to continue:"
+ echo "####################################################"
+ read a
+ mkdir -p /home/mythtv/.mythtv/MythSmolt
+ chown -R mythtv:users /home/mythtv/.mythtv/MythSmolt
+
+ if [ $UID = 0 ]
+ then
+ su mythtv -c "/usr/share/mythtv/mythsmolt/scripts/sendProfile.py" && su mythtv -c "touch /home/mythtv/.mythtv/MythSmolt/hw-uuid"
+ else
+ /usr/share/mythtv/mythsmolt/scripts/sendProfile.py && touch /home/mythtv/.mythtv/MythSmolt/hw-uuid
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+
+
+
diff --git a/abs/not_built/core/mythtv/stable-0.24/myththemes/PKGBUILD b/abs/not_built/core/mythtv/stable-0.24/myththemes/PKGBUILD
new file mode 100644
index 0000000..96fa147
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/myththemes/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 86938 2010-08-06 21:53:33Z ibiru $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: kleptophobiac@gmail.com
+
+pkgname=myththemes
+pkgver=0.24
+pkgrel=9
+pkgdesc="Themes for MythTV"
+arch=('any')
+url="http://www.mythtv.org/"
+license=('GPL')
+depends=("mythtv>=${pkgver}")
+source=('ftp://ftp.knoppmyth.net/R6/sources/myththemes-0.24-fixes.tar.bz2' `echo ${patches[@]:0}`)
+_gitroot="https://github.com/MythTV/myththemes.git"
+_gitname="${pkgname}"
+build() {
+ cd $srcdir/myththemes
+ git pull
+ rm -fr Mythbuntu
+ # 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-----------------------------------------------"
+
+ cd "${srcdir}/${pkgname}"
+ ./configure --prefix=/usr || return 1
+}
+package() {
+ cd "${srcdir}/${pkgname}"
+ make INSTALL_ROOT="${pkgdir}" install || return 1
+}
+md5sums=('a5c9475a6d29c313cd9ae77566ee277a')
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/PKGBUILD b/abs/not_built/core/mythtv/stable-0.24/mythtv/PKGBUILD
new file mode 100755
index 0000000..e9d9a12
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/PKGBUILD
@@ -0,0 +1,109 @@
+# $Id: PKGBUILD 91139 2010-09-23 10:45:09Z remy $
+# Maintainer: Giovanni Scafora <giovanni@archlinux.org>
+# Contributor: Juergen Hoetzel <juergen@archlinux.org>
+# Contributor: <kleptophobiac@gmail.com>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=mythtv
+pkgver=0.24
+pkgrel=30
+pkgdesc="A Homebrew PVR project"
+arch=('i686' 'x86_64')
+url="http://www.mythtv.org/"
+license=('GPL')
+depends=('mysql-clients' 'qt' 'lame' 'lirc-utils' 'ffmpeg-svn' 'libxvmc'
+ 'fribidi' 'perl-soap-lite' 'perl-date-manip' 'perl-xml-sax'
+ 'perl-math-round' 'perl-net-upnp' 'perl-dbd-mysql' 'perl-time-hires'
+ 'libavc1394' 'wget' 'libiec61883' 'mysql-python' 'python-lxml'
+ 'mesa' 'libxinerama' 'libxrandr' 'faad2' 'libvdpau' 'libcrystalhd-git')
+makedepends=('yasm' 'libgl' 'git' 'rsync')
+replaces=()
+groups=('pvr')
+#backup=(/usr/share/mythtv/is.xml)
+#options=(!strip)
+#MAKEFLAGS="-j6"
+install='mythtv.install'
+patchs=('smolt_jump.patch' 'git_version.patch')
+optdepends=('xmltv: to download tv listings')
+#replaces=('mythtv-contrib')
+#conflicts=('mythtv-contrib')
+source=(ftp://ftp.knoppmyth.net/R6/sources/mythtv-0.24-fixes.tar.bz2
+ 'mythbackend' 'myth.sh' `echo ${patchs[@]:0}` 'mythbackend.lr' 'mythfrontend.lr' 'pretty'
+ 'http://www.ronfrazier.net/mythtv/0.24/downloads/ceton_ver008.patch')
+_gitroot="https://github.com/MythTV/mythtv.git"
+_gitname="${pkgname}"
+build() {
+
+ cd "${srcdir}/${pkgname}"/mythtv
+ msg "Updating from GIT..."
+ #git checkout -b 0.24-fixes origin/fixes/0.24
+ git pull
+ msg "The local files are updated."
+ # 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 Applying patch for Ceton InfinTV4
+ patch -p2 < ${startdir}/src//ceton_ver008.patch
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro
+ find bindings/python contrib -type f | xargs sed -i 's@^#!.*python$@#!/usr/bin/python2@'
+
+ ARCH=${CARCH/_/-}
+ ./configure --prefix=/usr --cpu=${ARCH} \
+ --disable-audio-jack \
+ --disable-audio-pulse \
+ --disable-altivec \
+ --disable-distcc \
+ --disable-ccache \
+ --enable-vdpau \
+ --enable-crystalhd \
+ --dvb-path=/usr/include \
+ --enable-opengl-vsync \
+ --with-bindings=perl,python --python=python2 || return 1
+
+ make all || return 1
+}
+
+package() {
+ cd "${srcdir}/${pkgname}"/mythtv
+ # basic install
+ make INSTALL_ROOT="${pkgdir}" install
+ # install contrib files
+ rsync -arp --exclude .svn --delete-excluded contrib ${pkgdir}/usr/share/mythtv/ || return 1
+ # install database structure
+ rsync -arp --exclude .svn --delete-excluded database ${pkgdir}/usr/share/mythtv/ || return 1
+ # install docs
+ rsync -arp --exclude .svn --delete-excluded docs ${pkgdir}/usr/share/mythtv/ || return 1
+
+ # patch the xml LinHES style
+ cp -r ${startdir}/menu-xml/*.xml ${pkgdir}/usr/share/mythtv/themes/defaultmenu/
+# mv ${pkgdir}/usr/share/mythtv/themes/defaultmenu/is.xml ${pkgdir}/usr/share/mythtv/
+ cd ${pkgdir}/usr/share/mythtv
+ 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 ${pkgdir}/var/log/mythtv
+ chown 1000.1000 ${pkgdir}/var/log/mythtv
+ mkdir -p ${pkgdir}/etc/logrotate.d
+ cp ${srcdir}/*.lr ${pkgdir}/etc/logrotate.d
+ mkdir -p ${pkgdir}/etc/cron.hourly/
+ install -m0755 ${srcdir}/pretty ${pkgdir}/etc/cron.hourly/
+}
+md5sums=('91488a6b1b05d14c5c5c601908b699e5'
+ '7ef6de58240e7aad389a0b13d91b1cf6'
+ '2babd4b8e146a7538d18dcd55695b0be'
+ 'a837de9ccc201994320071e48952b17d'
+ 'd048fd37d5061c853b5712d5f187b25d'
+ 'f735805a80b0d1180dee01f9df1b7004'
+ 'f407d6af23e74a49540755420f84fa58'
+ '5469d9921b726db750b991c87d226158'
+ '8837b2305030a2326b22f4330968e29a')
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/__changelog b/abs/not_built/core/mythtv/stable-0.24/mythtv/__changelog
new file mode 100644
index 0000000..940f84b
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/__changelog
@@ -0,0 +1 @@
+update to 0.24-fixes
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/git_version.patch b/abs/not_built/core/mythtv/stable-0.24/mythtv/git_version.patch
new file mode 100644
index 0000000..1cdfaa9
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/git_version.patch
@@ -0,0 +1,12 @@
+diff -ruaN mythtv.orig/mythtv/version.sh mythtv/mythtv/version.sh
+--- version.sh 2010-12-29 22:27:10.000000000 +0000
++++ version.sh 2010-12-29 23:36:19.000000000 +0000
+@@ -22,7 +22,7 @@
+
+ cd ${GITTREEDIR}
+
+-SOURCE_VERSION=$(git describe --dirty || git describe || echo Unknown)
++SOURCE_VERSION=$(git describe | cut -d- -f 3 || echo Unknown)
+
+ case "${SOURCE_VERSION}" in
+ exported|Unknown)
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/HOST_SETTINGS.xml
new file mode 100644
index 0000000..ac52497
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -0,0 +1,94 @@
+<mythmenu name="HOST_SETTINGS">
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>Network Settings</text>
+ <action>EXEC mythinstall -s network </action>
+ </button>
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>DDNS Settings</text>
+ <action>EXEC mythinstall -s ddns </action>
+ </button>
+ <button>
+ <type>MV_SYSTEM_SETUP_MENU</type>
+ <text>System Type</text>
+ <action>EXEC mythinstall -s hostype </action>
+ </button>
+
+ <button>
+ <type>MV_SCREENSAVER_SETUP_MENU</type>
+ <text>Screensaver Settings</text>
+ <action>EXEC mythinstall -s screensaver </action>
+ </button>
+
+ <button>
+ <type>MV_IR_SETUP_MENU</type>
+ <text>Remotes</text>
+ <action>EXEC mythinstall -s ir </action>
+ </button>
+
+ <button>
+ <type>MV_MISC_SETUP_MENU</type>
+ <text>Miscellanous Settings</text>
+ <action>EXEC mythinstall -s misc </action>
+ </button>
+
+ <button>
+ <type>MV_SOFTWARE_MENU</type>
+ <text>Software</text>
+ <action>EXEC mythinstall -s plugins </action>
+ </button>
+
+ <button>
+ <type>MV_SHUTDOWN_SETUP_MENU</type>
+ <text>Shutdown Settings</text>
+ <action>EXEC mythinstall -s sleep </action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_X_SETUP_MENU</type>
+ <text>Display Settings</text>
+ <action>EXEC mythinstall -s advancedX</action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_SETUP_MENU</type>
+ <text>Advanced Settings</text>
+ <action>EXEC mythinstall -s advanced</action>
+ </button>
+
+ <button>
+ <type>MV_AUDIO_SETUP_MENU</type>
+ <text>Audio Settings</text>
+ <action>EXEC mythinstall -s sound </action>
+ </button>
+
+ <button>
+ <type>MV_ACCESS_SETUP_MENU</type>
+ <text>Access Control</text>
+ <action>EXEC mythinstall -s accesscontrol </action>
+ </button>
+
+ <button>
+ <type>MV_USER_SETUP_MENU</type>
+ <text>User Accounts</text>
+ <action>EXEC mythinstall -s user </action>
+ </button>
+
+ <button>
+ <type>MV_WEBACCESS_SETUP_MENU</type>
+ <text>Web Security</text>
+ <action>EXEC mythinstall -s webuser </action>
+ </button>
+
+ <!--
+ <button>
+ <type>SETUP_MENU</type>
+ <text>Settings Profile Manager</text>
+ <action>EXEC mythinstall -t </action>
+ </button>
+ -->
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/is.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/is.xml
new file mode 100644
index 0000000..88b7e6b
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/is.xml
@@ -0,0 +1,3 @@
+<mythmenu name="Internet Steams">
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/library.xml.patch b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/library.xml.patch
new file mode 100644
index 0000000..be06e34
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/library.xml.patch
@@ -0,0 +1,12 @@
+--- themes/defaultmenu/library.xml.orig 2010-11-06 00:39:51.000000000 +0000
++++ themes/defaultmenu/library.xml 2010-11-06 00:44:54.000000000 +0000
+@@ -44,8 +44,7 @@
+ <type>STREAM</type>
+ <text>Play Online Streams</text>
+ <description></description>
+- <action>PLUGIN mythstream</action>
+- <depends>mythstream</depends>
++ <action>MENU is.xml</action>
+ </button>
+
+ <button>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/linhes.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/linhes.xml
new file mode 100644
index 0000000..01b6ffa
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/linhes.xml
@@ -0,0 +1,59 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>MythTV Configuration</text>
+ <text lang="IT">Impostazioni</text>
+ <text lang="ES">Configuración</text>
+ <text lang="DE">Zubehör / Konfiguration</text>
+ <text lang="DA">Tilbehør/Indstillinger</text>
+ <text lang="IS">Uppsetning</text>
+ <text lang="NL">Configuratie</text>
+ <text lang="PT">Utensílios</text>
+ <text lang="SV">Verktyg / Inställningar</text>
+ <text lang="JA">設å®~Z</text>
+ <text lang="FI">Oheis/Asetukset</text>
+ <text lang="ZH_TW">å·¥å~E·/設å®~Z</text>
+ <text lang="SL">Nastavitve</text>
+ <text lang="ET">Utiliidid / sätted</text>
+ <text lang="RU">УÑ~BилиÑ~BÑ~K / Ð~]аÑ~AÑ~BÑ~@ойки</text>
+ <text lang="AR">تضبÙ~Jطات</text>
+ <text lang="PL">NarzÄ~Ydzia / ustawienia</text>
+ <text lang="HE">×¢×~Vר×~Y×~] / ×~T×~R×~Sר×~Uת</text>
+ <text lang="HU">Eszközök / Beállítások</text>
+ <alttext lang="DE">Verschiedenes</alttext>
+ <alttext lang="SV">Inställningar</alttext>
+ <alttext lang="ET">Sätted</alttext>
+ <alttext lang="RU">Ð~]аÑ~AÑ~BÑ~@ойки</alttext>
+ <alttext lang="AR">تضبÙ~Jطات</alttext>
+ <description>Configure MythTV and plugins</description>
+ <description lang="DE">MythTV und Plugins konfigurieren</description>
+ <action>MENU util_menu.xml</action>
+ </button>
+
+ <button>
+ <type>LINHES_SETUP</type>
+ <text>LinHES Configuration</text>
+ <action>MENU HOST_SETTINGS.xml</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Backup LinHES</text>
+ <action>MENU mythbackup.xml</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Restore LinHES</text>
+ <action>MENU mythrestore.xml</action>
+ </button>
+
+<!--#Check for updates-->
+ <button>
+ <type>UPGRADE</type>
+ <text>Update LinHES</text>
+ <action>MENU update.xml</action>
+ </button>
+<!--#Check for updates-->
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mainmenu.xml.patch b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mainmenu.xml.patch
new file mode 100644
index 0000000..0491803
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mainmenu.xml.patch
@@ -0,0 +1,37 @@
+--- themes/defaultmenu/mainmenu.xml.orig 2010-11-08 22:30:08.000000000 +0000
++++ themes/defaultmenu/mainmenu.xml 2010-11-08 22:35:51.000000000 +0000
+@@ -2,6 +2,13 @@
+ <mythmenu name="MAIN">
+
+ <button>
++ <type>TV_WATCH_TV</type>
++ <text>Watch TV</text>
++ <description>Watch live television</description>
++ <action>TV_WATCH_LIVE</action>
++ </button>
++
++ <button>
+ <type>MENU_MEDIA_LIBRARY</type>
+ <text>Media Library</text>
+ <action>MENU library.xml</action>
+@@ -31,17 +38,10 @@
+ </button>
+
+ <button>
+- <type>TV_WATCH_TV</type>
+- <text>Watch TV</text>
+- <description>Watch live television</description>
+- <action>TV_WATCH_LIVE</action>
+- </button>
+-
+- <button>
+ <type>MENU_UTILITIES_SETUP</type>
+- <text>Utilities / Setup</text>
+- <description>Configure MythTV and plugins</description>
+- <action>MENU util_menu.xml</action>
++ <text>Service Menu</text>
++ <description>Configure your system</description>
++ <action>MENU linhes.xml</action>
+ </button>
+
+ </mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythbackup.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythbackup.xml
new file mode 100644
index 0000000..5914b33
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythbackup.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>BACKUP</type>
+ <text>Do you wish to backup?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/mythbackup</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythrestore.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythrestore.xml
new file mode 100644
index 0000000..8f5c285
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/mythrestore.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>RESTORE</type>
+ <text>Do you wish to restore?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/mythrestore</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/optical_menu.xml.patch b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/optical_menu.xml.patch
new file mode 100644
index 0000000..143424f
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/optical_menu.xml.patch
@@ -0,0 +1,16 @@
+--- themes/defaultmenu/optical_menu.xml.orig 2010-11-06 00:39:43.000000000 +0000
++++ themes/defaultmenu/optical_menu.xml 2010-11-06 00:42:59.000000000 +0000
+@@ -26,6 +26,13 @@
+ </button>
+
+ <button>
++ <type>DVD_RIP</type>
++ <text>Import video files from DVD</text>
++ <description>Import video files from a data DVD</description>
++ <action>EXEC /usr/LH/bin/importfiles.sh</action>
++ </button>
++
++ <button>
+ <type>MUSIC_RIP</type>
+ <text>Import CD</text>
+ <description>Import music from an audio CD</description>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/original/create_patch.sh b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/original/create_patch.sh
new file mode 100755
index 0000000..34d8b8c
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/original/create_patch.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+for i in *.xml
+do
+ diff -u $i.orig $i > ../$i.patch
+done
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/setup.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/setup.xml
new file mode 100644
index 0000000..f56bb6f
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/setup.xml
@@ -0,0 +1,111 @@
+<mythmenu name="MAIN">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>1. General</text>
+ <text lang="IT">1. Generale</text>
+ <text lang="PT">1. Geral</text>
+ <text lang="SV">1. Generellt</text>
+ <text lang="JA">1. 一般</text>
+ <text lang="DE">1. Allgemeines</text>
+ <text lang="FI">1. Yleiset</text>
+ <text lang="FR">1. Général</text>
+ <text lang="SI">1. Splošno</text>
+ <text lang="ET">1. Ãœldine</text>
+ <text lang="NB">1 Generelt</text>
+ <text lang="DK">1. Generelt</text>
+ <text lang="ES">1. General</text>
+ <text lang="CZ">1. Obecný</text>
+ <text lang="RU">1. Общие</text>
+ <action>GENERAL</action>
+ </button>
+
+ <button>
+ <type>SETUP_CAPTURE_CARDS</type>
+ <text>2. Capture cards</text>
+ <text lang="IT">2. Schede di Acquisizione</text>
+ <text lang="PT">2. Placas de Captura</text>
+ <text lang="SV">2. TV-kort</text>
+ <text lang="JA">2. キャプãƒãƒ£ã‚«ãƒ¼ãƒ‰</text>
+ <text lang="DE">2. TV-Karten</text>
+ <text lang="FI">2. TV-kortit</text>
+ <text lang="FR">2. Cartes d'acquisition</text>
+ <text lang="SI">2. Kartice za zajem</text>
+ <text lang="ET">2. TV-kaardid</text>
+ <text lang="NB">2 TV-kort</text>
+ <text lang="DK">2. TV-kort</text>
+ <text lang="ES">2. Capturadoras</text>
+ <text lang="CZ">2. Zachytávací karty</text>
+ <text lang="RU">2. Карты захвата</text>
+ <action>CAPTURE CARDS</action>
+ </button>
+
+ <button>
+ <type>SETUP_VIDEO_SOURCES</type>
+ <text>3. Video sources</text>
+ <text lang="IT">3. Fonte Video</text>
+ <text lang="PT">3. Fontes de Vídeo</text>
+ <text lang="SV">3. Videokällor</text>
+ <text lang="JA">3. ビデオソース</text>
+ <text lang="DE">3. Videoquellen</text>
+ <text lang="FI">3. Kuvanlähteet</text>
+ <text lang="FR">3. Sources vidéo</text>
+ <text lang="SI">3. Video viri</text>
+ <text lang="ET">3. Videosisendid</text>
+ <text lang="NB">3 Videokilder</text>
+ <text lang="DK">3. Videokilder</text>
+ <text lang="ES">3. Fuentes de Vídeo</text>
+ <text lang="CZ">3. Zdroje obrazu</text>
+ <text lang="RU">3. Видео иÑточники</text>
+ <action>VIDEO SOURCES</action>
+ </button>
+
+ <button>
+ <type>SETUP_INPUT_CONNECTIONS</type>
+ <text>4. Input connections</text>
+ <text lang="IT">4. Connessioni di Ingresso</text>
+ <text lang="PT">4. Ligações de Entrada</text>
+ <text lang="SV">4. Anslutningar</text>
+ <text lang="JA">4. 入力ã¨ã‚½ãƒ¼ã‚¹ã®æŽ¥ç¶š</text>
+ <text lang="DE">4. Verknüpfungen</text>
+ <text lang="FI">4. Sisääntuloasetukset</text>
+ <text lang="FR">4. Entrées Vidéos</text>
+ <text lang="SI">4. Vhodne povezave</text>
+ <text lang="ET">4. Sisendite ühendused</text>
+ <text lang="NB">4 Inndata</text>
+ <text lang="DK">4. Indgange</text>
+ <text lang="ES">4. Conexiones</text>
+ <text lang="CZ">4. Připojení vstupů</text>
+ <text lang="RU">4. Соединение входов</text>
+ <action>CARD INPUTS</action>
+ </button>
+
+ <button>
+ <type>SETUP_CHANNEL_EDITOR</type>
+ <text>5. Channel Editor</text>
+ <text lang="IT">5. Modifica Canali</text>
+ <text lang="SV">5. Kanaleditor</text>
+ <text lang="JA">5. ãƒãƒ£ãƒ³ãƒãƒ«è¨­å®š</text>
+ <text lang="DE">5. Sender bearbeiten</text>
+ <text lang="FI">5. Kanavanviritys</text>
+ <text lang="FR">5. Editeur de chaînes</text>
+ <text lang="SI">5. Urejanje kanalov</text>
+ <text lang="ET">5. Kanaliredaktor</text>
+ <text lang="NB">5 Kanalredigerer</text>
+ <text lang="DK">5. Kanal opsætning</text>
+ <text lang="ES">5. Editor Canales</text>
+ <text lang="CZ">5. Editor kanálů</text>
+ <text lang="RU">5. Редактор каналов</text>
+ <action>CHANNEL EDITOR</action>
+ </button>
+
+ <button>
+ <type>SETUP_STORAGE_GROUPS</type>
+ <text>6. Storage Directories</text>
+ <text lang="IT">6. Cartelle</text>
+ <text lang="FI">Tallennusryhmät</text>
+ <text lang="SV">Lagringsgrupper</text>
+ <action>STORAGE GROUPS</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/siriusmenu.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/siriusmenu.xml
new file mode 100644
index 0000000..e317b36
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/siriusmenu.xml
@@ -0,0 +1,419 @@
+<mythmenu name="SIRIUS">
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Hits 1</text>
+ <action>EXEC /usr/bin/cliSipie siriushits1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>StarLite</text>
+ <action>EXEC /usr/bin/cliSipie starlite</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Love</text>
+ <action>EXEC /usr/bin/cliSipie siriuslove</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Movin EZ</text>
+ <action>EXEC /usr/bin/cliSipie movineasy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Gold</text>
+ <action>EXEC /usr/bin/cliSipie siriusgold</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'60s Vibrations</text>
+ <action>EXEC /usr/bin/cliSipie 60svibrations</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Totally '70s</text>
+ <action>EXEC /usr/bin/cliSipie totally70s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Big '80s</text>
+ <action>EXEC /usr/bin/cliSipie big80s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>ThePulse</text>
+ <action>EXEC /usr/bin/cliSipie thepulse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bridge</text>
+ <action>EXEC /usr/bin/cliSipie thebridge</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BBC Radio 1</text>
+ <action>EXEC /usr/bin/cliSipie bbcradio1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Super Shuffle</text>
+ <action>EXEC /usr/bin/cliSipie supershuffle</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Elvis Radio</text>
+ <action>EXEC /usr/bin/cliSipie elvisradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Vinyl</text>
+ <action>EXEC /usr/bin/cliSipie classicvinyl</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Rewind</text>
+ <action>EXEC /usr/bin/cliSipie classicrewind</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>TheVault</text>
+ <action>EXEC /usr/bin/cliSipie thevault</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Jam_ON</text>
+ <action>EXEC /usr/bin/cliSipie jamon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spectrum</text>
+ <action>EXEC /usr/bin/cliSipie thespectrum</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BuzzSaw</text>
+ <action>EXEC /usr/bin/cliSipie buzzsaw</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Octane</text>
+ <action>EXEC /usr/bin/cliSipie octane</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Alt Nation</text>
+ <action>EXEC /usr/bin/cliSipie altnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>1st Wave</text>
+ <action>EXEC /usr/bin/cliSipie firstwave</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hair Nation</text>
+ <action>EXEC /usr/bin/cliSipie hairnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'90s Alternative</text>
+ <action>EXEC /usr/bin/cliSipie 90salternative</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Garage</text>
+ <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left of Center</text>
+ <action>EXEC /usr/bin/cliSipie leftofcenter</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hard Attack</text>
+ <action>EXEC /usr/bin/cliSipie hardattack</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Faction</text>
+ <action>EXEC /usr/bin/cliSipie faction</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Punk</text>
+ <action>EXEC /usr/bin/cliSipie punk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Coffee House</text>
+ <action>EXEC /usr/bin/cliSipie coffeehouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Margaritaville</text>
+ <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Disorder</text>
+ <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Reggae</text>
+ <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Area 33</text>
+ <action>EXEC /usr/bin/cliSipie area33</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Boombox</text>
+ <action>EXEC /usr/bin/cliSipie boombox</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Chill</text>
+ <action>EXEC /usr/bin/cliSipie chill</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Beat</text>
+ <action>EXEC /usr/bin/cliSipie thebeat</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Strobe</text>
+ <action>EXEC /usr/bin/cliSipie thestrobe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hip-Hop Nation</text>
+ <action>EXEC /usr/bin/cliSipie hiphopnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BackSpin</text>
+ <action>EXEC /usr/bin/cliSipie backspin</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Shade 45</text>
+ <action>EXEC /usr/bin/cliSipie shade45</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hot Jamz</text>
+ <action>EXEC /usr/bin/cliSipie hotjamz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Heart &amp; Soul</text>
+ <action>EXEC /usr/bin/cliSipie heartandsoul</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>SoulTown</text>
+ <action>EXEC /usr/bin/cliSipie soultown</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>New Country</text>
+ <action>EXEC /usr/bin/cliSipie newcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Prime Country</text>
+ <action>EXEC /usr/bin/cliSipie primecountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Roadhouse</text>
+ <action>EXEC /usr/bin/cliSipie theroadhouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Outlaw Country</text>
+ <action>EXEC /usr/bin/cliSipie outlawcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass</text>
+ <action>EXEC /usr/bin/cliSipie bluegrass</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/cliSipie spirit</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Praise</text>
+ <action>EXEC /usr/bin/cliSipie praise</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Planet Jazz</text>
+ <action>EXEC /usr/bin/cliSipie planetjazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>JazzCafe</text>
+ <action>EXEC /usr/bin/cliSipie jazzcafe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>PureJazz</text>
+ <action>EXEC /usr/bin/cliSipie purejazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spa 73</text>
+ <action>EXEC /usr/bin/cliSipie spa73</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blues</text>
+ <action>EXEC /usr/bin/cliSipie siriusblues</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Siriusly Sinatra</text>
+ <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Broadway's Best</text>
+ <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Symphony Hall</text>
+ <action>EXEC /usr/bin/cliSipie symphonyhall</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Met Opera Radio</text>
+ <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Pops</text>
+ <action>EXEC /usr/bin/cliSipie siriuspops</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Universo Latino</text>
+ <action>EXEC /usr/bin/cliSipie universolatino</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Rumbon</text>
+ <action>EXEC /usr/bin/cliSipie rumbon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Martha Stewart</text>
+ <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Stars</text>
+ <action>EXEC /usr/bin/cliSipie siriusstars</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>OutQ Gay Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusoutq</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Patriot</text>
+ <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left</text>
+ <action>EXEC /usr/bin/cliSipie siriusleft</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>CNN</text>
+ <action>EXEC /usr/bin/cliSipie cnn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>wrn</text>
+ <action>EXEC /usr/bin/cliSipie wrn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blue Collar Comedy</text>
+ <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Raw Dog Comedy</text>
+ <action>EXEC /usr/bin/cliSipie rawdog</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh Break Comedy</text>
+ <action>EXEC /usr/bin/cliSipie laughbreak</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>thefoxxhole</text>
+ <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>lime</text>
+ <action>EXEC /usr/bin/cliSipie lime</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Kids Stuff</text>
+ <action>EXEC /usr/bin/cliSipie kidsstuff</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Catholic Channel</text>
+ <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>EWTN</text>
+ <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>christiantalk</text>
+ <action>EXEC /usr/bin/cliSipie christiantalk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius NFL Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Maxim Radio</text>
+ <action>EXEC /usr/bin/cliSipie maximradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Cosmo Radio</text>
+ <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
+ </button>
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/sipie_kill</action>
+ </button>
+
+</mythmenu>
+
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update.xml
new file mode 100644
index 0000000..d2ac3fe
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update.xml
@@ -0,0 +1,9 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Check for Updates</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update2.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update2.xml
new file mode 100644
index 0000000..64388cb
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/update2.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Install Updates</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update2.sh install</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Cancel Updates</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>View Updates</text>
+ <action>MENU update3.xml</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/util_menu.xml.patch b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/util_menu.xml.patch
new file mode 100644
index 0000000..82d303e
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/util_menu.xml.patch
@@ -0,0 +1,16 @@
+--- themes/defaultmenu/util_menu.xml.orig 2010-11-06 00:40:01.000000000 +0000
++++ themes/defaultmenu/util_menu.xml 2010-11-06 00:45:42.000000000 +0000
+@@ -17,6 +17,13 @@
+ </button>
+
+ <button>
++ <type>VIDEO_SCREENSHOOTER</type>
++ <text>Thumbnail Generator</text>
++ <description>Generate thumbnail images for videos</description>
++ <action>EXEC /usr/LH/bin/shootscreens-mythtv.sh</action>
++ </button>
++
++ <button>
+ <type>SETUP_MENU</type>
+ <text>Setup</text>
+ <description>Configure MythTV and plugins</description>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/xmmenu.xml b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/xmmenu.xml
new file mode 100644
index 0000000..6b26d11
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/menu-xml/xmmenu.xml
@@ -0,0 +1,574 @@
+<!-- Current as of April 25, 2007 -->
+<mythmenu name="XM">
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '40s</text>
+ <action>EXEC /usr/bin/xamp kill 4</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '50s</text>
+ <action>EXEC /usr/bin/xamp kill 5</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '60s</text>
+ <action>EXEC /usr/bin/xamp kill 6</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '70s</text>
+ <action>EXEC /usr/bin/xamp kill 7</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '80s</text>
+ <action>EXEC /usr/bin/xamp kill 8</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '90s</text>
+ <action>EXEC /usr/bin/xamp kill 9</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>America</text>
+ <action>EXEC /usr/bin/xamp kill 10</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>X Country</text>
+ <action>EXEC /usr/bin/xamp kill 12</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Willie's Place</text>
+ <action>EXEC /usr/bin/xamp kill 13</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass Junction</text>
+ <action>EXEC /usr/bin/xamp kill 14</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Village</text>
+ <action>EXEC /usr/bin/xamp kill 15</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Highway 16</text>
+ <action>EXEC /usr/bin/xamp kill 16</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>US Country</text>
+ <action>EXEC /usr/bin/xamp kill 17</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>20 on 20</text>
+ <action>EXEC /usr/bin/xamp kill 20</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heart</text>
+ <action>EXEC /usr/bin/xamp kill 23</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Blend</text>
+ <action>EXEC /usr/bin/xamp kill 25</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Flight 26</text>
+ <action>EXEC /usr/bin/xamp kill 26</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Cinemagic</text>
+ <action>EXEC /usr/bin/xamp kill 27</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On Broadway</text>
+ <action>EXEC /usr/bin/xamp kill 28</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>U-Pop</text>
+ <action>EXEC /usr/bin/xamp kill 29</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Hitlist</text>
+ <action>EXEC /usr/bin/xamp kill 30</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Torch</text>
+ <action>EXEC /usr/bin/xamp kill 31</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Message</text>
+ <action>EXEC /usr/bin/xamp kill 32</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/xamp kill 33</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>enLighten</text>
+ <action>EXEC /usr/bin/xamp kill 34</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Deep Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 40</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Boneyard</text>
+ <action>EXEC /usr/bin/xamp kill 41</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Liquid Metal</text>
+ <action>EXEC /usr/bin/xamp kill 42</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XMU</text>
+ <action>EXEC /usr/bin/xamp kill 43</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fred</text>
+ <action>EXEC /usr/bin/xamp kill 44</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Cafe</text>
+ <action>EXEC /usr/bin/xamp kill 45</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Top Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 46</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ethel</text>
+ <action>EXEC /usr/bin/xamp kill 47</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Squizz</text>
+ <action>EXEC /usr/bin/xamp kill 48</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Big Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 49</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Loft</text>
+ <action>EXEC /usr/bin/xamp kill 50</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Music Lab</text>
+ <action>EXEC /usr/bin/xamp kill 51</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Verge</text>
+ <action>EXEC /usr/bin/xamp kill 52</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fungus</text>
+ <action>EXEC /usr/bin/xamp kill 53</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Lucy</text>
+ <action>EXEC /usr/bin/xamp kill 54</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Soul Street</text>
+ <action>EXEC /usr/bin/xamp kill 60</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Flow</text>
+ <action>EXEC /usr/bin/xamp kill 61</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Suite 62</text>
+ <action>EXEC /usr/bin/xamp kill 62</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Groove</text>
+ <action>EXEC /usr/bin/xamp kill 64</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Rhyme</text>
+ <action>EXEC /usr/bin/xamp kill 65</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>RAW</text>
+ <action>EXEC /usr/bin/xamp kill 66</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The City</text>
+ <action>EXEC /usr/bin/xamp kill 67</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heat</text>
+ <action>EXEC /usr/bin/xamp kill 68</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Real Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 70</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Watercolors</text>
+ <action>EXEC /usr/bin/xamp kill 71</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Beyond Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 72</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>High Standards</text>
+ <action>EXEC /usr/bin/xamp kill 73</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluesville</text>
+ <action>EXEC /usr/bin/xamp kill 74</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Hear Music</text>
+ <action>EXEC /usr/bin/xamp kill 75</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fine Tuning</text>
+ <action>EXEC /usr/bin/xamp kill 76</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Audio Visions</text>
+ <action>EXEC /usr/bin/xamp kill 77</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Escape</text>
+ <action>EXEC /usr/bin/xamp kill 78</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On The Rocks</text>
+ <action>EXEC /usr/bin/xamp kill 79</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Move</text>
+ <action>EXEC /usr/bin/xamp kill 80</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>BPM</text>
+ <action>EXEC /usr/bin/xamp kill 81</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The System</text>
+ <action>EXEC /usr/bin/xamp kill 82</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Chrome</text>
+ <action>EXEC /usr/bin/xamp kill 83</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM-Chill</text>
+ <action>EXEC /usr/bin/xamp kill 84</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fuego</text>
+ <action>EXEC /usr/bin/xamp kill 90</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Viva</text>
+ <action>EXEC /usr/bin/xamp kill 91</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Aguila</text>
+ <action>EXEC /usr/bin/xamp kill 92</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Caliente</text>
+ <action>EXEC /usr/bin/xamp kill 94</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Luna</text>
+ <action>EXEC /usr/bin/xamp kill 95</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Air Musique</text>
+ <action>EXEC /usr/bin/xamp kill 100</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Joint</text>
+ <action>EXEC /usr/bin/xamp kill 101</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sur La Route</text>
+ <action>EXEC /usr/bin/xamp kill 102</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>World Zone</text>
+ <action>EXEC /usr/bin/xamp kill 103</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ngoma</text>
+ <action>EXEC /usr/bin/xamp kill 104</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Classics</text>
+ <action>EXEC /usr/bin/xamp kill 110</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Vox</text>
+ <action>EXEC /usr/bin/xamp kill 112</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Pops</text>
+ <action>EXEC /usr/bin/xamp kill 113</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Kids</text>
+ <action>EXEC /usr/bin/xamp kill 116</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bob Edwards Show</text>
+ <action>EXEC /usr/bin/xamp kill 133</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Comedy</text>
+ <action>EXEC /usr/bin/xamp kill 150</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh USA</text>
+ <action>EXEC /usr/bin/xamp kill 151</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Special X</text>
+ <action>EXEC /usr/bin/xamp kill 154</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Agenda</text>
+ <action>EXEC /usr/bin/xamp kill 134</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Oprah and Friends</text>
+ <action>EXEC /usr/bin/xamp kill 156</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Virus</text>
+ <action>EXEC /usr/bin/xamp kill 202</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>1 Hit Wonders</text>
+ <action>EXEC /usr/bin/xamp kill 300</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Metalcore</text>
+ <action>EXEC /usr/bin/xamp kill 301</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Indie First</text>
+ <action>EXEC /usr/bin/xamp kill 302</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Late Night Mix</text>
+ <action>EXEC /usr/bin/xamp kill 303</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sessions@AOL</text>
+ <action>EXEC /usr/bin/xamp kill 304</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Shuffle</text>
+ <action>EXEC /usr/bin/xamp kill 305</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Rock First</text>
+ <action>EXEC /usr/bin/xamp kill 306</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Country First</text>
+ <action>EXEC /usr/bin/xamp kill 307</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Hip Hop First</text>
+ <action>EXEC /usr/bin/xamp kill 308</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Pop First</text>
+ <action>EXEC /usr/bin/xamp kill 309</action>
+ </button>
+
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/xamp kill</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/myth.sh b/abs/not_built/core/mythtv/stable-0.24/mythtv/myth.sh
new file mode 100755
index 0000000..fb7122c
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/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/not_built/core/mythtv/stable-0.24/mythtv/mythbackend b/abs/not_built/core/mythtv/stable-0.24/mythtv/mythbackend
new file mode 100755
index 0000000..93773a2
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/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/not_built/core/mythtv/stable-0.24/mythtv/mythbackend.lr b/abs/not_built/core/mythtv/stable-0.24/mythtv/mythbackend.lr
new file mode 100644
index 0000000..4f218bc
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/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/not_built/core/mythtv/stable-0.24/mythtv/mythbackend.sh b/abs/not_built/core/mythtv/stable-0.24/mythtv/mythbackend.sh
new file mode 100755
index 0000000..e7a7b70
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/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 <linux at m-thomson dot net>
+# With thanks to Stu Tomlinson <stu at nosnilmot dot com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Default values to use if none are supplied in the config file.
+# User who should start the mythbackend processes
+MBE_USER="root"
+# Directory holding the mythbackend binary
+MBE_LOCATION="/usr/local/bin/"
+# Name of mythbackend binary
+MBE_PROG="mythbackend"
+# Full path to mythbackend log file
+MBE_LOGFILE="/var/log/mythtv/mythbackend.log"
+
+# Source function library.
+. /etc/init.d/functions
+
+# Source config file if available
+if [ -f "/etc/sysconfig/mythbackend" ]; then
+ . /etc/sysconfig/mythbackend
+fi
+
+test -x ${MBE_LOCATION}${MBE_PROG} || exit 0
+
+RETVAL=0
+
+#
+# See how we were called.
+#
+
+start() {
+ # Check if mythbackend is already running
+ if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then
+ echo -n "Starting ${MBE_PROG}: "
+ # /usr/local/bin/mythbackend -d -l /some/log/file
+ #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+ ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG}
+ echo
+ fi
+ return $RETVAL
+}
+
+stop() {
+ echo -n "Stopping ${MBE_PROG}: "
+ killproc ${MBE_LOCATION}${MBE_PROG}
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG}
+ echo
+ return $RETVAL
+}
+
+
+restart() {
+ stop
+ start
+}
+
+reload() {
+ restart
+}
+
+status_at() {
+ status ${MBE_LOCATION}${MBE_PROG}
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+reload|restart)
+ restart
+ ;;
+condrestart)
+ if [ -f /var/lock/subsys/${MBE_PROG} ]; then
+ restart
+ fi
+ ;;
+status)
+ status_at
+ ;;
+*)
+ echo "Usage: $0 {start|stop|restart|condrestart|status}"
+ exit 1
+esac
+
+exit $?
+exit $RETVAL
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/mythfrontend.lr b/abs/not_built/core/mythtv/stable-0.24/mythtv/mythfrontend.lr
new file mode 100644
index 0000000..1580533
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/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/not_built/core/mythtv/stable-0.24/mythtv/mythtv.install b/abs/not_built/core/mythtv/stable-0.24/mythtv/mythtv.install
new file mode 100755
index 0000000..3f2e304
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/mythtv.install
@@ -0,0 +1,63 @@
+# 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
+ ln -s /usr/share/mythtv/themes/defaultmenu/is.xml /usr/share/mythtv/is.xml
+}
+
+pre_upgrade() {
+ if [ ! -L /usr/share/mythtv/is.xml ]
+ then
+ mv /usr/share/mythtv/is.xml /usr/share/mythtv/is.xml.pre
+ else
+ mv /usr/share/mythtv/themes/defaultmenu/is.xml /usr/share/mythtv/themes/defaultmenu/is.xml.pre
+ fi
+}
+
+post_upgrade() {
+ if [ ! -d /var/log/mythtv ]
+ then
+ mkdir -p /var/log/mythv
+ chown -R mythtv /var/log/mythtv
+ fi
+ if [ -e /usr/share/mythtv/is.xml.pre ]
+ then
+ rm -fr /usr/share/mythtv/themes/defaultmenu/is.xml
+ mv /usr/share/mythtv/is.xml.pre /usr/share/mythtv/themes/defaultmenu/is.xml
+ ln -s /usr/share/mythtv/themes/defaultmenu/is.xml /usr/share/mythtv/is.xml
+ else
+ mv /usr/share/mythtv/themes/defaultmenu/is.xml.pre /usr/share/mythtv/themes/defaultmenu/is.xml
+ fi
+ pacxmbc=`pacman -Q xbmc`
+ if [ -z "$pacxbmc" ]
+ then
+ mv /usr/share/mythtv/themes/defaultmenu/library.xml /tmp
+ grep -v -e /mythmenu /tmp/library.xml > /tmp/library.xml.tmp
+ echo "<!--#XBMC-->" >> /tmp/library.xml.tmp
+ echo " <button>" >> /tmp/library.xml.tmp
+ echo " <type>MENU_XBMC</type>" >> /tmp/library.xml.tmp
+ echo " <text>Launch XBMC</text>" >> /tmp/library.xml.tmp
+ echo " <action>EXEC /usr/bin/xbmc</action>" >> /tmp/library.xml.tmp
+ echo " </button>" >> /tmp/library.xml.tmp
+ echo "<!--#XBMC-->" >> /tmp/library.xml.tmp
+ echo "" >> /tmp/library.xml.tmp
+ echo "</mythmenu>" >> /tmp/library.xml.tmp
+ mv /tmp/library.xml.tmp /usr/share/mythtv/themes/defaultmenu/library.xml
+ fi
+}
+
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/pretty b/abs/not_built/core/mythtv/stable-0.24/mythtv/pretty
new file mode 100755
index 0000000..7e0ab21
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/pretty
@@ -0,0 +1,9 @@
+#!/bin/bash
+if [ -f /usr/share/mythtv/contrib/user_jobs/mythlink.pl ]
+then
+ su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythlink.pl --link /myth/pretty"
+elif [ -f /usr/share/mythtv/contrib/user_jobs/mythrename.pl ]
+then
+ su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythrename.pl --link /myth/pretty"
+fi
+
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythtv/smolt_jump.patch b/abs/not_built/core/mythtv/stable-0.24/mythtv/smolt_jump.patch
new file mode 100644
index 0000000..76f884c
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythtv/smolt_jump.patch
@@ -0,0 +1,10 @@
+--- programs/mythfrontend/networkcontrol.cpp.orig 2010-11-08 23:07:04.000000000 +0000
++++ programs/mythfrontend/networkcontrol.cpp 2010-11-08 23:08:06.000000000 +0000
+@@ -88,6 +88,7 @@
+ jumpMap["zoneminderliveview"] = "ZoneMinder Live View";
+ jumpMap["zoneminderevents"] = "ZoneMinder Events";
+ jumpMap["snapshot"] = "ScreenShot";
++ jumpMap["mythsmolt"] = "MythSmolt";
+
+ jumpMap["channelrecpriority"] = "Channel Recording Priorities";
+ jumpMap["viewscheduled"] = "Manage Recordings / Fix Conflicts";
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythweb/PKGBUILD b/abs/not_built/core/mythtv/stable-0.24/mythweb/PKGBUILD
new file mode 100644
index 0000000..cab8fbd
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythweb/PKGBUILD
@@ -0,0 +1,46 @@
+pkgname=mythweb
+pkgver=0.24
+pkgrel=16
+pkgdesc="Web interface for MythTV's backend"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv>=0.24' 'lighttpd' 'php' 'local-website')
+groups=('mythtv-extras')
+
+patches=()
+source=('ftp://ftp.knoppmyth.net/R6/sources/mythweb-0.24-fixes.tar.bz2' `echo ${patches[@]:0}`)
+
+DOCROOT=/data/srv/httpd/htdocs/mythweb
+_gitroot="https://github.com/mythtv/mythweb.git"
+_gitname="${pkgname}"
+build() {
+
+ cd $startdir/src/mythweb
+ git pull
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${srcdir}/$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,data}
+ rsync -arp --exclude .git --delete-excluded $startdir/src/mythweb/* $startdir/pkg/$DOCROOT
+ rm $startdir/pkg/$DOCROOT/README
+ chown -R http:http $startdir/pkg/$DOCROOT
+ chmod g+rw $pkgdir/$DOCROOT/{image_cache,php_sessions,data}
+
+ # mythweb modules_path fix for 0.24
+ # http://code.mythtv.org/trac/ticket/9255
+ cd ${pkgdir}/${DOCROOT}
+ ln -s modules modules_path
+}
+md5sums=('45703fa3899c4ee84d1b087bfcc6654e')
diff --git a/abs/not_built/core/mythtv/stable-0.24/mythweb/mythweb.php.patch b/abs/not_built/core/mythtv/stable-0.24/mythweb/mythweb.php.patch
new file mode 100644
index 0000000..4525e68
--- /dev/null
+++ b/abs/not_built/core/mythtv/stable-0.24/mythweb/mythweb.php.patch
@@ -0,0 +1,11 @@
+--- mythweb.php.orig 2011-02-01 03:33:56.000000000 +0000
++++ mythweb.php 2011-02-01 03:34:20.000000000 +0000
+@@ -30,7 +30,7 @@
+ if (Modules::getModule($Path[0])) {
+ // Add the current module directory to our search path, so modules can
+ // define includes, etc.
+- ini_set('include_path', ini_get('include_path').':'.modules_path.'/'.$Path[0]);
++ ini_set('include_path', ini_get('include_path').':'.modules.'/'.$Path[0]);
+ // Load the module handler
+ require_once 'handler.php';
+ }
diff --git a/abs/not_built/core/mythtv/trunk/morethemes/PKGBUILD b/abs/not_built/core/mythtv/trunk/morethemes/PKGBUILD
new file mode 100644
index 0000000..c8f892e
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/morethemes/PKGBUILD
@@ -0,0 +1,54 @@
+pkgname=morethemes-svn
+pkgver=23790
+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
+ ./configure --prefix=/usr
+
+ # build and install
+ . /etc/profile
+# make || return 1
+# make INSTALL_ROOT=$startdir/pkg install || return 1
+ make
+ make INSTALL_ROOT=$startdir/pkg install
+ return 0
+#### THIS PKGBUILD IS HACKED TO BUILD WITH ZERO CONTENT RIGHT NOW ####
+}
diff --git a/abs/not_built/core/mythtv/trunk/mytharchive/PKGBUILD b/abs/not_built/core/mythtv/trunk/mytharchive/PKGBUILD
new file mode 100644
index 0000000..20e9904
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mytharchive/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mytharchive-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythbrowser/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythbrowser/PKGBUILD
new file mode 100644
index 0000000..fdcefe0
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythbrowser/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythbrowser-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythgallery/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythgallery/PKGBUILD
new file mode 100644
index 0000000..6415b96
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythgallery/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythgallery-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythgame/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythgame/PKGBUILD
new file mode 100644
index 0000000..e7d09ab
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythgame/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythgame-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythmovies/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythmovies/PKGBUILD
new file mode 100644
index 0000000..f05180c
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythmovies/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythmovies-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythmusic/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythmusic/PKGBUILD
new file mode 100644
index 0000000..3d9f5ce
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythmusic/PKGBUILD
@@ -0,0 +1,54 @@
+pkgname=mythmusic-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythnetvision/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythnetvision/PKGBUILD
new file mode 100644
index 0000000..c820ac5
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythnetvision/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythnetvision-svn
+pkgver=23790
+pkgrel=1
+pkgdesc="Internet video plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'python-pycurl' 'flashplugin')
+conflicts=('mythnetvision')
+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-mythnetvision || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/not_built/core/mythtv/trunk/mythnews/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythnews/PKGBUILD
new file mode 100644
index 0000000..630325c
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythnews/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythnews-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/myththemes/PKGBUILD b/abs/not_built/core/mythtv/trunk/myththemes/PKGBUILD
new file mode 100755
index 0000000..9e10ba2
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/myththemes/PKGBUILD
@@ -0,0 +1,50 @@
+pkgname=myththemes-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythtv/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythtv/PKGBUILD
new file mode 100755
index 0000000..65b12db
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/PKGBUILD
@@ -0,0 +1,97 @@
+pkgname=mythtv-svn
+pkgver=23790
+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' 'libvdpau')
+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-pulseoutput || 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
+ rsync -arp --exclude .svn --delete-excluded docs $startdir/pkg/usr/share/mythtv/ || return 1
+
+ # install contrib
+ rsync -arp --exclude .svn --delete-excluded contrib $startdir/pkg/usr/share/mythtv/ || return 1
+ #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/
+}
+
+md5sums=('7ef6de58240e7aad389a0b13d91b1cf6'
+ '2babd4b8e146a7538d18dcd55695b0be'
+ 'f735805a80b0d1180dee01f9df1b7004'
+ 'f407d6af23e74a49540755420f84fa58'
+ 'ca547c201e3dd4bf3882bebf7c648652')
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml
new file mode 100644
index 0000000..ac52497
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -0,0 +1,94 @@
+<mythmenu name="HOST_SETTINGS">
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>Network Settings</text>
+ <action>EXEC mythinstall -s network </action>
+ </button>
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>DDNS Settings</text>
+ <action>EXEC mythinstall -s ddns </action>
+ </button>
+ <button>
+ <type>MV_SYSTEM_SETUP_MENU</type>
+ <text>System Type</text>
+ <action>EXEC mythinstall -s hostype </action>
+ </button>
+
+ <button>
+ <type>MV_SCREENSAVER_SETUP_MENU</type>
+ <text>Screensaver Settings</text>
+ <action>EXEC mythinstall -s screensaver </action>
+ </button>
+
+ <button>
+ <type>MV_IR_SETUP_MENU</type>
+ <text>Remotes</text>
+ <action>EXEC mythinstall -s ir </action>
+ </button>
+
+ <button>
+ <type>MV_MISC_SETUP_MENU</type>
+ <text>Miscellanous Settings</text>
+ <action>EXEC mythinstall -s misc </action>
+ </button>
+
+ <button>
+ <type>MV_SOFTWARE_MENU</type>
+ <text>Software</text>
+ <action>EXEC mythinstall -s plugins </action>
+ </button>
+
+ <button>
+ <type>MV_SHUTDOWN_SETUP_MENU</type>
+ <text>Shutdown Settings</text>
+ <action>EXEC mythinstall -s sleep </action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_X_SETUP_MENU</type>
+ <text>Display Settings</text>
+ <action>EXEC mythinstall -s advancedX</action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_SETUP_MENU</type>
+ <text>Advanced Settings</text>
+ <action>EXEC mythinstall -s advanced</action>
+ </button>
+
+ <button>
+ <type>MV_AUDIO_SETUP_MENU</type>
+ <text>Audio Settings</text>
+ <action>EXEC mythinstall -s sound </action>
+ </button>
+
+ <button>
+ <type>MV_ACCESS_SETUP_MENU</type>
+ <text>Access Control</text>
+ <action>EXEC mythinstall -s accesscontrol </action>
+ </button>
+
+ <button>
+ <type>MV_USER_SETUP_MENU</type>
+ <text>User Accounts</text>
+ <action>EXEC mythinstall -s user </action>
+ </button>
+
+ <button>
+ <type>MV_WEBACCESS_SETUP_MENU</type>
+ <text>Web Security</text>
+ <action>EXEC mythinstall -s webuser </action>
+ </button>
+
+ <!--
+ <button>
+ <type>SETUP_MENU</type>
+ <text>Settings Profile Manager</text>
+ <action>EXEC mythinstall -t </action>
+ </button>
+ -->
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/is.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/is.xml
new file mode 100644
index 0000000..88b7e6b
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/is.xml
@@ -0,0 +1,3 @@
+<mythmenu name="Internet Steams">
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch
new file mode 100644
index 0000000..81ea604
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/library.xml.patch
@@ -0,0 +1,12 @@
+--- library.xml.orig 2009-10-16 12:45:44.000000000 +0000
++++ library.xml 2009-10-16 17:21:44.000000000 +0000
+@@ -123,8 +123,7 @@
+ <text lang="HU">Online folyam lejátszása</text>
+ <description></description>
+ <description lang="DE"></description>
+- <action>PLUGIN mythstream</action>
+- <depends>mythstream</depends>
++ <action>MENU is.xml</action>
+ </button>
+
+ <button>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/linhes.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/linhes.xml
new file mode 100644
index 0000000..ebc848b
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/linhes.xml
@@ -0,0 +1,59 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>MythTV Configuration</text>
+ <text lang="IT">Impostazioni</text>
+ <text lang="ES">Configuración</text>
+ <text lang="DE">Zubehör / Konfiguration</text>
+ <text lang="DA">Tilbehør/Indstillinger</text>
+ <text lang="IS">Uppsetning</text>
+ <text lang="NL">Configuratie</text>
+ <text lang="PT">Utensílios</text>
+ <text lang="SV">Verktyg / Inställningar</text>
+ <text lang="JA">設å®~Z</text>
+ <text lang="FI">Oheis/Asetukset</text>
+ <text lang="ZH_TW">å·¥å~E·/設å®~Z</text>
+ <text lang="SL">Nastavitve</text>
+ <text lang="ET">Utiliidid / sätted</text>
+ <text lang="RU">УÑ~BилиÑ~BÑ~K / Ð~]аÑ~AÑ~BÑ~@ойки</text>
+ <text lang="AR">تضبÙ~Jطات</text>
+ <text lang="PL">NarzÄ~Ydzia / ustawienia</text>
+ <text lang="HE">×¢×~Vר×~Y×~] / ×~T×~R×~Sר×~Uת</text>
+ <text lang="HU">Eszközök / Beállítások</text>
+ <alttext lang="DE">Verschiedenes</alttext>
+ <alttext lang="SV">Inställningar</alttext>
+ <alttext lang="ET">Sätted</alttext>
+ <alttext lang="RU">Ð~]аÑ~AÑ~BÑ~@ойки</alttext>
+ <alttext lang="AR">تضبÙ~Jطات</alttext>
+ <description>Configure MythTV and plugins</description>
+ <description lang="DE">MythTV und Plugins konfigurieren</description>
+ <action>MENU util_menu.xml</action>
+ </button>
+
+ <button>
+ <type>LINHES_SETUP</type>
+ <text>LinHES Configuration</text>
+ <action>MENU HOST_SETTINGS.xml</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Backup LinHES</text>
+ <action>MENU mythbackup.xml</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Restore LinHES</text>
+ <action>MENU mythrestore.xml</action>
+ </button>
+
+<!--#Check for updates-->
+ <button>
+ <type>UPGRADE</type>
+ <text>Upgrade LinHES</text>
+ <action>MENU update.xml</action>
+ </button>
+<!--#Check for updates-->
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch
new file mode 100644
index 0000000..74ace7b
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mainmenu.xml.patch
@@ -0,0 +1,38 @@
+--- mainmenu.xml.orig 2010-03-24 13:11:27.223119163 -0400
++++ mainmenu.xml 2010-03-24 14:18:33.922746799 -0400
+@@ -151,32 +151,9 @@
+
+ <button>
+ <type>MENU_UTILITIES_SETUP</type>
+- <text>Utilities / Setup</text>
+- <text lang="IT">Impostazioni</text>
+- <text lang="ES">Configuración</text>
+- <text lang="DE">Zubehör / Konfiguration</text>
+- <text lang="IS">Uppsetning</text>
+- <text lang="NL">Configuratie</text>
+- <text lang="PT">Utensílios</text>
+- <text lang="SV">Verktyg / Inställningar</text>
+- <text lang="JA">設定</text>
+- <text lang="FI">Oheis/Asetukset</text>
+- <text lang="ZH_TW">工具/設定</text>
+- <text lang="SL">Nastavitve</text>
+- <text lang="ET">Utiliidid / sätted</text>
+- <text lang="RU">Утилиты / ÐаÑтройки</text>
+- <text lang="AR">تضبيطات</text>
+- <text lang="PL">Narzędzia / ustawienia</text>
+- <text lang="HE">×¢×–×¨×™× / הגדרות</text>
+- <text lang="HU">Eszközök / Beállítások</text>
+- <alttext lang="DE">Verschiedenes</alttext>
+- <alttext lang="SV">Inställningar</alttext>
+- <alttext lang="ET">Sätted</alttext>
+- <alttext lang="RU">ÐаÑтройки</alttext>
+- <alttext lang="AR">تضبيطات</alttext>
+- <description>Configure MythTV and plugins</description>
+- <description lang="DE">MythTV und Plugins konfigurieren</description>
+- <action>MENU util_menu.xml</action>
++ <text>Service Menu</text>
++ <description>LinHES Service Menu</description>
++ <action>MENU linhes.xml</action>
+ </button>
+
+ <!-- <button>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythbackup.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythbackup.xml
new file mode 100644
index 0000000..5914b33
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythbackup.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>BACKUP</type>
+ <text>Do you wish to backup?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/mythbackup</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythrestore.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythrestore.xml
new file mode 100644
index 0000000..8f5c285
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/mythrestore.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>RESTORE</type>
+ <text>Do you wish to restore?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/mythrestore</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/optical_menu.xml.patch b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/optical_menu.xml.patch
new file mode 100644
index 0000000..b4b1411
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/optical_menu.xml.patch
@@ -0,0 +1,16 @@
+--- optical_menu.xml.orig 2009-03-23 20:05:43.000000000 +0000
++++ optical_menu.xml 2009-03-23 20:10:02.000000000 +0000
+@@ -134,6 +134,13 @@
+ </button>
+
+ <button>
++ <type>DVD_RIP</type>
++ <text>Import video files from DVD</text>
++ <description>Import video files from a data DVD</description>
++ <action>EXEC /usr/LH/bin/importfiles.sh</action>
++ </button>
++
++ <button>
+ <type>EJECT</type>
+ <text>Eject media</text>
+ <text lang="IT">Espelli Media</text>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/original/create_patch.sh b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/original/create_patch.sh
new file mode 100755
index 0000000..34d8b8c
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/original/create_patch.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+for i in *.xml
+do
+ diff -u $i.orig $i > ../$i.patch
+done
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/setup.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/setup.xml
new file mode 100644
index 0000000..f56bb6f
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/setup.xml
@@ -0,0 +1,111 @@
+<mythmenu name="MAIN">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>1. General</text>
+ <text lang="IT">1. Generale</text>
+ <text lang="PT">1. Geral</text>
+ <text lang="SV">1. Generellt</text>
+ <text lang="JA">1. 一般</text>
+ <text lang="DE">1. Allgemeines</text>
+ <text lang="FI">1. Yleiset</text>
+ <text lang="FR">1. Général</text>
+ <text lang="SI">1. Splošno</text>
+ <text lang="ET">1. Ãœldine</text>
+ <text lang="NB">1 Generelt</text>
+ <text lang="DK">1. Generelt</text>
+ <text lang="ES">1. General</text>
+ <text lang="CZ">1. Obecný</text>
+ <text lang="RU">1. Общие</text>
+ <action>GENERAL</action>
+ </button>
+
+ <button>
+ <type>SETUP_CAPTURE_CARDS</type>
+ <text>2. Capture cards</text>
+ <text lang="IT">2. Schede di Acquisizione</text>
+ <text lang="PT">2. Placas de Captura</text>
+ <text lang="SV">2. TV-kort</text>
+ <text lang="JA">2. キャプãƒãƒ£ã‚«ãƒ¼ãƒ‰</text>
+ <text lang="DE">2. TV-Karten</text>
+ <text lang="FI">2. TV-kortit</text>
+ <text lang="FR">2. Cartes d'acquisition</text>
+ <text lang="SI">2. Kartice za zajem</text>
+ <text lang="ET">2. TV-kaardid</text>
+ <text lang="NB">2 TV-kort</text>
+ <text lang="DK">2. TV-kort</text>
+ <text lang="ES">2. Capturadoras</text>
+ <text lang="CZ">2. Zachytávací karty</text>
+ <text lang="RU">2. Карты захвата</text>
+ <action>CAPTURE CARDS</action>
+ </button>
+
+ <button>
+ <type>SETUP_VIDEO_SOURCES</type>
+ <text>3. Video sources</text>
+ <text lang="IT">3. Fonte Video</text>
+ <text lang="PT">3. Fontes de Vídeo</text>
+ <text lang="SV">3. Videokällor</text>
+ <text lang="JA">3. ビデオソース</text>
+ <text lang="DE">3. Videoquellen</text>
+ <text lang="FI">3. Kuvanlähteet</text>
+ <text lang="FR">3. Sources vidéo</text>
+ <text lang="SI">3. Video viri</text>
+ <text lang="ET">3. Videosisendid</text>
+ <text lang="NB">3 Videokilder</text>
+ <text lang="DK">3. Videokilder</text>
+ <text lang="ES">3. Fuentes de Vídeo</text>
+ <text lang="CZ">3. Zdroje obrazu</text>
+ <text lang="RU">3. Видео иÑточники</text>
+ <action>VIDEO SOURCES</action>
+ </button>
+
+ <button>
+ <type>SETUP_INPUT_CONNECTIONS</type>
+ <text>4. Input connections</text>
+ <text lang="IT">4. Connessioni di Ingresso</text>
+ <text lang="PT">4. Ligações de Entrada</text>
+ <text lang="SV">4. Anslutningar</text>
+ <text lang="JA">4. 入力ã¨ã‚½ãƒ¼ã‚¹ã®æŽ¥ç¶š</text>
+ <text lang="DE">4. Verknüpfungen</text>
+ <text lang="FI">4. Sisääntuloasetukset</text>
+ <text lang="FR">4. Entrées Vidéos</text>
+ <text lang="SI">4. Vhodne povezave</text>
+ <text lang="ET">4. Sisendite ühendused</text>
+ <text lang="NB">4 Inndata</text>
+ <text lang="DK">4. Indgange</text>
+ <text lang="ES">4. Conexiones</text>
+ <text lang="CZ">4. Připojení vstupů</text>
+ <text lang="RU">4. Соединение входов</text>
+ <action>CARD INPUTS</action>
+ </button>
+
+ <button>
+ <type>SETUP_CHANNEL_EDITOR</type>
+ <text>5. Channel Editor</text>
+ <text lang="IT">5. Modifica Canali</text>
+ <text lang="SV">5. Kanaleditor</text>
+ <text lang="JA">5. ãƒãƒ£ãƒ³ãƒãƒ«è¨­å®š</text>
+ <text lang="DE">5. Sender bearbeiten</text>
+ <text lang="FI">5. Kanavanviritys</text>
+ <text lang="FR">5. Editeur de chaînes</text>
+ <text lang="SI">5. Urejanje kanalov</text>
+ <text lang="ET">5. Kanaliredaktor</text>
+ <text lang="NB">5 Kanalredigerer</text>
+ <text lang="DK">5. Kanal opsætning</text>
+ <text lang="ES">5. Editor Canales</text>
+ <text lang="CZ">5. Editor kanálů</text>
+ <text lang="RU">5. Редактор каналов</text>
+ <action>CHANNEL EDITOR</action>
+ </button>
+
+ <button>
+ <type>SETUP_STORAGE_GROUPS</type>
+ <text>6. Storage Directories</text>
+ <text lang="IT">6. Cartelle</text>
+ <text lang="FI">Tallennusryhmät</text>
+ <text lang="SV">Lagringsgrupper</text>
+ <action>STORAGE GROUPS</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/siriusmenu.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/siriusmenu.xml
new file mode 100644
index 0000000..e317b36
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/siriusmenu.xml
@@ -0,0 +1,419 @@
+<mythmenu name="SIRIUS">
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Hits 1</text>
+ <action>EXEC /usr/bin/cliSipie siriushits1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>StarLite</text>
+ <action>EXEC /usr/bin/cliSipie starlite</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Love</text>
+ <action>EXEC /usr/bin/cliSipie siriuslove</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Movin EZ</text>
+ <action>EXEC /usr/bin/cliSipie movineasy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Gold</text>
+ <action>EXEC /usr/bin/cliSipie siriusgold</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'60s Vibrations</text>
+ <action>EXEC /usr/bin/cliSipie 60svibrations</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Totally '70s</text>
+ <action>EXEC /usr/bin/cliSipie totally70s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Big '80s</text>
+ <action>EXEC /usr/bin/cliSipie big80s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>ThePulse</text>
+ <action>EXEC /usr/bin/cliSipie thepulse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bridge</text>
+ <action>EXEC /usr/bin/cliSipie thebridge</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BBC Radio 1</text>
+ <action>EXEC /usr/bin/cliSipie bbcradio1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Super Shuffle</text>
+ <action>EXEC /usr/bin/cliSipie supershuffle</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Elvis Radio</text>
+ <action>EXEC /usr/bin/cliSipie elvisradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Vinyl</text>
+ <action>EXEC /usr/bin/cliSipie classicvinyl</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Rewind</text>
+ <action>EXEC /usr/bin/cliSipie classicrewind</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>TheVault</text>
+ <action>EXEC /usr/bin/cliSipie thevault</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Jam_ON</text>
+ <action>EXEC /usr/bin/cliSipie jamon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spectrum</text>
+ <action>EXEC /usr/bin/cliSipie thespectrum</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BuzzSaw</text>
+ <action>EXEC /usr/bin/cliSipie buzzsaw</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Octane</text>
+ <action>EXEC /usr/bin/cliSipie octane</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Alt Nation</text>
+ <action>EXEC /usr/bin/cliSipie altnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>1st Wave</text>
+ <action>EXEC /usr/bin/cliSipie firstwave</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hair Nation</text>
+ <action>EXEC /usr/bin/cliSipie hairnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'90s Alternative</text>
+ <action>EXEC /usr/bin/cliSipie 90salternative</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Garage</text>
+ <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left of Center</text>
+ <action>EXEC /usr/bin/cliSipie leftofcenter</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hard Attack</text>
+ <action>EXEC /usr/bin/cliSipie hardattack</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Faction</text>
+ <action>EXEC /usr/bin/cliSipie faction</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Punk</text>
+ <action>EXEC /usr/bin/cliSipie punk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Coffee House</text>
+ <action>EXEC /usr/bin/cliSipie coffeehouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Margaritaville</text>
+ <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Disorder</text>
+ <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Reggae</text>
+ <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Area 33</text>
+ <action>EXEC /usr/bin/cliSipie area33</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Boombox</text>
+ <action>EXEC /usr/bin/cliSipie boombox</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Chill</text>
+ <action>EXEC /usr/bin/cliSipie chill</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Beat</text>
+ <action>EXEC /usr/bin/cliSipie thebeat</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Strobe</text>
+ <action>EXEC /usr/bin/cliSipie thestrobe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hip-Hop Nation</text>
+ <action>EXEC /usr/bin/cliSipie hiphopnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BackSpin</text>
+ <action>EXEC /usr/bin/cliSipie backspin</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Shade 45</text>
+ <action>EXEC /usr/bin/cliSipie shade45</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hot Jamz</text>
+ <action>EXEC /usr/bin/cliSipie hotjamz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Heart &amp; Soul</text>
+ <action>EXEC /usr/bin/cliSipie heartandsoul</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>SoulTown</text>
+ <action>EXEC /usr/bin/cliSipie soultown</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>New Country</text>
+ <action>EXEC /usr/bin/cliSipie newcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Prime Country</text>
+ <action>EXEC /usr/bin/cliSipie primecountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Roadhouse</text>
+ <action>EXEC /usr/bin/cliSipie theroadhouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Outlaw Country</text>
+ <action>EXEC /usr/bin/cliSipie outlawcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass</text>
+ <action>EXEC /usr/bin/cliSipie bluegrass</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/cliSipie spirit</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Praise</text>
+ <action>EXEC /usr/bin/cliSipie praise</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Planet Jazz</text>
+ <action>EXEC /usr/bin/cliSipie planetjazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>JazzCafe</text>
+ <action>EXEC /usr/bin/cliSipie jazzcafe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>PureJazz</text>
+ <action>EXEC /usr/bin/cliSipie purejazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spa 73</text>
+ <action>EXEC /usr/bin/cliSipie spa73</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blues</text>
+ <action>EXEC /usr/bin/cliSipie siriusblues</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Siriusly Sinatra</text>
+ <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Broadway's Best</text>
+ <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Symphony Hall</text>
+ <action>EXEC /usr/bin/cliSipie symphonyhall</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Met Opera Radio</text>
+ <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Pops</text>
+ <action>EXEC /usr/bin/cliSipie siriuspops</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Universo Latino</text>
+ <action>EXEC /usr/bin/cliSipie universolatino</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Rumbon</text>
+ <action>EXEC /usr/bin/cliSipie rumbon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Martha Stewart</text>
+ <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Stars</text>
+ <action>EXEC /usr/bin/cliSipie siriusstars</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>OutQ Gay Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusoutq</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Patriot</text>
+ <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left</text>
+ <action>EXEC /usr/bin/cliSipie siriusleft</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>CNN</text>
+ <action>EXEC /usr/bin/cliSipie cnn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>wrn</text>
+ <action>EXEC /usr/bin/cliSipie wrn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blue Collar Comedy</text>
+ <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Raw Dog Comedy</text>
+ <action>EXEC /usr/bin/cliSipie rawdog</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh Break Comedy</text>
+ <action>EXEC /usr/bin/cliSipie laughbreak</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>thefoxxhole</text>
+ <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>lime</text>
+ <action>EXEC /usr/bin/cliSipie lime</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Kids Stuff</text>
+ <action>EXEC /usr/bin/cliSipie kidsstuff</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Catholic Channel</text>
+ <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>EWTN</text>
+ <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>christiantalk</text>
+ <action>EXEC /usr/bin/cliSipie christiantalk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius NFL Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Maxim Radio</text>
+ <action>EXEC /usr/bin/cliSipie maximradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Cosmo Radio</text>
+ <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
+ </button>
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/sipie_kill</action>
+ </button>
+
+</mythmenu>
+
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update.xml
new file mode 100644
index 0000000..5b28833
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Check for updates?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update2.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update2.xml
new file mode 100644
index 0000000..2ab82ea
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/update2.xml
@@ -0,0 +1,26 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Perform updates?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>View files to be upgraded.</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update3.sh</action>
+ </button>
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/util_menu.xml.patch b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/util_menu.xml.patch
new file mode 100644
index 0000000..3a1072a
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/util_menu.xml.patch
@@ -0,0 +1,16 @@
+--- util_menu.xml.orig 2009-03-23 18:43:18.000000000 +0000
++++ util_menu.xml 2009-03-23 20:16:56.000000000 +0000
+@@ -56,6 +56,13 @@
+ </button>
+
+ <button>
++ <type>VIDEO_SCREENSHOOTER</type>
++ <text>Thumbnail Generator</text>
++ <description>Generate thumbnail images for videos</description>
++ <action>EXEC /usr/LH/bin/shootscreens-mythtv.sh</action>
++ </button>
++
++ <button>
+ <type>SETUP_KEYS</type>
+ <text>Edit Keys</text>
+ <text lang="IT">Modifica Tasti</text>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/xmmenu.xml b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/xmmenu.xml
new file mode 100644
index 0000000..6b26d11
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/menu-xml/xmmenu.xml
@@ -0,0 +1,574 @@
+<!-- Current as of April 25, 2007 -->
+<mythmenu name="XM">
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '40s</text>
+ <action>EXEC /usr/bin/xamp kill 4</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '50s</text>
+ <action>EXEC /usr/bin/xamp kill 5</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '60s</text>
+ <action>EXEC /usr/bin/xamp kill 6</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '70s</text>
+ <action>EXEC /usr/bin/xamp kill 7</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '80s</text>
+ <action>EXEC /usr/bin/xamp kill 8</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '90s</text>
+ <action>EXEC /usr/bin/xamp kill 9</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>America</text>
+ <action>EXEC /usr/bin/xamp kill 10</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>X Country</text>
+ <action>EXEC /usr/bin/xamp kill 12</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Willie's Place</text>
+ <action>EXEC /usr/bin/xamp kill 13</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass Junction</text>
+ <action>EXEC /usr/bin/xamp kill 14</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Village</text>
+ <action>EXEC /usr/bin/xamp kill 15</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Highway 16</text>
+ <action>EXEC /usr/bin/xamp kill 16</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>US Country</text>
+ <action>EXEC /usr/bin/xamp kill 17</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>20 on 20</text>
+ <action>EXEC /usr/bin/xamp kill 20</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heart</text>
+ <action>EXEC /usr/bin/xamp kill 23</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Blend</text>
+ <action>EXEC /usr/bin/xamp kill 25</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Flight 26</text>
+ <action>EXEC /usr/bin/xamp kill 26</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Cinemagic</text>
+ <action>EXEC /usr/bin/xamp kill 27</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On Broadway</text>
+ <action>EXEC /usr/bin/xamp kill 28</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>U-Pop</text>
+ <action>EXEC /usr/bin/xamp kill 29</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Hitlist</text>
+ <action>EXEC /usr/bin/xamp kill 30</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Torch</text>
+ <action>EXEC /usr/bin/xamp kill 31</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Message</text>
+ <action>EXEC /usr/bin/xamp kill 32</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/xamp kill 33</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>enLighten</text>
+ <action>EXEC /usr/bin/xamp kill 34</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Deep Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 40</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Boneyard</text>
+ <action>EXEC /usr/bin/xamp kill 41</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Liquid Metal</text>
+ <action>EXEC /usr/bin/xamp kill 42</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XMU</text>
+ <action>EXEC /usr/bin/xamp kill 43</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fred</text>
+ <action>EXEC /usr/bin/xamp kill 44</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Cafe</text>
+ <action>EXEC /usr/bin/xamp kill 45</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Top Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 46</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ethel</text>
+ <action>EXEC /usr/bin/xamp kill 47</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Squizz</text>
+ <action>EXEC /usr/bin/xamp kill 48</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Big Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 49</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Loft</text>
+ <action>EXEC /usr/bin/xamp kill 50</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Music Lab</text>
+ <action>EXEC /usr/bin/xamp kill 51</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Verge</text>
+ <action>EXEC /usr/bin/xamp kill 52</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fungus</text>
+ <action>EXEC /usr/bin/xamp kill 53</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Lucy</text>
+ <action>EXEC /usr/bin/xamp kill 54</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Soul Street</text>
+ <action>EXEC /usr/bin/xamp kill 60</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Flow</text>
+ <action>EXEC /usr/bin/xamp kill 61</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Suite 62</text>
+ <action>EXEC /usr/bin/xamp kill 62</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Groove</text>
+ <action>EXEC /usr/bin/xamp kill 64</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Rhyme</text>
+ <action>EXEC /usr/bin/xamp kill 65</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>RAW</text>
+ <action>EXEC /usr/bin/xamp kill 66</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The City</text>
+ <action>EXEC /usr/bin/xamp kill 67</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heat</text>
+ <action>EXEC /usr/bin/xamp kill 68</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Real Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 70</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Watercolors</text>
+ <action>EXEC /usr/bin/xamp kill 71</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Beyond Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 72</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>High Standards</text>
+ <action>EXEC /usr/bin/xamp kill 73</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluesville</text>
+ <action>EXEC /usr/bin/xamp kill 74</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Hear Music</text>
+ <action>EXEC /usr/bin/xamp kill 75</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fine Tuning</text>
+ <action>EXEC /usr/bin/xamp kill 76</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Audio Visions</text>
+ <action>EXEC /usr/bin/xamp kill 77</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Escape</text>
+ <action>EXEC /usr/bin/xamp kill 78</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On The Rocks</text>
+ <action>EXEC /usr/bin/xamp kill 79</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Move</text>
+ <action>EXEC /usr/bin/xamp kill 80</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>BPM</text>
+ <action>EXEC /usr/bin/xamp kill 81</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The System</text>
+ <action>EXEC /usr/bin/xamp kill 82</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Chrome</text>
+ <action>EXEC /usr/bin/xamp kill 83</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM-Chill</text>
+ <action>EXEC /usr/bin/xamp kill 84</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fuego</text>
+ <action>EXEC /usr/bin/xamp kill 90</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Viva</text>
+ <action>EXEC /usr/bin/xamp kill 91</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Aguila</text>
+ <action>EXEC /usr/bin/xamp kill 92</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Caliente</text>
+ <action>EXEC /usr/bin/xamp kill 94</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Luna</text>
+ <action>EXEC /usr/bin/xamp kill 95</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Air Musique</text>
+ <action>EXEC /usr/bin/xamp kill 100</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Joint</text>
+ <action>EXEC /usr/bin/xamp kill 101</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sur La Route</text>
+ <action>EXEC /usr/bin/xamp kill 102</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>World Zone</text>
+ <action>EXEC /usr/bin/xamp kill 103</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ngoma</text>
+ <action>EXEC /usr/bin/xamp kill 104</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Classics</text>
+ <action>EXEC /usr/bin/xamp kill 110</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Vox</text>
+ <action>EXEC /usr/bin/xamp kill 112</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Pops</text>
+ <action>EXEC /usr/bin/xamp kill 113</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Kids</text>
+ <action>EXEC /usr/bin/xamp kill 116</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bob Edwards Show</text>
+ <action>EXEC /usr/bin/xamp kill 133</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Comedy</text>
+ <action>EXEC /usr/bin/xamp kill 150</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh USA</text>
+ <action>EXEC /usr/bin/xamp kill 151</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Special X</text>
+ <action>EXEC /usr/bin/xamp kill 154</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Agenda</text>
+ <action>EXEC /usr/bin/xamp kill 134</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Oprah and Friends</text>
+ <action>EXEC /usr/bin/xamp kill 156</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Virus</text>
+ <action>EXEC /usr/bin/xamp kill 202</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>1 Hit Wonders</text>
+ <action>EXEC /usr/bin/xamp kill 300</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Metalcore</text>
+ <action>EXEC /usr/bin/xamp kill 301</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Indie First</text>
+ <action>EXEC /usr/bin/xamp kill 302</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Late Night Mix</text>
+ <action>EXEC /usr/bin/xamp kill 303</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sessions@AOL</text>
+ <action>EXEC /usr/bin/xamp kill 304</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Shuffle</text>
+ <action>EXEC /usr/bin/xamp kill 305</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Rock First</text>
+ <action>EXEC /usr/bin/xamp kill 306</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Country First</text>
+ <action>EXEC /usr/bin/xamp kill 307</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Hip Hop First</text>
+ <action>EXEC /usr/bin/xamp kill 308</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Pop First</text>
+ <action>EXEC /usr/bin/xamp kill 309</action>
+ </button>
+
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/xamp kill</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/myth.sh b/abs/not_built/core/mythtv/trunk/mythtv/myth.sh
new file mode 100755
index 0000000..fb7122c
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythtv/mythbackend b/abs/not_built/core/mythtv/trunk/mythtv/mythbackend
new file mode 100755
index 0000000..93773a2
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythtv/mythbackend.lr b/abs/not_built/core/mythtv/trunk/mythtv/mythbackend.lr
new file mode 100644
index 0000000..4f218bc
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythtv/mythbackend.sh b/abs/not_built/core/mythtv/trunk/mythtv/mythbackend.sh
new file mode 100755
index 0000000..e7a7b70
--- /dev/null
+++ b/abs/not_built/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 <linux at m-thomson dot net>
+# With thanks to Stu Tomlinson <stu at nosnilmot dot com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Default values to use if none are supplied in the config file.
+# User who should start the mythbackend processes
+MBE_USER="root"
+# Directory holding the mythbackend binary
+MBE_LOCATION="/usr/local/bin/"
+# Name of mythbackend binary
+MBE_PROG="mythbackend"
+# Full path to mythbackend log file
+MBE_LOGFILE="/var/log/mythtv/mythbackend.log"
+
+# Source function library.
+. /etc/init.d/functions
+
+# Source config file if available
+if [ -f "/etc/sysconfig/mythbackend" ]; then
+ . /etc/sysconfig/mythbackend
+fi
+
+test -x ${MBE_LOCATION}${MBE_PROG} || exit 0
+
+RETVAL=0
+
+#
+# See how we were called.
+#
+
+start() {
+ # Check if mythbackend is already running
+ if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then
+ echo -n "Starting ${MBE_PROG}: "
+ # /usr/local/bin/mythbackend -d -l /some/log/file
+ #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+ ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG}
+ echo
+ fi
+ return $RETVAL
+}
+
+stop() {
+ echo -n "Stopping ${MBE_PROG}: "
+ killproc ${MBE_LOCATION}${MBE_PROG}
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG}
+ echo
+ return $RETVAL
+}
+
+
+restart() {
+ stop
+ start
+}
+
+reload() {
+ restart
+}
+
+status_at() {
+ status ${MBE_LOCATION}${MBE_PROG}
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+reload|restart)
+ restart
+ ;;
+condrestart)
+ if [ -f /var/lock/subsys/${MBE_PROG} ]; then
+ restart
+ fi
+ ;;
+status)
+ status_at
+ ;;
+*)
+ echo "Usage: $0 {start|stop|restart|condrestart|status}"
+ exit 1
+esac
+
+exit $?
+exit $RETVAL
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/mythfrontend.lr b/abs/not_built/core/mythtv/trunk/mythtv/mythfrontend.lr
new file mode 100644
index 0000000..1580533
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythtv/mythtv.install b/abs/not_built/core/mythtv/trunk/mythtv/mythtv.install
new file mode 100755
index 0000000..87507a5
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythtv/pretty b/abs/not_built/core/mythtv/trunk/mythtv/pretty
new file mode 100755
index 0000000..7e0ab21
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythtv/pretty
@@ -0,0 +1,9 @@
+#!/bin/bash
+if [ -f /usr/share/mythtv/contrib/user_jobs/mythlink.pl ]
+then
+ su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythlink.pl --link /myth/pretty"
+elif [ -f /usr/share/mythtv/contrib/user_jobs/mythrename.pl ]
+then
+ su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythrename.pl --link /myth/pretty"
+fi
+
diff --git a/abs/not_built/core/mythtv/trunk/mythtv/smolt_jump.patch b/abs/not_built/core/mythtv/trunk/mythtv/smolt_jump.patch
new file mode 100644
index 0000000..0fc452a
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythvideo/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythvideo/PKGBUILD
new file mode 100644
index 0000000..951a427
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythvideo/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythvideo-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythweather/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythweather/PKGBUILD
new file mode 100644
index 0000000..1bc8430
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythweather/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythweather-svn
+pkgver=23790
+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/not_built/core/mythtv/trunk/mythweb/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythweb/PKGBUILD
new file mode 100644
index 0000000..dedfcf5
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythweb/PKGBUILD
@@ -0,0 +1,50 @@
+pkgname=mythweb-svn
+pkgver=23790
+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
+ rsync -arp --exclude .svn --delete-excluded $startdir/src/mythplugins/mythweb/* $startdir/pkg/$DOCROOT
+ rm $startdir/pkg/$DOCROOT/README
+ chown -R http:users $startdir/pkg/$DOCROOT
+ chmod g+rw $startdir/pkg/$DOCROOT/{image_cache,php_sessions,data}
+
+}
diff --git a/abs/not_built/core/mythtv/trunk/mythweb/mythweb.install b/abs/not_built/core/mythtv/trunk/mythweb/mythweb.install
new file mode 100644
index 0000000..470cbd1
--- /dev/null
+++ b/abs/not_built/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/not_built/core/mythtv/trunk/mythzoneminder/PKGBUILD b/abs/not_built/core/mythtv/trunk/mythzoneminder/PKGBUILD
new file mode 100644
index 0000000..038007b
--- /dev/null
+++ b/abs/not_built/core/mythtv/trunk/mythzoneminder/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythzoneminder-svn
+pkgver=23790
+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/not_built/core/ndiswrapper-utils/PKGBUILD b/abs/not_built/core/ndiswrapper-utils/PKGBUILD
new file mode 100644
index 0000000..17126fb
--- /dev/null
+++ b/abs/not_built/core/ndiswrapper-utils/PKGBUILD
@@ -0,0 +1,27 @@
+#$Id: PKGBUILD 77959 2010-04-19 07:17:40Z allan $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=ndiswrapper-utils
+pkgver=1.56
+pkgrel=2
+pkgdesc="Binaries for ndiswrapper module"
+arch=('i686' 'x86_64')
+license=('GPL')
+url="http://ndiswrapper.sourceforge.net"
+depends=('wireless_tools' 'glibc' 'perl')
+replaces=('ndiswrapper-bin')
+conflicts=('ndiswrapper-bin')
+source=(http://downloads.sourceforge.net/ndiswrapper/ndiswrapper-$pkgver.tar.gz)
+md5sums=('1431f7ed5f8e92e752d330bbb3aed333')
+
+build()
+{
+ cd $srcdir/ndiswrapper-$pkgver/utils
+ make || return 1
+}
+
+package() {
+ cd $srcdir/ndiswrapper-$pkgver/utils
+ make DESTDIR=$pkgdir install
+}
+
diff --git a/abs/not_built/core/ndiswrapper/PKGBUILD b/abs/not_built/core/ndiswrapper/PKGBUILD
new file mode 100644
index 0000000..9bc90fd
--- /dev/null
+++ b/abs/not_built/core/ndiswrapper/PKGBUILD
@@ -0,0 +1,42 @@
+#$Id: PKGBUILD 105330 2011-01-07 20:49:19Z tpowa $
+#Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+
+pkgname=ndiswrapper
+_kernver=2.6.39-LinHES
+pkgver=1.56
+pkgrel=8
+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.39' 'kernel26<2.6.40')
+makedepends=('kernel26-headers>=2.6.39' 'kernel26-headers<2.6.40')
+source=(http://downloads.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-$pkgver.tar.gz
+ kernel-2.6.35.patch
+ kernel-2.6.36.patch
+ ndiswrapper_kernel-2.6.38.patch)
+build()
+{
+ cd $srcdir/ndiswrapper-$pkgver/driver
+ patch -Np2 -i $startdir/kernel-2.6.35.patch
+ patch -Np2 -i $startdir/kernel-2.6.36.patch
+ patch -Np2 -i $startdir/ndiswrapper_kernel-2.6.38.patch
+ make KVERS=$_kernver
+ make DESTDIR=$pkgdir KVERS=$_kernver install
+ 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 $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=('1431f7ed5f8e92e752d330bbb3aed333'
+ '0a03d613b1fd545a75c5dd1a7c2aaec4'
+ 'cc16ed13449f17e90865df688b180b2c')
+md5sums=('1431f7ed5f8e92e752d330bbb3aed333'
+ '0a03d613b1fd545a75c5dd1a7c2aaec4'
+ 'cc16ed13449f17e90865df688b180b2c'
+ '2499a87276ae0c8ce39bea6ef942d926')
diff --git a/abs/not_built/core/ndiswrapper/kernel-2.6.35.patch b/abs/not_built/core/ndiswrapper/kernel-2.6.35.patch
new file mode 100644
index 0000000..1cfdab2
--- /dev/null
+++ b/abs/not_built/core/ndiswrapper/kernel-2.6.35.patch
@@ -0,0 +1,98 @@
+diff -uNr ndiswrapper-1.56.old/driver/usb.c ndiswrapper-1.56/driver/usb.c
+--- ndiswrapper-1.56.old/driver/usb.c 2010-02-10 18:09:32.000000000 -0800
++++ ndiswrapper-1.56/driver/usb.c 2010-07-25 02:29:25.442145846 -0700
+@@ -191,9 +191,15 @@
+ if (wrap_urb->flags & WRAP_URB_COPY_BUFFER) {
+ USBTRACE("freeing DMA buffer for URB: %p %p",
+ urb, urb->transfer_buffer);
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35)
+ usb_buffer_free(IRP_WRAP_DEVICE(irp)->usb.udev,
++ urb->transfer_buffer_length,
++ urb->transfer_buffer, urb->transfer_dma);
++#else
++ usb_free_coherent(IRP_WRAP_DEVICE(irp)->usb.udev,
+ urb->transfer_buffer_length,
+ urb->transfer_buffer, urb->transfer_dma);
++#endif
+ }
+ if (urb->setup_packet)
+ kfree(urb->setup_packet);
+@@ -303,9 +309,16 @@
+ || PageHighMem(virt_to_page(buf))
+ #endif
+ )) {
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35)
+ urb->transfer_buffer =
+- usb_buffer_alloc(wd->usb.udev, buf_len, alloc_flags,
++ usb_buffer_alloc(wd->usb.udev, buf_len, alloc_flags,
++ &urb->transfer_dma);
++#else
++ urb->transfer_buffer =
++ usb_alloc_coherent(wd->usb.udev, buf_len, alloc_flags,
+ &urb->transfer_dma);
++#endif
+ if (!urb->transfer_buffer) {
+ WARNING("couldn't allocate dma buf");
+ IoAcquireCancelSpinLock(&irp->cancel_irql);
+diff -uNr ndiswrapper-1.56.old/driver/wrapndis.c ndiswrapper-1.56/driver/wrapndis.c
+--- ndiswrapper-1.56.old/driver/wrapndis.c 2010-02-10 18:09:32.000000000 -0800
++++ ndiswrapper-1.56/driver/wrapndis.c 2010-07-25 02:06:13.184631757 -0700
+@@ -936,6 +936,10 @@
+ EXIT2(return);
+ }
+
++#ifndef netdev_mc_count
++#define netdev_mc_count(net_dev) net_dev->mc_count
++#endif
++
+ static void set_multicast_list(struct ndis_device *wnd)
+ {
+ struct net_device *net_dev;
+@@ -950,20 +954,26 @@
+ packet_filter |= NDIS_PACKET_TYPE_PROMISCUOUS |
+ NDIS_PACKET_TYPE_ALL_LOCAL;
+ } else if (net_dev->flags & IFF_ALLMULTI ||
+- net_dev->mc_count > wnd->multicast_size) {
++ netdev_mc_count(net_dev) > wnd->multicast_size) {
+ packet_filter |= NDIS_PACKET_TYPE_ALL_MULTICAST;
+ TRACE2("0x%08x", packet_filter);
+- } else if (net_dev->mc_count > 0) {
++ } else if (netdev_mc_count(net_dev) > 0) {
+ int i, size;
+ char *buf;
++#ifndef netdev_for_each_mc_addr
+ struct dev_mc_list *mclist;
+- size = min(wnd->multicast_size, net_dev->mc_count);
+- TRACE2("%d, %d", wnd->multicast_size, net_dev->mc_count);
++#else
++ struct netdev_hw_addr *mclist;
++#endif
++
++ size = min(wnd->multicast_size, netdev_mc_count(net_dev));
++ TRACE2("%d, %d", wnd->multicast_size, netdev_mc_count(net_dev));
+ buf = kmalloc(size * ETH_ALEN, GFP_KERNEL);
+ if (!buf) {
+ WARNING("couldn't allocate memory");
+ EXIT2(return);
+ }
++#ifndef netdev_for_each_mc_addr
+ mclist = net_dev->mc_list;
+ for (i = 0; i < size && mclist; mclist = mclist->next) {
+ if (mclist->dmi_addrlen != ETH_ALEN)
+@@ -972,6 +982,15 @@
+ TRACE2(MACSTRSEP, MAC2STR(mclist->dmi_addr));
+ i++;
+ }
++#else
++ i = 0;
++ netdev_for_each_mc_addr(mclist, net_dev){
++ memcpy(buf + i++ * ETH_ALEN,
++ mclist->addr, ETH_ALEN);
++ TRACE2(MACSTRSEP, MAC2STR(mclist->addr));
++
++ }
++#endif
+ res = mp_set(wnd, OID_802_3_MULTICAST_LIST, buf, i * ETH_ALEN);
+ if (res == NDIS_STATUS_SUCCESS && i > 0)
+ packet_filter |= NDIS_PACKET_TYPE_MULTICAST;
diff --git a/abs/not_built/core/ndiswrapper/kernel-2.6.36.patch b/abs/not_built/core/ndiswrapper/kernel-2.6.36.patch
new file mode 100644
index 0000000..63de303
--- /dev/null
+++ b/abs/not_built/core/ndiswrapper/kernel-2.6.36.patch
@@ -0,0 +1,27 @@
+--- ndiswrapper-1.56.orig/driver/loader.c 2010-02-11 03:09:32.000000000 +0100
++++ ndiswrapper-1.56/driver/loader.c 2010-10-24 01:38:13.000000000 +0200
+@@ -750,13 +750,13 @@
+ }
+
+ /* called with loader_mutex is down */
+-static int wrapper_ioctl(struct inode *inode, struct file *file,
++static long wrapper_unlocked_ioctl(struct file *file,
+ unsigned int cmd, unsigned long arg)
+ {
+ struct load_driver *load_driver;
+ struct load_device load_device;
+ struct load_driver_file load_bin_file;
+- int ret;
++ long ret;
+ void __user *addr = (void __user *)arg;
+
+ ENTER1("cmd: %u", cmd);
+@@ -831,7 +831,7 @@
+
+ static struct file_operations wrapper_fops = {
+ .owner = THIS_MODULE,
+- .ioctl = wrapper_ioctl,
++ .unlocked_ioctl = wrapper_unlocked_ioctl,
+ .release = wrapper_ioctl_release,
+ };
+
diff --git a/abs/not_built/core/ndiswrapper/ndiswrapper.install b/abs/not_built/core/ndiswrapper/ndiswrapper.install
new file mode 100644
index 0000000..a45a459
--- /dev/null
+++ b/abs/not_built/core/ndiswrapper/ndiswrapper.install
@@ -0,0 +1,23 @@
+# arg 1: the new package version
+post_install()
+{
+ ndiswrapper -m
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod -ae $KERNEL_VERSION > /dev/null 2>&1
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade()
+{
+ ndiswrapper -m
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod -ae $KERNEL_VERSION > /dev/null 2>&1
+}
+
+# arg 1: the old package version
+post_remove()
+{
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod -ae $KERNEL_VERSION > /dev/null 2>&1
+}
diff --git a/abs/not_built/core/ndiswrapper/ndiswrapper_kernel-2.6.38.patch b/abs/not_built/core/ndiswrapper/ndiswrapper_kernel-2.6.38.patch
new file mode 100644
index 0000000..15c4f42
--- /dev/null
+++ b/abs/not_built/core/ndiswrapper/ndiswrapper_kernel-2.6.38.patch
@@ -0,0 +1,24 @@
+--- ndiswrapper-1.56.old/driver/wrapndis.c (revision 2728)
++++ ndiswrapper-1.56/driver/wrapndis.c (revision 2729)
+@@ -13,16 +13,16 @@
+ *
+ */
+
++#include <linux/inetdevice.h>
++#include <linux/ip.h>
++#include <linux/tcp.h>
++#include <linux/udp.h>
++#include <linux/in.h>
+ #include "ndis.h"
+ #include "iw_ndis.h"
+ #include "pnp.h"
+ #include "loader.h"
+ #include "wrapndis.h"
+-#include <linux/inetdevice.h>
+-#include <linux/ip.h>
+-#include <linux/tcp.h>
+-#include <linux/udp.h>
+-#include <linux/in.h>
+ #include "wrapper.h"
+
+ /* Functions callable from the NDIS driver */
diff --git a/abs/not_built/core/netcfg/PKGBUILD b/abs/not_built/core/netcfg/PKGBUILD
new file mode 100644
index 0000000..7e7ea7b
--- /dev/null
+++ b/abs/not_built/core/netcfg/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 126281 2011-06-04 04:21:49Z eric $
+# Maintainer: James Rayner <james@archlinux.org>
+
+pkgname=netcfg
+pkgver=2.5.5
+pkgrel=1
+pkgdesc="Network configuration and profile scripts"
+url="http://archlinux.org"
+license=("BSD")
+backup=(etc/iftab)
+depends=(wireless_tools coreutils "wpa_supplicant>=0.6.8" net-tools "dhcpcd>=4.0" "iproute2")
+optdepends=('dialog: Required for menu based profile selector'
+ 'wpa_actiond: Required for automatic wireless connection with rc.d/net-auto-wireless'
+ 'ifplugd: Required for automatic wired connection with rc.d/net-auto-wired')
+source=(ftp://ftp.archlinux.org/other/netcfg/netcfg-${pkgver}.tar.gz)
+arch=(any)
+md5sums=('6e98bae291eb206d92f9a92bbab8fe80')
+
+package() {
+ cd "$srcdir/netcfg-${pkgver}"
+
+ make DESTDIR="$pkgdir" install
+ install -D -m644 LICENSE "$pkgdir/usr/share/licenses/netcfg/LICENSE"
+ ln -s /usr/lib/network/connections/wireless "$pkgdir/usr/lib/network/connections/wireless-dbus"
+ ln -s /usr/bin/netcfg2 "$pkgdir/usr/bin/netcfg"
+}
+
diff --git a/abs/not_built/core/netkit-telnet-ssl/PKGBUILD b/abs/not_built/core/netkit-telnet-ssl/PKGBUILD
new file mode 100644
index 0000000..37fb577
--- /dev/null
+++ b/abs/not_built/core/netkit-telnet-ssl/PKGBUILD
@@ -0,0 +1,33 @@
+# Maintainer: <alexandre.becoulet@free.fr>
+# Contributor: <netbug@ftp.uk.linux.org>
+# Contributor: Fluke <fluke.l at gmail.com>
+pkgname=netkit-telnet-ssl
+pkgver=0.17.24+0.1
+pkgrel=2
+pkgdesc="telnet client and server with ssl enabled"
+arch=('i686' 'x86_64')
+license=('BSD')
+url=("http://www.hcs.harvard.edu/~dholland/computers/netkit.html")
+source=(http://ftp.de.debian.org/debian/pool/main/n/${pkgname}/${pkgname}_${pkgver}.orig.tar.gz
+ netkit-telnet-ssl-0.17.24+0.1_arch.diff
+ telnet.xinetd)
+depends=('glibc' 'openssl' 'ncurses')
+replaces=('netkit-telnet')
+md5sums=('43a402139ed6b86434fdb83256feaad8'
+ 'd51bf898269a79a2de77d1134516c209'
+ 'ca38af6f1346ae90b2cb1e160858b453')
+install=netkit-telnet-ssl.install
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}.orig
+ patch -p1 < ../netkit-telnet-ssl-0.17.24+0.1_arch.diff
+ ./configure --prefix=/usr --installroot=${pkgdir}
+ make || return 1
+}
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}.orig
+ mkdir -p ${pkgdir}/usr/{bin,sbin,man/man1,man/man5,man/man8} ${pkgdir}/etc/xinetd.d
+
+ make install || return 1
+ install -m644 ${srcdir}/telnet.xinetd ${pkgdir}/etc/xinetd.d/telnet-ssl
+}
diff --git a/abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl-0.17.24+0.1_arch.diff b/abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl-0.17.24+0.1_arch.diff
new file mode 100644
index 0000000..17b3c3c
--- /dev/null
+++ b/abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl-0.17.24+0.1_arch.diff
@@ -0,0 +1,2591 @@
+Only in netkit-telnet-ssl-0.17.24+0.1: debian
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/auth.c netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/auth.c
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/auth.c 2004-05-27 11:47:25.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/auth.c 2010-05-11 13:44:40.190322666 +0200
+@@ -37,6 +37,9 @@
+ */
+
+ #ifndef lint
++#ifdef __GNUC__
++__attribute__ ((unused))
++#endif /* __GNUC__ */
+ static char sccsid[] = "@(#)auth.c 5.2 (Berkeley) 3/22/91";
+ #endif /* not lint */
+
+@@ -83,8 +86,11 @@
+
+ #define typemask(x) (1<<((x)-1))
+
++int auth_onoff(const char *type, int on);
++
++
+ int auth_debug_mode = 0;
+-static char *Name = "Noname";
++static const char *Name = "Noname";
+ static int Server = 0;
+ static Authenticator *authenticated = 0;
+ static int authenticating = 0;
+@@ -170,7 +176,7 @@
+
+ void
+ auth_init(name, server)
+- char *name;
++ const char *name;
+ int server;
+ {
+ Authenticator *ap = authenticators;
+@@ -241,7 +247,7 @@
+
+ int
+ auth_onoff(type, on)
+- char *type;
++ const char *type;
+ int on;
+ {
+ int i, mask = -1;
+@@ -335,7 +341,7 @@
+ }
+ *e++ = IAC;
+ *e++ = SE;
+- writenet(str_request, e - str_request);
++ writenet((char *) str_request, e - str_request);
+ printsub('>', &str_request[2], e - str_request - 2);
+ }
+ }
+@@ -424,7 +430,7 @@
+ }
+ auth_send_data += 2;
+ }
+- writenet(str_none, sizeof(str_none));
++ writenet((char *) str_none, sizeof(str_none));
+ printsub('>', &str_none[2], sizeof(str_none) - 2);
+ if (auth_debug_mode)
+ printf(">>>%s: Sent failure message\r\n", Name);
+@@ -456,7 +462,7 @@
+ return;
+ }
+
+- if (ap = findauthenticator(data[0], data[1])) {
++ if ((ap = findauthenticator(data[0], data[1]))) {
+ if (ap->is)
+ (*ap->is)(ap, data+2, cnt-2);
+ } else if (auth_debug_mode)
+@@ -474,7 +480,7 @@
+ if (cnt < 2)
+ return;
+
+- if (ap = findauthenticator(data[0], data[1])) {
++ if ((ap = findauthenticator(data[0], data[1]))) {
+ if (ap->reply)
+ (*ap->reply)(ap, data+2, cnt-2);
+ } else if (auth_debug_mode)
+@@ -487,7 +493,7 @@
+ unsigned char *data;
+ int cnt;
+ {
+- Authenticator *ap;
++ /* Authenticator *ap; */
+ unsigned char savename[256];
+
+ if (cnt < 1) {
+@@ -505,7 +511,7 @@
+ savename[cnt] = '\0'; /* Null terminate */
+ if (auth_debug_mode)
+ printf(">>>%s: Got NAME [%s]\r\n", Name, savename);
+- auth_encrypt_user(savename);
++ auth_encrypt_user((char *)savename);
+ }
+
+ int
+@@ -526,7 +532,7 @@
+ }
+ *e++ = IAC;
+ *e++ = SE;
+- writenet(str_request, e - str_request);
++ writenet((char *) str_request, e - str_request);
+ printsub('>', &str_request[2], e - &str_request[2]);
+ return(1);
+ }
+@@ -542,6 +548,9 @@
+ }
+
+ /* ARGSUSED */
++#ifdef __GNUC__
++__attribute__ ((used))
++#endif /* __GNUC__ */
+ static void
+ auth_intr(sig)
+ int sig;
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/auth-proto.h netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/auth-proto.h
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/auth-proto.h 2004-05-27 11:47:25.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/auth-proto.h 2010-05-11 13:44:40.183654321 +0200
+@@ -68,7 +68,7 @@
+ #if defined(AUTHENTICATE)
+ Authenticator *findauthenticator P((int, int));
+
+-void auth_init P((char *, int));
++void auth_init P((const char *, int));
+ int auth_cmd P((int, char **));
+ void auth_request P((void));
+ void auth_send P((unsigned char *, int));
+@@ -123,7 +123,9 @@
+ int auth_ssl_status P((Authenticator *, char *, int));
+ void auth_ssl_printsub P((unsigned char *, int, unsigned char *, int));
+ #endif /* USE_SSL */
+-
++
++extern void printsub P((char, unsigned char *, int));
++extern int writenet P((char *, int));
+ #endif
+ #ifdef __cplusplus
+ }
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/Makefile netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/Makefile
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/Makefile 2004-05-27 11:47:25.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/Makefile 2010-05-11 13:45:28.073664102 +0200
+@@ -15,5 +15,8 @@
+ ranlib lib${LIB}.a; \
+ fi;
+
++install:
++ @echo "nothing to be installed from libtelnet"
++
+ clean:
+ rm -f *.o lib${LIB}.a
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/misc.c netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/misc.c
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/misc.c 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/misc.c 2010-05-11 13:44:40.190322666 +0200
+@@ -32,6 +32,9 @@
+ */
+
+ #ifndef lint
++#ifdef __GNUC__
++__attribute__ ((unused))
++#endif /* __GNUC__ */
+ static char sccsid[] = "@(#)misc.c 5.1 (Berkeley) 2/28/91";
+ #endif /* not lint */
+
+@@ -54,7 +57,12 @@
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
++#include <stdio.h>
++#include <stdlib.h>
++
+ #include "misc.h"
++#include "auth.h"
++#include "auth-proto.h"
+
+ char *RemoteHostName;
+ char *LocalHostName;
+@@ -65,7 +73,7 @@
+ auth_encrypt_init(local, remote, name, server)
+ char *local;
+ char *remote;
+- char *name;
++ const char *name;
+ int server;
+ {
+ RemoteHostName = remote;
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/misc-proto.h netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/misc-proto.h
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/misc-proto.h 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/misc-proto.h 2010-05-11 13:44:40.190322666 +0200
+@@ -68,7 +68,7 @@
+ extern "C" {
+ #endif
+
+-void auth_encrypt_init P((char *, char *, char *, int));
++void auth_encrypt_init P((char *, char *, const char *, int));
+ void auth_encrypt_connect P((int));
+ void auth_encrypt_user P((const char *name));
+ void printd P((unsigned char *, int));
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/sslapp.h netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/sslapp.h
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/sslapp.h 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/sslapp.h 2010-05-11 13:44:40.200330208 +0200
+@@ -45,6 +45,7 @@
+ #include "x509.h"
+ #include "ssl.h"
+ #define OLDPROTO NOPROTO
++#undef NOPROTO
+ #define NOPROTO
+ #include "err.h"
+ #undef NOPROTO
+@@ -72,7 +73,7 @@
+ /* we hide all the initialisation code in a separate file now */
+ extern int do_ssleay_init(int server);
+
+-extern int display_connect_details(SSL *ssl_con, int verbose);
++extern void display_connect_details(SSL *ssl_con, int verbose);
+ extern int server_verify_callback();
+ extern int client_verify_callback();
+
+diff -ur netkit-telnet-ssl-0.17.24+0.1/libtelnet/ssl.c netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/ssl.c
+--- netkit-telnet-ssl-0.17.24+0.1/libtelnet/ssl.c 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/libtelnet/ssl.c 2010-05-11 13:44:40.200330208 +0200
+@@ -47,6 +47,9 @@
+ #include <string.h>
+ #endif
+
++#include <unistd.h>
++#include <openssl/err.h>
++
+ #include "auth.h"
+ #include "misc.h"
+
+@@ -91,11 +94,12 @@
+ #define VERIFY_ROOT_OK VERIFY_OK
+ #endif
+
++extern int netflush(void);
++
+ extern int auth_debug_mode;
+-static auth_ssl_valid = 0;
++static int auth_ssl_valid = 0;
+ static char *auth_ssl_name = 0; /* this holds the oneline name */
+
+-extern BIO *bio_err;
+ extern int ssl_only_flag;
+ extern int ssl_debug_flag;
+ extern int ssl_active_flag;
+@@ -120,6 +124,9 @@
+
+ BIO *bio_err=NULL;
+
++int auth_failed=0;
++
++
+ /* compile this set to 1 to negotiate SSL but not actually start it */
+ static int ssl_dummy_flag=0;
+
+@@ -135,7 +142,7 @@
+ * telnet connect if we are talking straight ssl with no telnet
+ * protocol --tjh
+ */
+-int
++void
+ display_connect_details(ssl_con,verbose)
+ SSL *ssl_con;
+ int verbose;
+@@ -152,7 +159,7 @@
+ /* grab the full list of ciphers */
+ i=0;
+ buf[0]='\0';
+- while((p=SSL_get_cipher_list(ssl_con,i++))!=NULL) {
++ while((p=(char *)SSL_get_cipher_list(ssl_con,i++))!=NULL) {
+ if (i>0)
+ strcat(buf,":");
+ strcat(buf,p);
+@@ -230,7 +237,7 @@
+ *p++ = SE;
+ if (str_data[3] == TELQUAL_IS)
+ printsub('>', &str_data[2], p - (&str_data[2]));
+- return(writenet(str_data, p - str_data));
++ return(writenet((char *) str_data, p - str_data));
+ }
+
+ int auth_ssl_init(ap, server)
+@@ -280,7 +287,7 @@
+ unsigned char *data;
+ int cnt;
+ {
+- int valid;
++ /* int valid; */
+
+ if (cnt-- < 1)
+ return;
+@@ -364,7 +371,7 @@
+ unsigned char *data;
+ int cnt;
+ {
+- int i;
++ /* int i; */
+ int status;
+
+ if (cnt-- < 1)
+@@ -389,16 +396,13 @@
+ SSL_set_verify(ssl_con,ssl_verify_flag,
+ client_verify_callback);
+ if ((status = SSL_connect(ssl_con)) <= 0) {
+- fprintf(stderr,"[SSL - FAILED (%d)]\r\n", status);
+- fflush(stderr);
+-
+- perror("telnet: Unable to ssl_connect to remote host");
++ auth_finished(0,AUTH_REJECT);
+
++ fprintf(stderr,"[SSL - FAILED (%d)]\r\n", status);
++ fprintf(stderr,"telnet: Unable to ssl_connect to remote host\n");
+ ERR_print_errors(bio_err);
+-
+- /* don't know what I "should" be doing here ... */
+-
+- auth_finished(0,AUTH_REJECT);
++ fflush(stderr);
++ auth_failed=1;
+ return;
+ } else {
+
+@@ -452,7 +456,7 @@
+ */
+ if (ssl_certsok_flag) {
+ user_fp = fopen("/etc/ssl.users", "r");
+- if (!auth_ssl_name || !user_fp) {
++ if (!auth_ssl_name || !user_fp || !UserNameRequested) {
+ /* If we haven't received a certificate, then don't
+ * return AUTH_VALID.
+ */
+@@ -486,7 +490,7 @@
+ cp = strchr(n, ',');
+ if (cp)
+ *cp++ = '\0';
+- if (!UserNameRequested ||
++ if (UserNameRequested &&
+ !strcmp(UserNameRequested, n)) {
+ strcpy(name, n);
+ fclose(user_fp);
+@@ -543,7 +547,7 @@
+ default:
+ sprintf(lbuf, " %d (unknown)", data[3]);
+ strncpy((char *)buf, lbuf, buflen);
+- common2:
++/* common2: */
+ BUMP(buf, buflen);
+ for (i = 4; i < cnt; i++) {
+ sprintf(lbuf, " %d", data[i]);
+@@ -568,7 +572,7 @@
+ #endif /* SSLEAY8 */
+ {
+ static char *saved_subject=NULL;
+- X509 *peer;
++ /* X509 *peer; */
+ char *subject, *issuer;
+ #ifdef SSLEAY8
+ int depth,error;
+@@ -715,8 +719,8 @@
+ int depth, error;
+ #endif /* SSLEAY8 */
+ {
+- X509 *peer;
+- char *subject, *issuer;
++ /* X509 *peer; */
++ char *subject, *issuer, *cnsubj;
+ #ifdef SSLEAY8
+ int depth,error;
+ char *xs;
+@@ -727,13 +731,13 @@
+
+ #endif /* SSLEAY8 */
+
+-#ifdef LOCAL_DEBUG
+- fprintf(stderr,"ssl:client_verify_callback:depth=%d ok=%d err=%d-%s\n",
+- depth,ok,error,X509_cert_verify_error_string(error));
+- fflush(stderr);
+-#endif /* LOCAL_DEBUG */
++ if(ssl_debug_flag && !ok) {
++ fprintf(stderr,"ssl:client_verify_callback:depth=%d ok=%d err=%d-%s\n",
++ depth,ok,error,X509_verify_cert_error_string(error));
++ fflush(stderr);
++ }
+
+- subject=issuer=NULL;
++ subject=issuer=cnsubj=NULL;
+
+ /* first thing is to have a meaningful name for the current
+ * certificate that is being verified ... and if we cannot
+@@ -761,60 +765,77 @@
+ fflush(stderr);
+ }
+
+- /* if the server is using a self signed certificate then
+- * we need to decide if that is good enough for us to
+- * accept ...
+- */
+- if (error==VERIFY_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) {
+- if (ssl_cert_required) {
+- /* make 100% sure that in secure more we drop the
+- * connection if the server does not have a
+- * real certificate!
+- */
+- fprintf(stderr,"SSL: rejecting connection - server has a self-signed certificate\n");
+- fflush(stderr);
+-
+- /* sometimes it is really handy to be able to debug things
+- * and still get a connection!
+- */
+- if (ssl_debug_flag) {
+- fprintf(stderr,"SSL: debug -> ignoring cert required!\n");
+- fflush(stderr);
+- ok=1;
+- } else {
+- ok=0;
+- }
+- goto return_time;
+- } else {
+- ok=1;
+- goto return_time;
+- }
++ /* verify commonName matches hostname */
++ if(ssl_cert_required && depth == 0) {
++ char *cn,*p;
++
++ cnsubj=strdup(subject);
++ if(cnsubj == NULL) {
++ fprintf(stderr,"SSL: Out of memory.\n");
++ ok=0;
++ goto return_time;
++ }
++ cn=strstr(cnsubj,"/CN=");
++ if(cn == NULL) {
++ fprintf(stderr,"SSL: Cannot extract CN from certificate subject.\n");
++ ok=0;
++ goto return_time;
++ }
++ cn+=4; /* skip /CN= */
++ p=strchr(cn,'/');
++ if(p != NULL) {
++ *p='\0';
++ }
++ if(strcasecmp(cn,RemoteHostName) != 0) {
++ fprintf(stderr,"SSL: Certificate CN (%s) does not match hostname (%s)\n",
++ cn,RemoteHostName);
++ ok=0;
++ goto return_time;
++ }
+ }
+
+- /* if we have any form of error in secure mode we reject the connection */
+- if (! ((error==VERIFY_OK)||(error==VERIFY_ROOT_OK)) ) {
+- if (ssl_cert_required) {
+- fprintf(stderr,"SSL: rejecting connection - ");
+- if (error==VERIFY_ERR_UNABLE_TO_GET_ISSUER) {
+- fprintf(stderr,"unknown issuer: %s\n",issuer);
+- } else {
+- ERR_print_errors(bio_err);
+- }
+- fflush(stderr);
+- ok=0;
+- goto return_time;
+- } else {
+- /* be nice and display a lot more meaningful stuff
+- * so that we know which issuer is unknown no matter
+- * what the callers options are ...
+- */
+- if (error==VERIFY_ERR_UNABLE_TO_GET_ISSUER) {
+- fprintf(stderr,"SSL: unknown issuer: %s\n",issuer);
+- fflush(stderr);
+- }
+- }
++ if((error==VERIFY_OK) || (error==VERIFY_ROOT_OK)) {
++ goto return_time;
+ }
+
++ switch(error) {
++ case VERIFY_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
++ fprintf(stderr,"SSL: Server has a self-signed certificate\n");
++ case VERIFY_ERR_UNABLE_TO_GET_ISSUER:
++ fprintf(stderr,"SSL: unknown issuer: %s\n",issuer);
++ break;
++ case X509_V_ERR_CERT_NOT_YET_VALID:
++ fprintf(stderr,"SSL: Certificate not yet valid\n");
++ BIO_printf(bio_err,"notBefore=");
++ ASN1_TIME_print(bio_err,X509_get_notBefore(ctx->current_cert));
++ BIO_printf(bio_err,"\n");
++ break;
++ case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
++ fprintf(stderr,"SSL: Error in certificate notBefore field\n");
++ BIO_printf(bio_err,"notBefore=");
++ ASN1_TIME_print(bio_err,X509_get_notBefore(ctx->current_cert));
++ BIO_printf(bio_err,"\n");
++ break;
++ case X509_V_ERR_CERT_HAS_EXPIRED:
++ fprintf(stderr,"SSL: Certificate has expired\n");
++ BIO_printf(bio_err,"notAfter=");
++ ASN1_TIME_print(bio_err,X509_get_notAfter(ctx->current_cert));
++ BIO_printf(bio_err,"\n");
++ break;
++ case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
++ fprintf(stderr,"SSL: Error in certificate notAfter field\n");
++ BIO_printf(bio_err,"notAfter=");
++ ASN1_TIME_print(bio_err,X509_get_notAfter(ctx->current_cert));
++ BIO_printf(bio_err,"\n");
++ break;
++ default:
++ fprintf(stderr,"SSL: %s (%d)\n", X509_verify_cert_error_string(error),error);
++ break;
++ }
++
++ /* If we are here there was an error */
++ ok=0;
++
+ return_time: ;
+
+ /* clean up things */
+@@ -822,7 +843,20 @@
+ free(subject);
+ if (issuer!=NULL)
+ free(issuer);
+-
++ if (cnsubj!=NULL)
++ free(cnsubj);
++ if(!ok && ssl_cert_required) {
++ if(ssl_debug_flag) {
++ fprintf(stderr,"SSL: debug -> ignoring cert required!\n");
++ ok=1;
++ }
++ else {
++ fprintf(stderr,"SSL: Rejecting connection\n");
++ ok=0;
++ }
++ }
++ fflush(stderr);
++
+ return ok;
+ }
+
+diff -ur netkit-telnet-ssl-0.17.24+0.1/Makefile netkit-telnet-ssl-0.17.24+0.1.orig/Makefile
+--- netkit-telnet-ssl-0.17.24+0.1/Makefile 2004-05-27 11:47:25.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/Makefile 2010-05-11 14:19:36.673445641 +0200
+@@ -1,7 +1,7 @@
+ # You can do "make SUB=blah" to make only a few, or edit here, or both
+ # You can also run make directly in the subdirs you want.
+
+-SUB = telnet telnetd telnetlogin
++SUB = libtelnet telnet telnetd
+
+ %.build:
+ (cd $(patsubst %.build, %, $@) && $(MAKE))
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/authenc.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/authenc.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/authenc.cc 2000-07-23 05:24:53.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/authenc.cc 2010-05-11 13:44:40.056990450 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)authenc.c 5.1 (Berkeley) 3/1/91
+ */
+ char au_rcsid[] =
+- "$Id: authenc.cc,v 1.6 2000/07/23 03:24:53 dholland Exp $";
++ "$Id: authenc.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #if defined(ENCRYPT) || defined(AUTHENTICATE)
+ #include <sys/types.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/commands.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/commands.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/commands.cc 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/commands.cc 2010-05-11 13:44:40.060322107 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)commands.c 5.5 (Berkeley) 3/22/91
+ */
+ char cmd_rcsid[] =
+- "$Id: commands.cc,v 1.34 2000/07/23 04:16:24 dholland Exp $";
++ "$Id: commands.cc,v 1.13 2007-10-04 21:38:18 ianb Exp $";
+
+ #include <string.h>
+
+@@ -653,6 +653,21 @@
+ return 1;
+ }
+
++#ifdef AUTHENTICATE
++
++static int tog_autologin(int) {
++ if(autologin == 0) {
++ autologin=1;
++ env_export("USER");
++ }
++ else {
++ autologin=0;
++ env_unexport("USER");
++ }
++ return 1;
++}
++
++#endif /* AUTHENTICATE */
+
+ static int netdata; /* Print out network data flow */
+ static int prettydump; /* Print "netdata" output in user readable format */
+@@ -682,13 +697,13 @@
+
+ #if defined(AUTHENTICATE)
+ { "autologin", "automatic sending of login and/or authentication info",
+- NULL, &autologin,
++ tog_autologin, NULL,
+ "send login name and/or authentication information" },
+ { "authdebug", "Toggle authentication debugging",
+ auth_togdebug, NULL,
+ "print authentication debugging information" },
+ #endif
+-#if 0
++#ifdef ENCRYPT
+ { "autoencrypt", "automatic encryption of data stream",
+ EncryptAutoEnc, NULL,
+ "automatically encrypt output" },
+@@ -701,7 +716,7 @@
+ { "encdebug", "Toggle encryption debugging",
+ EncryptDebug, NULL,
+ "print encryption debugging information" },
+-#endif
++#endif /* ENCRYPT */
+
+ { "skiprc", "don't read the telnetrc files",
+ NULL, &skiprc,
+@@ -750,7 +765,7 @@
+ NULL, &showoptions,
+ "show option processing" },
+
+- { "termdata", "(debugging) toggle printing of hexadecimal terminal data",
++ { "termdata", "toggle printing of hexadecimal terminal data (debugging)",
+ NULL, &termdata,
+ "print hexadecimal representation of terminal traffic" },
+
+@@ -1357,9 +1372,9 @@
+ else
+ shellname++;
+ if (argc > 1)
+- execl(shellp, shellname, "-c", &saveline[1], 0);
++ execl(shellp, shellname, "-c", &saveline[1], (char *) NULL);
+ else
+- execl(shellp, shellname, 0);
++ execl(shellp, shellname, (char *) NULL);
+ perror("Execl");
+ _exit(1);
+ }
+@@ -1510,10 +1525,10 @@
+
+ #if defined(AUTHENTICATE)
+ struct authlist {
+- char *name;
+- char *help;
+- int (*handler)(const char *, const char *);
+- int narg;
++ const char *name;
++ const char *help;
++ int (*handler)(const char *, const char *);
++ int narg;
+ };
+
+ static int auth_help (const char *, const char *);
+@@ -1833,8 +1848,22 @@
+ if (*portp == '-') {
+ portp++;
+ telnetport = 1;
+- } else
++ } else {
+ telnetport = 0;
++ if (*portp >='0' && *portp<='9') {
++ char *end;
++ long int p;
++
++ p=strtol(portp, &end, 10);
++ if (ERANGE==errno && (LONG_MIN==p || LONG_MAX==p)) {
++ fprintf(stderr, "telnet: port %s overflows\n", portp);
++ return 0;
++ } else if (p<=0 || p>=65536) {
++ fprintf(stderr, "telnet: port %s out of range\n", portp);
++ return 0;
++ }
++ }
++ }
+ }
+ else {
+ portp = "telnet";
+@@ -1860,7 +1889,7 @@
+ if (res < 0)
+ return 0;
+ }
+-
++
+ /* Resolve both the host and service simultaneously. */
+ res = getaddrinfo(resolv_hostp, portp, &hints, &hostaddr);
+ if (res == EAI_NONAME) {
+@@ -1902,6 +1931,16 @@
+ NI_NUMERICHOST | NI_NUMERICSERV);
+
+ printf("Trying %s...\n", name);
++
++ if (tmpaddr->ai_canonname == 0) {
++ hostname = new char[strlen(hostp)+1];
++ strcpy(hostname, hostp);
++ }
++ else {
++ hostname = new char[strlen(tmpaddr->ai_canonname)+1];
++ strcpy(hostname, tmpaddr->ai_canonname);
++ }
++
+ x = nlink.connect(debug, tmpaddr, srp, srlen, tos);
+ if (!x)
+ goto err;
+@@ -1909,18 +1948,18 @@
+ goto nextaddr;
+
+ connected++;
++
++#ifdef USE_SSL
++ if (ssl_secure_flag || (strcmp(hostp, "localhost") != 0)) {
++ /* autologin = 1; */
++ use_authentication=1;
++ }
++#endif /* USE_SSL */
++
+ #if defined(AUTHENTICATE)
+ auth_encrypt_connect(connected);
+ #endif
+ } while (connected == 0);
+- if (tmpaddr->ai_canonname == 0) {
+- hostname = new char[strlen(hostp)+1];
+- strcpy(hostname, hostp);
+- }
+- else {
+- hostname = new char[strlen(tmpaddr->ai_canonname)+1];
+- strcpy(hostname, tmpaddr->ai_canonname);
+- }
+
+ cmdrc(hostp, hostname, portp);
+ freeaddrinfo(hostaddr);
+@@ -1966,6 +2005,9 @@
+ #if defined(AUTHENTICATE)
+ authhelp[] = "turn on (off) authentication ('auth ?' for more)",
+ #endif
++#if defined(USE_SSL)
++ startsslhelp[] = "switch to telnet-over-ssl (use 'auth' for ssl-over-telnet)",
++#endif
+ zhelp[] = "suspend telnet",
+ /* shellhelp[] = "invoke a subshell", */
+ envhelp[] = "change environment variables ('environ ?' for more)",
+@@ -1981,6 +2023,34 @@
+ return 0;
+ }
+
++#if defined(USE_SSL)
++static int startssl_cmd(void)
++{
++ if(ssl_con == NULL)
++ {
++ fprintf(stderr,"telnet: Internal error - ssl_con not initialised.\n");
++ return 1;
++ }
++
++ if(ssl_active_flag)
++ {
++ fprintf(stderr,"telnet: SSL already in use.\n");
++ return 1;
++ }
++
++ if (SSL_connect(ssl_con) < 1)
++ {
++ ERR_print_errors_fp(stderr);
++ fflush(stderr);
++ } else {
++ display_connect_details(ssl_con,ssl_debug_flag);
++ ssl_active_flag=1;
++ ssl_only_flag=1;
++ }
++ return 1;
++}
++#endif /* USE_SSL */
++
+ static int slc_mode_import_0(void) {
+ slc_mode_import(0);
+ return 1;
+@@ -2028,6 +2098,10 @@
+ #endif
+ // BIND("encrypt", encrypthelp, encrypt_cmd);
+
++#if defined(USE_SSL)
++ BIND("startssl", startsslhelp, startssl_cmd);
++#endif
++
+ BIND("z", zhelp, suspend);
+
+ #if defined(TN3270) /* why?! */
+@@ -2233,22 +2307,18 @@
+ }
+
+ void cmdrc(const char *m1, const char *m2, const char *port) {
+- static char *rcname = 0;
+- static char rcbuf[128];
++ char *rcname = NULL;
+
+ if (skiprc) return;
+
+ readrc(m1, m2, port, "/etc/telnetrc");
+- if (rcname == 0) {
+- rcname = getenv("HOME");
+- if (rcname)
+- strcpy(rcbuf, rcname);
+- else
+- rcbuf[0] = '\0';
+- strcat(rcbuf, "/.telnetrc");
+- rcname = rcbuf;
+- }
++ if (asprintf (&rcname, "%s/.telnetrc", getenv ("HOME")) == -1)
++ {
++ perror ("asprintf");
++ return;
++ }
+ readrc(m1, m2, port, rcname);
++ free (rcname);
+ }
+
+ #if defined(IP_OPTIONS) && defined(HAS_IPPROTO_IP)
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/defines.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/defines.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/defines.h 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/defines.h 2010-05-11 13:44:40.063654881 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)defines.h 5.1 (Berkeley) 9/14/90
+- * $Id: defines.h,v 1.5 1996/08/04 23:44:43 dholland Exp $
++ * $Id: defines.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ #define ENV_VAR NEW_ENV_VAR
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/externs.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/externs.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/externs.h 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/externs.h 2010-05-11 13:44:40.063654881 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)externs.h 5.3 (Berkeley) 3/22/91
+- * $Id: externs.h,v 1.20 1999/08/19 09:34:15 dholland Exp $
++ * $Id: externs.h,v 1.2 2004-11-17 15:28:51 ianb Exp $
+ */
+
+ #ifndef BSD
+@@ -57,6 +57,7 @@
+ #define SUBBUFSIZE 256
+
+ extern int autologin; /* Autologin enabled */
++extern int use_authentication; /* use SSL authentication */
+ extern int skiprc; /* Don't process the ~/.telnetrc file */
+ extern int eight; /* use eight bit mode (binary in and/or out) */
+ extern int binary; /* use binary option (in and/or out) */
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/fdset.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/fdset.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/fdset.h 1996-07-16 07:17:22.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/fdset.h 2010-05-11 13:44:40.063654881 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)fdset.h 5.1 (Berkeley) 9/14/90
+- * $Id: fdset.h,v 1.1 1996/07/16 05:17:22 dholland Exp $
++ * $Id: fdset.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ /*
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/general.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/general.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/general.h 1996-07-16 07:17:22.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/general.h 2010-05-11 13:44:40.063654881 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)general.h 5.2 (Berkeley) 3/1/91
+- * $Id: general.h,v 1.1 1996/07/16 05:17:22 dholland Exp $
++ * $Id: general.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ /*
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/genget.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/genget.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/genget.cc 1996-07-26 11:54:09.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/genget.cc 2010-05-11 13:44:40.063654881 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)genget.c 5.1 (Berkeley) 2/28/91
+ */
+ char gg_rcsid[] =
+- "$Id: genget.cc,v 1.3 1996/07/26 09:54:09 dholland Exp $";
++ "$Id: genget.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include <string.h>
+ #include <ctype.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/glue.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/glue.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/glue.cc 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/glue.cc 2010-05-11 13:44:40.083654043 +0200
+@@ -11,8 +11,9 @@
+ printsub_h(direction, pointer, length);
+ }
+
+-extern "C" void writenet(const char *str, int len) {
++extern "C" int writenet(const char *str, int len) {
+ netoring.write(str, len);
++ return 1;
+ }
+
+ extern "C" int telnet_spin() {
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/main.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/main.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/main.cc 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/main.cc 2010-05-11 13:44:40.066988214 +0200
+@@ -39,7 +39,7 @@
+ * From: @(#)main.c 5.4 (Berkeley) 3/22/91
+ */
+ char main_rcsid[] =
+- "$Id: main.cc,v 1.14 1999/08/01 05:06:37 dholland Exp $";
++ "$Id: main.cc,v 1.6 2004-11-22 20:26:37 ianb Exp $";
+
+ #include "../version.h"
+
+@@ -86,16 +86,27 @@
+ * -X <atype> disable specified auth type
+ */
+ void usage(void) {
+- fprintf(stderr, "Usage: %s %s%s%s%s\n",
++ fprintf(stderr, "Usage: %s %s%s%s%s%s\n",
+ prompt,
++#ifdef AUTHENTICATE
++ "[-4] [-6] [-8] [-E] [-K] [-L] [-X atype] [-a] [-d] [-e char]",
++ "\n\t[-l user] [-n tracefile] [ -b addr ]",
++#else
+ "[-4] [-6] [-8] [-E] [-L] [-a] [-d] [-e char] [-l user]",
+ "\n\t[-n tracefile] [ -b addr ]",
++#endif
+ #ifdef TN3270
+ "\n\t"
+ "[-noasynch] [-noasynctty] [-noasyncnet] [-r] [-t transcom]\n\t",
+ #else
+ " [-r] ",
+ #endif
++#ifdef USE_SSL
++ /* might as well output something useful here ... */
++ "\n\t[-z ssl] [-z secure] [-z debug] [-z verify=int]\n\t[-z cert=file] [-z key=file]\n\t",
++#else /* !USE_SSL */
++ "",
++#endif /* USE_SSL */
+ "[host-name [port]]"
+ );
+ exit(1);
+@@ -135,8 +146,73 @@
+ autologin = -1;
+
+ while ((ch = getopt(argc, argv,
+- "4678EKLS:X:ab:de:k:l:n:rt:x")) != EOF) {
++ "4678EKLS:X:ab:de:k:l:n:rt:xz:")) != EOF) {
+ switch(ch) {
++#ifdef USE_SSL
++ case 'z':
++ {
++ char *origopt;
++
++ origopt=strdup(optarg);
++ optarg=strtok(origopt,",");
++
++ while(optarg!=NULL) {
++
++ if (strcmp(optarg, "debug") == 0 ) {
++ ssl_debug_flag=1;
++ } else if (strcmp(optarg, "authdebug") == 0 ) {
++ auth_debug_mode=1;
++ } else if (strcmp(optarg, "ssl") == 0 ) {
++ ssl_only_flag=1;
++ } else if ( (strcmp(optarg, "!ssl") == 0) ||
++ (strcmp(optarg, "nossl") == 0) ) {
++ /* we may want to switch SSL negotiation off
++ * for testing or other reasons
++ */
++ ssl_disabled_flag=1;
++ } else if (strcmp(optarg, "certrequired") == 0 ) {
++ ssl_cert_required=1;
++ } else if (strcmp(optarg, "secure") == 0 ) {
++ ssl_secure_flag=1;
++ } else if (strcmp(optarg, "verbose") == 0 ) {
++ ssl_verbose_flag=1;
++ } else if (strncmp(optarg, "verify=",
++ strlen("verify=")) == 0 ) {
++ ssl_verify_flag=atoi(optarg+strlen("verify="));
++ } else if (strncmp(optarg, "cert=",
++ strlen("cert=")) == 0 ) {
++ ssl_cert_file= optarg + strlen("cert=");
++ } else if (strncmp(optarg, "key=",
++ strlen("key=")) == 0 ) {
++ ssl_key_file= optarg + strlen("key=");
++ } else if (strncmp(optarg,"cipher=",
++ strlen("cipher="))==0) {
++ ssl_cipher_list=optarg+strlen("cipher=");
++ } else {
++ /* report when we are given rubbish so that
++ * if the user makes a mistake they have to
++ * correct it!
++ */
++ fprintf(stderr,"Unknown SSL option %s\n",optarg);
++ fflush(stderr);
++ exit(1);
++ }
++
++ /* get the next one ... */
++ optarg=strtok(NULL,",");
++
++ }
++
++ /*
++ if (origopt!=NULL)
++ free(origopt);
++ */
++
++ }
++
++ break;
++#endif /* USE_SSL */
++
+ case '4':
+ family = AF_INET;
+ break;
+@@ -257,14 +333,25 @@
+ autologin = (rlogin == _POSIX_VDISABLE) ? 0 : 1;
+
+ #ifdef USE_SSL
++ if((ssl_cert_file != NULL) || (ssl_key_file != NULL)) {
++ autologin = 1;
++ }
++
+ if (ssl_secure_flag||ssl_cert_required) {
+ /* in secure mode we *must* switch on the base level
+ * verify checking otherwise we cannot abort connections
+ * at the right place!
+ */
+ if (ssl_verify_flag == 0)
+- ssl_verify_flag = 1;
++ ssl_verify_flag = SSL_VERIFY_PEER;;
+ }
++
++ /* client mode ignores SSL_VERIFY_FAIL_IF_NO_PEER_CERT,
++ so simulate it using certrequired */
++ if(ssl_verify_flag & SSL_VERIFY_FAIL_IF_NO_PEER_CERT) {
++ ssl_cert_required=1;
++ }
++
+ #endif /* USE_SSL */
+
+ argc -= optind;
+@@ -289,11 +376,6 @@
+ *argp++ = family == AF_INET ? "-4" : "-6";
+ }
+ *argp++ = argv[0]; /* host */
+-#ifdef USE_SSL
+- if (strcmp(argv[0], "localhost") != 0) {
+- autologin = 1;
+- }
+-#endif /* USE_SSL */
+ if (argc > 1)
+ *argp++ = argv[1]; /* port */
+ *argp = 0;
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/Makefile netkit-telnet-ssl-0.17.24+0.1.orig/telnet/Makefile
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/Makefile 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/Makefile 2010-05-11 13:44:40.056990450 +0200
+@@ -6,15 +6,18 @@
+ #CXXFLAGS:=$(patsubst -O2, -g, $(CXXFLAGS))
+
+ # -DAUTHENTICATE
+-CXXFLAGS += -DUSE_TERMIO -DKLUDGELINEMODE
+-LIBS = $(LIBTERMCAP)
++CXXFLAGS += -DUSE_TERMIO -DKLUDGELINEMODE -DAUTHENTICATE -DUSE_SSL \
++ -I/usr/include/openssl -I../
++LIBTELNET = ../libtelnet/libtelnet.a
++LIBS += $(LIBTERMCAP) $(LIBTELNET) -lssl -lcrypto
+
+ SRCS = commands.cc main.cc network.cc ring.cc sys_bsd.cc telnet.cc \
+- terminal.cc tn3270.cc utilities.cc genget.cc environ.cc netlink.cc
++ terminal.cc tn3270.cc utilities.cc genget.cc environ.cc netlink.cc \
++ glue.cc glue2.cc
+
+ OBJS = $(patsubst %.cc, %.o, $(SRCS))
+
+-telnet: $(OBJS)
++telnet: $(OBJS) $(LIBTELNET)
+ $(CXX) $(LDFLAGS) $^ $(LIBS) -o $@
+
+ include depend.mk
+@@ -22,7 +25,7 @@
+ $(CXX) $(CXXFLAGS) -MM $(SRCS) >depend.mk
+
+ install: telnet
+- install -s -m$(BINMODE) telnet $(INSTALLROOT)$(BINDIR)/telnet-ssl
++ install -m$(BINMODE) telnet $(INSTALLROOT)$(BINDIR)/telnet-ssl
+ install -m$(MANMODE) telnet.1 $(INSTALLROOT)$(MANDIR)/man1/telnet-ssl.1
+
+ clean:
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/netlink.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/netlink.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/netlink.cc 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/netlink.cc 2010-05-11 13:44:40.066988214 +0200
+@@ -12,12 +12,27 @@
+ #include "proto.h"
+ #include "ring.h"
+ #include <libtelnet/sslapp.h>
++#include <libtelnet/misc-proto.h>
+
+ /* In Linux, this is an enum */
+ #if defined(__linux__) || defined(IPPROTO_IP)
+ #define HAS_IPPROTO_IP
+ #endif
+
++/* code from Peter 'Luna' Runestig <peter@runestig.com> */
++static int select_read(int rfd)
++/* timeout = 20 seconds */
++{
++ fd_set rfds;
++ struct timeval tv;
++
++ FD_ZERO(&rfds);
++ FD_SET(rfd, &rfds);
++ tv.tv_sec = 20;
++ tv.tv_usec = 0;
++ return select(rfd + 1, &rfds, NULL, NULL, &tv);
++}
++
+ netlink nlink;
+
+ class netchannel : public ringbuf::source {
+@@ -26,12 +41,23 @@
+ int net = nlink.getfd();
+ int l;
+ #ifdef USE_SSL
+- if (ssl_active_flag)
+- l = SSL_read(ssl_con, buf, maxlen);
+- else
++ if (ssl_active_flag) {
++ do {
++ l = SSL_read(ssl_con, buf, maxlen);
++ /*
++ * SSL_ERROR_WANT_READ may occur if an SSL/TLS rehandshake occurs.
++ * This means that data was available at the socket, but all was
++ * consumed by SSL itself, so we select (w/20s timeout) and retry.
++ */
++ } while (l<0 &&
++ (SSL_ERROR_WANT_READ == SSL_get_error(ssl_con, l)) &&
++ (select_read(net) > 0));
++ } else
+ #endif /* USE_SSL */
+- l = recv(net, buf, maxlen, 0);
+- if (l<0 && errno == EWOULDBLOCK) l = 0;
++ {
++ l = recv(net, buf, maxlen, 0);
++ if (l<0 && errno == EWOULDBLOCK) l = 0;
++ }
+ return l;
+ }
+ };
+@@ -70,11 +96,11 @@
+
+
+ netlink::netlink() { net = -1; }
+-netlink::~netlink() { ::close(net); }
++netlink::~netlink() { if (net >= 0) ::close(net); }
+
+
+ int netlink::setdebug(int debug) {
+- if (net > 0 &&
++ if (net >= 0 &&
+ (setsockopt(net, SOL_SOCKET, SO_DEBUG, &debug, sizeof(debug))) < 0) {
+ perror("setsockopt (SO_DEBUG)");
+ }
+@@ -95,7 +121,8 @@
+ ssl_active_flag=0;
+ }
+ #endif /* USE_SSL */
+- ::close(net);
++ if (net >= 0)
++ ::close(net);
+ net = -1;
+ }
+
+@@ -142,7 +169,8 @@
+ {
+ int on=1;
+ int res;
+-
++ extern char *hostname;
++
+ res = socket(addr->ai_family);
+ if (res < 2)
+ return res;
+@@ -192,10 +220,24 @@
+ /* bind in the network descriptor */
+ SSL_set_fd(ssl_con,net);
+
++#if defined(AUTHENTICATE)
++ /* moved from telnet() so client_verify_callback knows RemoteHostName -ianb */
++ {
++ static char local_host[256] = { 0 };
++ int len = sizeof(local_host);
++
++ if (!local_host[0]) {
++ gethostname(local_host, len); /* WAS &len!!! */
++ local_host[sizeof(local_host)-1] = 0;
++ }
++ auth_encrypt_init(local_host, hostname, "TELNET", 0);
++ }
++#endif
++
+ /* if we are doing raw SSL then start it now ... */
+ if (ssl_only_flag) {
+ if (!SSL_connect(ssl_con)) {
+- static char errbuf[1024];
++ /* static char errbuf[1024]; */
+
+ ERR_print_errors_fp(stderr);
+ perror("SSL_connect");
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/network.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/network.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/network.cc 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/network.cc 2010-05-11 13:44:40.066988214 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)network.c 5.2 (Berkeley) 3/1/91
+ */
+ char net_rcsid[] =
+- "$Id: network.cc,v 1.15 1996/08/13 08:09:58 dholland Exp $";
++ "$Id: network.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include <sys/types.h>
+ #include <sys/socket.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/proto.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/proto.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/proto.h 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/proto.h 2010-05-11 13:44:40.070321269 +0200
+@@ -10,9 +10,11 @@
+ int TerminalSpecialChars(int);
+ void TerminalSpeeds(long *ispeed, long *ospeed);
+ int TerminalWindowSize(long *rows, long *cols);
++#if 0
+ void auth_encrypt_user(char *);
+ void auth_name(unsigned char *, int);
+ void auth_printsub(unsigned char *, int, unsigned char *, int);
++#endif
+ void cmdrc(const char *, const char *, const char *);
+ void env_init(void);
+ int getconnmode(void);
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/ring.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/ring.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/ring.cc 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/ring.cc 2010-05-11 13:44:40.070321269 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)ring.c 5.2 (Berkeley) 3/1/91
+ */
+ char ring_rcsid[] =
+- "$Id: ring.cc,v 1.23 2000/07/23 03:25:09 dholland Exp $";
++ "$Id: ring.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ /*
+ * This defines a structure for a ring buffer.
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/ring.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/ring.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/ring.h 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/ring.h 2010-05-11 13:44:40.070321269 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)ring.h 5.2 (Berkeley) 3/1/91
+- * $Id: ring.h,v 1.13 1996/08/13 08:43:28 dholland Exp $
++ * $Id: ring.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ class datasink {
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/sys_bsd.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/sys_bsd.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/sys_bsd.cc 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/sys_bsd.cc 2010-05-11 13:44:40.070321269 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)sys_bsd.c 5.2 (Berkeley) 3/1/91
+ */
+ char bsd_rcsid[] =
+- "$Id: sys_bsd.cc,v 1.24 1999/09/28 16:29:24 dholland Exp $";
++ "$Id: sys_bsd.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ /*
+ * The following routines try to encapsulate what is system dependent
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/telnet.1 netkit-telnet-ssl-0.17.24+0.1.orig/telnet/telnet.1
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/telnet.1 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/telnet.1 2010-05-11 13:44:40.073654603 +0200
+@@ -30,7 +30,7 @@
+ .\" SUCH DAMAGE.
+ .\"
+ .\" from: @(#)telnet.1 6.16 (Berkeley) 7/27/91
+-.\" $Id: telnet.1,v 1.15 2000/07/30 23:57:08 dholland Exp $
++.\" $Id: telnet.1,v 1.5 2006-09-24 00:48:31 ianb Exp $
+ .\"
+ .Dd August 15, 1999
+ .Dt TELNET 1
+@@ -42,12 +42,14 @@
+ protocol
+ .Sh SYNOPSIS
+ .Nm telnet
+-.Op Fl 468ELadr
++.Op Fl 468EKLadr
+ .Op Fl S Ar tos
++.Op Fl X Ar authtype
+ .Op Fl b Ar address
+ .Op Fl e Ar escapechar
+ .Op Fl l Ar user
+ .Op Fl n Ar tracefile
++.Op Fl z Ar option
+ .Oo
+ .Ar host
+ .Op Ar port
+@@ -152,44 +154,47 @@
+ command below.
+ .It Fl z Ar option
+ Set SSL (Secure Socket Layer) parameters. The default is to negotiate
+-via telnet protocoll if SSL is availlable at server side and then to
++via telnet protocol if SSL is available at server side and then to
+ switch it on. In this mode you can connect to both conventional and
+-SSL enhanced telnetd's.
++SSL enhanced telnetd's. If the connection is made to localhost and
++.Ic -z secure
++is not set, then
++SSL is not enabled.
+ .Pp
+ The SSL parameters are:
+ .Bl -tag -width Fl
+-.It Ic Ar debug
++.It Ic debug
+ Send SSL related debugging information to stderr.
+-.It Ic Ar authdebug
++.It Ic authdebug
+ Enable authentication debugging.
+-.It Ic Ar ssl
++.It Ic ssl
+ Negotiate SSL at first, then use telnet protocol. In this mode you can
+ connect to any server supporting directly SSL like Apache-SSL. Use
+ .Ic telnet -z ssl ssl3.netscape.com https
+ for example. telnet protocol negotiation goes encrypted.
+-.It Ic Ar nossl, Ar !ssl
+-switch of SSL negotiation
+-.It Ic Ar certrequired
+-client certificate is mandatory
+-.It Ic Ar secure
++.It Ic nossl, Ic !ssl
++switch off SSL negotiation
++.It Ic certrequired
++server certificate is mandatory
++.It Ic secure
+ Don't switch back to unencrypted mode (no SSL) if SSL is not available.
+-.It Ic Ar verbose
++.It Ic verbose
+ Be verbose about certificates etc.
+-.It Ic Ar verify=int
++.It Ic verify= Ns Ar int
+ .\" TODO
+ Set the SSL verify flags (SSL_VERIFY_* in
+ .Ar ssl/ssl.h
+ ).
+ .\" TODO
+-.It Ic Ar cert=cert_file
++.It Ic cert= Ns Ar cert_file
+ .\" TODO
+ Use the certificate(s) in
+ .Ar cert_file .
+-.It Ic Ar key=key_file
++.It Ic key= Ns Ar key_file
+ .\" TODO
+ Use the key(s) in
+ .Ar key_file .
+-.It Ic Ar cipher=ciph_list
++.It Ic cipher= Ns Ar ciph_list
+ .\" TODO
+ Set the preferred ciphers to
+ .Ar ciph_list .
+@@ -319,10 +324,6 @@
+ List the current status of the various types of
+ authentication.
+ .El
+-.Pp
+-Note that the current version of
+-.Nm telnet
+-does not support authentication.
+ .It Ic close
+ Close the connection to the remote host, if any, and return to command
+ mode.
+@@ -332,49 +333,49 @@
+ and
+ .Ic toggle
+ values (see below).
+-.It Ic encrypt Ar argument ...
+-The encrypt command controls the
+-.Dv TELNET ENCRYPT
+-protocol option. If
+-.Nm telnet
+-was compiled without encryption, the
+-.Ic encrypt
+-command will not be supported.
+-.Pp
+-Valid arguments are as follows:
+-.Bl -tag -width Ar
+-.It Ic disable Ar type Ic [input|output]
+-Disable the specified type of encryption. If you do not specify input
+-or output, encryption of both is disabled. To obtain a list of
+-available types, use ``encrypt disable \&?''.
+-.It Ic enable Ar type Ic [input|output]
+-Enable the specified type of encryption. If you do not specify input
+-or output, encryption of both is enabled. To obtain a list of
+-available types, use ``encrypt enable \&?''.
+-.It Ic input
+-This is the same as ``encrypt start input''.
+-.It Ic -input
+-This is the same as ``encrypt stop input''.
+-.It Ic output
+-This is the same as ``encrypt start output''.
+-.It Ic -output
+-This is the same as ``encrypt stop output''.
+-.It Ic start Ic [input|output]
+-Attempt to begin encrypting. If you do not specify input or output,
+-encryption of both input and output is started.
+-.It Ic status
+-Display the current status of the encryption module.
+-.It Ic stop Ic [input|output]
+-Stop encrypting. If you do not specify input or output, encryption of
+-both is stopped.
+-.It Ic type Ar type
+-Sets the default type of encryption to be used with later ``encrypt start''
+-or ``encrypt stop'' commands.
+-.El
+-.Pp
+-Note that the current version of
+-.Nm telnet
+-does not support encryption.
++.\" .It Ic encrypt Ar argument ...
++.\" The encrypt command controls the
++.\" .Dv TELNET ENCRYPT
++.\" protocol option. If
++.\" .Nm telnet
++.\" was compiled without encryption, the
++.\" .Ic encrypt
++.\" command will not be supported.
++.\" .Pp
++.\" Valid arguments are as follows:
++.\" .Bl -tag -width Ar
++.\" .It Ic disable Ar type Ic [input|output]
++.\" Disable the specified type of encryption. If you do not specify input
++.\" or output, encryption of both is disabled. To obtain a list of
++.\" available types, use ``encrypt disable \&?''.
++.\" .It Ic enable Ar type Ic [input|output]
++.\" Enable the specified type of encryption. If you do not specify input
++.\" or output, encryption of both is enabled. To obtain a list of
++.\" available types, use ``encrypt enable \&?''.
++.\" .It Ic input
++.\" This is the same as ``encrypt start input''.
++.\" .It Ic -input
++.\" This is the same as ``encrypt stop input''.
++.\" .It Ic output
++.\" This is the same as ``encrypt start output''.
++.\" .It Ic -output
++.\" This is the same as ``encrypt stop output''.
++.\" .It Ic start Ic [input|output]
++.\" Attempt to begin encrypting. If you do not specify input or output,
++.\" encryption of both input and output is started.
++.\" .It Ic status
++.\" Display the current status of the encryption module.
++.\" .It Ic stop Ic [input|output]
++.\" Stop encrypting. If you do not specify input or output, encryption of
++.\" both is stopped.
++.\" .It Ic type Ar type
++.\" Sets the default type of encryption to be used with later ``encrypt start''
++.\" or ``encrypt stop'' commands.
++.\" .El
++.\" .Pp
++.\" Note that the current version of
++.\" .Nm telnet
++.\" does not support encryption.
+ .It Ic environ Ar arguments...
+ The
+ .Ic environ
+@@ -1017,6 +1018,16 @@
+ .Ic slc
+ command.
+ .El
++.It Ic startssl
++Attempt to negotiate telnet-over-SSL (as with the
++.Ic -z ssl
++option). This is useful when connecting to non-telnetds such
++as imapd (with the
++.Ic STARTTLS
++command). To control SSL when connecting to a SSL-enabled
++telnetd, use the
++.Ic auth
++command instead.
+ .It Ic status
+ Show the current status of
+ .Nm telnet .
+@@ -1079,17 +1090,17 @@
+ .Dv FALSE
+ (see
+ .Xr stty 1 ) .
+-.It Ic autodecrypt
+-When the
+-.Dv TELNET ENCRYPT
+-option is negotiated, by
+-default the actual encryption (decryption) of the data
+-stream does not start automatically. The autoencrypt
+-(autodecrypt) command states that encryption of the
+-output (input) stream should be enabled as soon as
+-possible.
+-.Pp
+-Note that this flag exists only if encryption support is enabled.
++.\" .It Ic autodecrypt
++.\" When the
++.\" .Dv TELNET ENCRYPT
++.\" option is negotiated, by
++.\" default the actual encryption (decryption) of the data
++.\" stream does not start automatically. The autoencrypt
++.\" (autodecrypt) command states that encryption of the
++.\" output (input) stream should be enabled as soon as
++.\" possible.
++.\" .Pp
++.\" Note that this flag exists only if encryption support is enabled.
+ .It Ic autologin
+ If the remote side supports the
+ .Dv TELNET AUTHENTICATION
+@@ -1174,9 +1185,9 @@
+ .Ic super user ) .
+ The initial value for this toggle is
+ .Dv FALSE .
+-.It Ic encdebug
+-Turns on debugging information for the encryption code.
+-Note that this flag only exists if encryption support is available.
++.\" .It Ic encdebug
++.\" Turns on debugging information for the encryption code.
++.\" Note that this flag only exists if encryption support is available.
+ .It Ic localchars
+ If this is
+ .Dv TRUE ,
+@@ -1221,8 +1232,9 @@
+ is sent as
+ .Ic abort ,
+ and
+-.Ic eof and
+-.B suspend
++.Ic eof
++and
++.Ic suspend
+ are sent as
+ .Ic eof and
+ .Ic susp ,
+@@ -1263,16 +1275,16 @@
+ Toggles the display of all terminal data (in hexadecimal format).
+ The initial value for this toggle is
+ .Dv FALSE .
+-.It Ic verbose_encrypt
+-When the
+-.Ic verbose_encrypt
+-toggle is
+-.Dv TRUE ,
+-.Tn TELNET
+-prints out a message each time encryption is enabled or
+-disabled. The initial value for this toggle is
+-.Dv FALSE.
+-This flag only exists if encryption support is available.
++.\" .It Ic verbose_encrypt
++.\" When the
++.\" .Ic verbose_encrypt
++.\" toggle is
++.\" .Dv TRUE ,
++.\" .Tn TELNET
++.\" prints out a message each time encryption is enabled or
++.\" disabled. The initial value for this toggle is
++.\" .Dv FALSE.
++.\" This flag only exists if encryption support is available.
+ .It Ic \&?
+ Displays the legal
+ .Ic toggle
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/telnet.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/telnet.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/telnet.cc 2004-05-27 11:47:26.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/telnet.cc 2010-05-11 13:44:40.076987936 +0200
+@@ -47,7 +47,7 @@
+ * From: @(#)telnet.c 5.53 (Berkeley) 3/22/91
+ */
+ char telnet_rcsid[] =
+-"$Id: telnet.cc,v 1.36 2000/07/23 03:24:53 dholland Exp $";
++"$Id: telnet.cc,v 1.8 2005-04-14 15:26:27 ianb Exp $";
+
+ #include <string.h>
+ #include <sys/types.h>
+@@ -107,6 +107,7 @@
+ eight = 3,
+ binary = 0,
+ autologin = 0, /* Autologin anyone? */
++ use_authentication = 0,
+ skiprc = 0,
+ connected,
+ showoptions,
+@@ -495,7 +496,8 @@
+ break;
+ #if defined(AUTHENTICATE)
+ case TELOPT_AUTHENTICATION:
+- if (autologin)
++ /* if (autologin) */
++ if (use_authentication)
+ new_state_ok = 1;
+ break;
+ #endif
+@@ -722,6 +724,7 @@
+ */
+
+ static void suboption(void) {
++ extern int auth_failed;
+ printsub('<', subbuffer, SB_LEN()+2);
+ switch (SB_GET()) {
+ case TELOPT_TTYPE:
+@@ -845,7 +848,8 @@
+
+ #if defined(AUTHENTICATE)
+ case TELOPT_AUTHENTICATION: {
+- if (!autologin)
++ /* if (!autologin) */
++ if (!use_authentication)
+ break;
+ if (SB_EOF())
+ return;
+@@ -864,6 +868,10 @@
+ if (my_want_state_is_wont(TELOPT_AUTHENTICATION))
+ return;
+ auth_reply(subpointer, SB_LEN());
++ if(auth_failed) {
++ /* auth rejected, quit */
++ quit();
++ }
+ break;
+ case TELQUAL_NAME:
+ if (my_want_state_is_dont(TELOPT_AUTHENTICATION))
+@@ -1140,6 +1148,7 @@
+
+
+ unsigned char slc_reply[128];
++unsigned char const * const slc_reply_eom = &slc_reply[sizeof(slc_reply)];
+ unsigned char *slc_replyp;
+
+ void slc_start_reply(void) {
+@@ -1151,6 +1160,14 @@
+ }
+
+ void slc_add_reply(int func, int flags, int value) {
++ /* A sequence of up to 6 bytes my be written for this member of the SLC
++ * suboption list by this function. The end of negotiation command,
++ * which is written by slc_end_reply(), will require 2 additional
++ * bytes. Do not proceed unless there is sufficient space for these
++ * items.
++ */
++ if (&slc_replyp[6+2] > slc_reply_eom)
++ return;
+ if ((*slc_replyp++ = func) == IAC)
+ *slc_replyp++ = IAC;
+ if ((*slc_replyp++ = flags) == IAC)
+@@ -1819,25 +1836,19 @@
+ */
+ void telnet(const char *user) {
+ sys_telnet_init();
+-
+-#if defined(AUTHENTICATE)
+- {
+- static char local_host[256] = { 0 };
+- int len = sizeof(local_host);
+-
+- if (!local_host[0]) {
+- gethostname(local_host, len); /* WAS &len!!! */
+- local_host[sizeof(local_host)-1] = 0;
+- }
+- auth_encrypt_init(local_host, hostname, "TELNET", 0);
+- auth_encrypt_user(user);
+- }
++
++#ifdef AUTHENTICATE
++ auth_encrypt_user(user);
+ #endif
+-
++
+ #if !defined(TN3270)
+ if (telnetport) {
++
++ send_will(TELOPT_ENVIRON, 1);
++
+ #if defined(AUTHENTICATE)
+- if (autologin)
++ /* if (autologin) */
++ if (use_authentication)
+ send_will(TELOPT_AUTHENTICATION, 1);
+ #endif
+ send_do(TELOPT_SGA, 1);
+@@ -1846,7 +1857,6 @@
+ send_will(TELOPT_TSPEED, 1);
+ send_will(TELOPT_LFLOW, 1);
+ send_will(TELOPT_LINEMODE, 1);
+- send_will(TELOPT_ENVIRON, 1);
+ send_do(TELOPT_STATUS, 1);
+ if (env_getvalue("DISPLAY", 0))
+ send_will(TELOPT_XDISPLOC, 1);
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/terminal.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/terminal.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/terminal.cc 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/terminal.cc 2010-05-11 13:44:40.080321548 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)terminal.c 5.3 (Berkeley) 3/22/91
+ */
+ char terminal_rcsid[] =
+- "$Id: terminal.cc,v 1.25 1999/12/12 19:48:05 dholland Exp $";
++ "$Id: terminal.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include <arpa/telnet.h>
+ #include <sys/types.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/tn3270.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/tn3270.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/tn3270.cc 1996-08-13 11:08:34.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/tn3270.cc 2010-05-11 13:44:40.080321548 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)tn3270.c 5.2 (Berkeley) 3/1/91
+ */
+ char tn3270_rcsid[] =
+- "$Id: tn3270.cc,v 1.9 1996/08/13 09:08:34 dholland Exp $";
++ "$Id: tn3270.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include <sys/types.h>
+ #include <arpa/telnet.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/types.h netkit-telnet-ssl-0.17.24+0.1.orig/telnet/types.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/types.h 1996-07-27 02:45:54.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/types.h 2010-05-11 13:44:40.083654043 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)types.h 5.1 (Berkeley) 9/14/90
+- * $Id: types.h,v 1.2 1996/07/27 00:45:54 dholland Exp $
++ * $Id: types.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ typedef struct {
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnet/utilities.cc netkit-telnet-ssl-0.17.24+0.1.orig/telnet/utilities.cc
+--- netkit-telnet-ssl-0.17.24+0.1/telnet/utilities.cc 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnet/utilities.cc 2010-05-11 13:44:40.083654043 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)utilities.c 5.3 (Berkeley) 3/22/91
+ */
+ char util_rcsid[] =
+- "$Id: utilities.cc,v 1.19 1999/12/12 15:33:40 dholland Exp $";
++ "$Id: utilities.cc,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #define TELOPTS
+ #define TELCMDS
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/authenc.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/authenc.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/authenc.c 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/authenc.c 2010-05-11 13:44:40.086987376 +0200
+@@ -23,7 +23,7 @@
+ * From: @(#)authenc.c 5.1 (Berkeley) 3/1/91
+ */
+ char authenc_rcsid[] =
+- "$Id: authenc.c,v 1.5 1999/12/12 14:59:44 dholland Exp $";
++ "$Id: authenc.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #if defined(ENCRYPT) || defined(AUTHENTICATE)
+ #include "telnetd.h"
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/defs.h netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/defs.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/defs.h 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/defs.h 2010-05-11 13:44:40.086987376 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)defs.h 5.10 (Berkeley) 3/1/91
+- * $Id: defs.h,v 1.7 1999/08/02 03:14:03 dholland Exp $
++ * $Id: defs.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ /*
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/ext.h netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/ext.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/ext.h 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/ext.h 2010-05-11 13:44:40.086987376 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)ext.h 5.7 (Berkeley) 3/1/91
+- * $Id: ext.h,v 1.9 1999/12/12 14:59:44 dholland Exp $
++ * $Id: ext.h,v 1.2 2004-11-21 12:53:12 ianb Exp $
+ */
+
+ /*
+@@ -113,7 +113,7 @@
+ void interrupt(void);
+ void localstat(void);
+ void netclear(void);
+-void netflush(void);
++int netflush(void);
+ size_t netbuflen(int);
+ void sendurg(const char *, size_t);
+
+@@ -183,7 +183,8 @@
+ void tty_tspeed(int);
+ void willoption(int);
+ void wontoption(int);
+-#define writenet(b, l) fwrite(b, 1, l, netfile)
++int writenet(char *, int);
++/*#define writenet(b, l) fwrite(b, 1, l, netfile)*/
+ void netopen(void);
+
+ #if defined(ENCRYPT)
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/getent.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/getent.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/getent.c 1996-08-15 08:23:28.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/getent.c 2010-05-11 13:44:40.086987376 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)getent.c 5.1 (Berkeley) 2/28/91
+ */
+ char ge_rcsid[] =
+- "$Id: getent.c,v 1.3 1996/08/15 06:23:28 dholland Exp $";
++ "$Id: getent.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ /*
+ * Copyright (c) 1991 Regents of the University of California.
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/global.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/global.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/global.c 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/global.c 2010-05-11 13:44:40.090341661 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)global.c 5.2 (Berkeley) 6/1/90
+ */
+ char global_rcsid[] =
+- "$Id: global.c,v 1.4 1999/12/12 14:59:44 dholland Exp $";
++ "$Id: global.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ /*
+ * Allocate global variables.
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/issue.net.5 netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/issue.net.5
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/issue.net.5 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/issue.net.5 2010-05-11 13:44:40.090341661 +0200
+@@ -15,26 +15,26 @@
+ .Pa /etc/issue.net
+ is a text file which contains a message or system identification to be
+ printed before the login prompt of a telnet session. It may contain
+-various `%-char' sequences. The following sequences are supported by
++various `%\&\-char' sequences. The following sequences are supported by
+ .Ic telnetd :
+ .Bl -tag -offset indent -compact -width "abcde"
+-.It %t
++.It %\&t
+ - show the current tty
+-.It %h
++.It %\&h
+ - show the system node name (FQDN)
+-.It %D
++.It %\&D
+ - show the name of the NIS domain
+-.It %d
++.It %\&d
+ - show the current time and date
+-.It %s
++.It %\&s
+ - show the name of the operating system
+-.It %m
++.It %\&m
+ - show the machine (hardware) type
+-.It %r
++.It %\&r
+ - show the operating system release
+-.It %v
++.It %\&v
+ - show the operating system version
+-.It %%
++.It %\&%
+ - display a single '%' character
+ .El
+ .Sh FILES
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/Makefile netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/Makefile
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/Makefile 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/Makefile 2010-05-11 14:12:59.493485309 +0200
+@@ -9,9 +9,11 @@
+ # take out -DPARANOID_TTYS.
+
+ CFLAGS += '-DISSUE_FILE="/etc/issue.net"' -DPARANOID_TTYS \
+- -DNO_REVOKE -DKLUDGELINEMODE -DDIAGNOSTICS \
+- -DLOGIN_WRAPPER=\"/usr/lib/telnetlogin\"
+-# LIBS += $(LIBTERMCAP)
++ -DNO_REVOKE -DKLUDGELINEMODE -DDIAGNOSTICS -DAUTHENTICATE \
++ -DLOGIN_WRAPPER=\"/usr/lib/telnetlogin\" \
++ -DUSE_SSL -I/usr/include/openssl -I..
++LIBTELNET = ../libtelnet/libtelnet.a
++LIBS += $(LIBTERMCAP) $(LIBTELNET) -lssl -lcrypto
+
+ OBJS = telnetd.o state.o termstat.o slc.o sys_term.o utility.o \
+ global.o setproctitle.o
+@@ -28,10 +30,10 @@
+ telnetd.o: ../version.h
+
+ install: telnetd
+- install -s -m$(DAEMONMODE) telnetd $(INSTALLROOT)$(SBINDIR)/in.telnetd
+- install -m$(MANMODE) issue.net.5 $(INSTALLROOT)$(MANDIR)/man5/
+- install -m$(MANMODE) telnetd.8 $(INSTALLROOT)$(MANDIR)/man8/in.telnetd.8
+- ln -sf in.telnetd.8 $(INSTALLROOT)$(MANDIR)/man8/telnetd.8
++ install -m$(DAEMONMODE) telnetd $(INSTALLROOT)$(SBINDIR)/in.telnetd-ssl
++# install -m$(MANMODE) issue.net.5 $(INSTALLROOT)$(MANDIR)/man5/
++ install -m$(MANMODE) telnetd.8 $(INSTALLROOT)$(MANDIR)/man8/in.telnetd-ssl.8
++ ln -sf in.telnetd-ssl.8 $(INSTALLROOT)$(MANDIR)/man8/telnetd-ssl.8
+
+ clean:
+ rm -f *.o telnetd
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/pathnames.h netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/pathnames.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/pathnames.h 1996-08-30 00:31:24.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/pathnames.h 2010-05-11 13:44:40.090341661 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)pathnames.h 5.5 (Berkeley) 6/28/90
+- * $Id: pathnames.h,v 1.3 1996/08/29 22:31:24 dholland Exp $
++ * $Id: pathnames.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+ #include <paths.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/setproctitle.3 netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/setproctitle.3
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/setproctitle.3 2000-07-31 01:57:09.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/setproctitle.3 2010-05-11 13:44:40.090341661 +0200
+@@ -1,5 +1,5 @@
+ .\" OpenBSD: setproctitle.3,v 1.4 1996/10/08 01:20:08 michaels Exp
+-.\" $Id: setproctitle.3,v 1.13 2000/07/30 23:57:09 dholland Exp $
++.\" $Id: setproctitle.3,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ .\"
+ .\" Copyright (c) 1994, 1995 Christopher G. Demetriou
+ .\" All rights reserved.
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/setproctitle.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/setproctitle.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/setproctitle.c 2004-05-27 11:47:01.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/setproctitle.c 2010-05-11 13:44:40.090341661 +0200
+@@ -39,7 +39,7 @@
+ * From: @(#)conf.c 8.243 (Berkeley) 11/20/95
+ */
+ char setproctitle_rcsid[] =
+- "$Id: setproctitle.c,v 1.3 1999/12/10 23:06:39 bryce Exp $";
++ "$Id: setproctitle.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include <stdlib.h>
+ #include <string.h>
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/slc.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/slc.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/slc.c 1999-12-12 15:59:44.000000000 +0100
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/slc.c 2010-05-11 13:44:40.096989611 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)slc.c 5.7 (Berkeley) 3/1/91
+ */
+ char slc_rcsid[] =
+- "$Id: slc.c,v 1.5 1999/12/12 14:59:44 dholland Exp $";
++ "$Id: slc.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include "telnetd.h"
+
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/state.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/state.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/state.c 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/state.c 2010-05-11 13:44:40.100321827 +0200
+@@ -35,11 +35,12 @@
+ * From: @(#)state.c 5.10 (Berkeley) 3/22/91
+ */
+ char state_rcsid[] =
+- "$Id: state.c,v 1.12 1999/12/12 19:41:44 dholland Exp $";
++ "$Id: state.c,v 1.5 2005-07-07 21:53:00 ianb Exp $";
+
+ #include "telnetd.h"
+ #if defined(AUTHENTICATE)
+ #include <libtelnet/auth.h>
++extern char *UserNameRequested;
+ #endif
+
+ int not42 = 1;
+@@ -1161,7 +1162,7 @@
+
+ case TELOPT_ENVIRON: {
+ register int c;
+- register char *cp, *varp, *valp;
++ register unsigned char *cp, *varp, *valp;
+
+ if (SB_EOF())
+ return;
+@@ -1177,25 +1178,41 @@
+ if (SB_EOF())
+ return;
+
+- cp = varp = (char *)subpointer;
++ cp = varp = (unsigned char *)subpointer;
+ valp = 0;
+
+ while (!SB_EOF()) {
+ switch (c = SB_GET()) {
+ case ENV_VALUE:
+ *cp = '\0';
+- cp = valp = (char *)subpointer;
++ cp = valp = (unsigned char *)subpointer;
+ break;
+
+ case ENV_VAR:
+ *cp = '\0';
+- if (envvarok(varp)) {
+- if (valp)
+- (void)setenv(varp, valp, 1);
+- else
+- unsetenv(varp);
++ if (envvarok((char *)varp)) {
++ if (valp) {
++ (void)setenv((char *)varp, (char *)valp, 1);
++#ifdef AUTHENTICATE
++ if (strcmp((char *)varp,"USER") == 0) {
++ if (UserNameRequested)
++ free(UserNameRequested);
++ UserNameRequested=strdup((char *)valp);
++ }
++#endif /* AUTHENTICATE */
++ }
++ else {
++ unsetenv((char *)varp);
++#ifdef AUTHENTICATE
++ if (strcmp((char *)varp,"USER") == 0) {
++ if (UserNameRequested)
++ free(UserNameRequested);
++ UserNameRequested=NULL;
++ }
++#endif /* AUTHENTICATE */
++ }
+ }
+- cp = varp = (char *)subpointer;
++ cp = varp = (unsigned char *)subpointer;
+ valp = 0;
+ break;
+
+@@ -1211,11 +1228,27 @@
+ }
+ }
+ *cp = '\0';
+- if (envvarok(varp)) {
+- if (valp)
+- (void)setenv(varp, valp, 1);
+- else
+- unsetenv(varp);
++ if (envvarok((char *)varp)) {
++ if (valp) {
++ (void)setenv((char *)varp, (char *)valp, 1);
++#ifdef AUTHENTICATE
++ if (strcmp((char *)varp,"USER") == 0) {
++ if (UserNameRequested)
++ free(UserNameRequested);
++ UserNameRequested=strdup((char *)valp);
++ }
++#endif /* AUTHENTICATE */
++ }
++ else {
++ unsetenv((char *)varp);
++#ifdef AUTHENTICATE
++ if (strcmp((char *)varp,"USER") == 0) {
++ if (UserNameRequested)
++ free(UserNameRequested);
++ UserNameRequested=NULL;
++ }
++#endif /* AUTHENTICATE */
++ }
+ }
+ break;
+ } /* end of case TELOPT_ENVIRON */
+@@ -1367,7 +1400,7 @@
+ ADD(IAC);
+ ADD(SE);
+
+- writenet(statusbuf, ncp - statusbuf);
++ writenet((char *)statusbuf, ncp - statusbuf);
+ netflush(); /* Send it on its way */
+
+ DIAG(TD_OPTIONS, {printsub('>', statusbuf, ncp - statusbuf); netflush();});
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/sys_term.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/sys_term.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/sys_term.c 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/sys_term.c 2010-05-11 13:44:40.106987377 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)sys_term.c 5.16 (Berkeley) 3/22/91
+ */
+ char st_rcsid[] =
+- "$Id: sys_term.c,v 1.17 1999/12/17 14:28:47 dholland Exp $";
++ "$Id: sys_term.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include <utmp.h>
+
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/telnetd.8 netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/telnetd.8
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/telnetd.8 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/telnetd.8 2010-05-11 13:44:40.106987377 +0200
+@@ -30,7 +30,7 @@
+ .\" SUCH DAMAGE.
+ .\"
+ .\" from: @(#)telnetd.8 6.8 (Berkeley) 4/20/91
+-.\" $Id: telnetd.8,v 1.18 2000/07/30 23:57:10 dholland Exp $
++.\" $Id: telnetd.8,v 1.5 2006-09-24 00:48:31 ianb Exp $
+ .\"
+ .Dd December 29, 1996
+ .Dt TELNETD 8
+@@ -42,7 +42,7 @@
+ protocol server
+ .Sh SYNOPSIS
+ .Nm /usr/sbin/in.telnetd
+-.Op Fl hns
++.Op Fl hnNs
+ .Op Fl a Ar authmode
+ .Op Fl D Ar debugmode
+ .Op Fl L Ar loginprg
+@@ -50,6 +50,7 @@
+ .Op Fl X Ar authtype
+ .Op Fl edebug
+ .Op Fl debug Ar port
++.Op Fl z Ar sslopt
+ .Sh DESCRIPTION
+ The
+ .Nm telnetd
+@@ -175,6 +176,9 @@
+ if the client is still there, so that idle connections
+ from machines that have crashed or can no longer
+ be reached may be cleaned up.
++.It Fl N
++Disable reverse DNS lookups and use the numeric IP address in logs
++and REMOTEHOST environment variable.
+ .It Fl s
+ This option is only enabled if
+ .Nm telnetd
+@@ -219,12 +223,16 @@
+ only accepts connections from SSL enhanced telnet with option
+ .Ic -z ssl
+ .It Ic nossl, !ssl
+-switch of SSL negotiation
++switch off SSL negotiation
+ .It Ic certsok
+ Look username up in /etc/ssl.users. The format of this file is lines
+ of this form:
+ .Ar user1,user2:/C=US/.....
+-where user1 and user2 are usernames. If client certificate is valid,
++where user1 and user2 are usernames and /C=US/... is the subject name of
++the certificate. Use
++.Ar openssl x509 -subject -noout
++to extract the subject name.
++If client certificate is valid,
+ authenticate without password.
+ .It Ic certrequired
+ client certificate is mandatory
+@@ -451,7 +459,6 @@
+ is compiled with support for data encryption, and
+ indicates a willingness to decrypt
+ the data stream.
+-.Xr issue.net 5 ) .
+ .El
+ .Sh FILES
+ .Pa /etc/services ,
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/telnetd.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/telnetd.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/telnetd.c 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/telnetd.c 2010-05-11 13:44:40.113654043 +0200
+@@ -39,7 +39,7 @@
+ * From: @(#)telnetd.c 5.48 (Berkeley) 3/1/91
+ */
+ char telnetd_rcsid[] =
+- "$Id: telnetd.c,v 1.24 2000/04/12 21:36:12 dholland Exp $";
++ "$Id: telnetd.c,v 1.7 2006-06-16 13:29:00 ianb Exp $";
+
+ #include "../version.h"
+
+@@ -90,6 +90,7 @@
+
+ int debug = 0;
+ int keepalive = 1;
++int numeric_hosts = 0;
+ #ifdef LOGIN_WRAPPER
+ char *loginprg = LOGIN_WRAPPER;
+ #else
+@@ -222,13 +223,12 @@
+ * certificate that we will be running with as we cannot
+ * be sure of the cwd when we are launched
+ */
+- sprintf(cert_filepath,"%s/%s",X509_get_default_cert_dir(),
+- "telnetd.pem");
++ strcpy(cert_filepath, "/etc/telnetd-ssl/telnetd.pem");
+ ssl_cert_file=cert_filepath;
+ ssl_key_file=NULL;
+ #endif /* USE_SSL */
+
+- while ((ch = getopt(argc, argv, "d:a:e:lhnr:I:D:B:sS:a:X:L:z:")) != EOF) {
++ while ((ch = getopt(argc, argv, "d:a:e:lhnNr:I:D:B:sS:a:X:L:z:")) != EOF) {
+ switch(ch) {
+
+ #ifdef USE_SSL
+@@ -389,6 +389,10 @@
+ keepalive = 0;
+ break;
+
++ case 'N':
++ numeric_hosts = 1;
++ break;
++
+ #ifdef SecurID
+ case 's':
+ /* SecurID required */
+@@ -427,7 +431,7 @@
+
+ #ifdef USE_SSL
+
+- if (ssl_secure_flag || ssl_cert_required) {
++ if (ssl_secure_flag || ssl_cert_required || ssl_certsok_flag) {
+ /* in secure mode we *must* switch on the base level
+ * verify checking otherwise we cannot abort connections
+ * at the right place!
+@@ -520,9 +524,9 @@
+ sprintf(errbuf,"SSL_accept error %s\n",
+ ERR_error_string(ERR_get_error(),NULL));
+
+- syslog(LOG_WARNING, errbuf);
++ syslog(LOG_WARNING, "%s", errbuf);
+
+- BIO_printf(bio_err,errbuf);
++ BIO_printf(bio_err,"%s",errbuf);
+
+ /* go to sleep to make sure we are noticed */
+ sleep(10);
+@@ -571,6 +575,11 @@
+ #ifdef AUTHENTICATE
+ fprintf(stderr, " [-X auth-type]");
+ #endif
++#ifdef USE_SSL
++ /* might as well output something useful here ... */
++ fprintf(stderr, "\n\t [-z ssl] [-z secure] [-z debug] [-z verify=int]\n\t");
++ fprintf(stderr, " [-z cert=file] [-z key=file]\n\t");
++#endif /* USE_SSL */
+ fprintf(stderr, "\n");
+ exit(1);
+ }
+@@ -596,6 +605,18 @@
+ /*
+ * Handle the Authentication option before we do anything else.
+ */
++ send_do(TELOPT_ENVIRON, 1);
++ while (his_will_wont_is_changing(TELOPT_ENVIRON)) {
++ ttloop();
++ }
++
++ if (his_state_is_will(TELOPT_ENVIRON)) {
++ netoprintf("%c%c%c%c%c%c",
++ IAC, SB, TELOPT_ENVIRON, TELQUAL_SEND, IAC, SE);
++ while (sequenceIs(environsubopt, baseline))
++ ttloop();
++ }
++
+ send_do(TELOPT_AUTHENTICATION, 1);
+ while (his_will_wont_is_changing(TELOPT_AUTHENTICATION))
+ ttloop();
+@@ -654,7 +675,6 @@
+ send_do(TELOPT_TTYPE, 1);
+ send_do(TELOPT_TSPEED, 1);
+ send_do(TELOPT_XDISPLOC, 1);
+- send_do(TELOPT_ENVIRON, 1);
+ while (
+ #if defined(ENCRYPT)
+ his_do_dont_is_changing(TELOPT_ENCRYPT) ||
+@@ -698,10 +718,6 @@
+ while (sequenceIs(xdisplocsubopt, baseline))
+ ttloop();
+ }
+- if (his_state_is_will(TELOPT_ENVIRON)) {
+- while (sequenceIs(environsubopt, baseline))
+- ttloop();
+- }
+ if (his_state_is_will(TELOPT_TTYPE)) {
+ char first[256], last[256];
+
+@@ -852,7 +868,7 @@
+ static void
+ doit(struct sockaddr *who, socklen_t who_len)
+ {
+- const char *host;
++ char *host;
+ int level;
+ char user_name[256];
+ int i;
+@@ -867,7 +883,8 @@
+
+ /* get name of connected client */
+ if (getnameinfo(who, who_len, remote_host_name,
+- sizeof(remote_host_name), 0, 0, 0)) {
++ sizeof(remote_host_name), 0, 0,
++ numeric_hosts ? NI_NUMERICHOST : 0)) {
+ syslog(LOG_ERR, "doit: getnameinfo: %m");
+ *remote_host_name = 0;
+ }
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/telnetd.h netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/telnetd.h
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/telnetd.h 1999-03-27 08:46:21.000000000 +0100
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/telnetd.h 2010-05-11 13:44:40.113654043 +0200
+@@ -31,7 +31,7 @@
+ * SUCH DAMAGE.
+ *
+ * from: @(#)telnetd.h 5.3 (Berkeley) 3/1/91
+- * $Id: telnetd.h,v 1.2 1999/03/27 07:46:21 dholland Exp $
++ * $Id: telnetd.h,v 1.1 2004-10-14 13:19:53 ianb Exp $
+ */
+
+
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/termstat.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/termstat.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/termstat.c 1999-12-12 15:59:45.000000000 +0100
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/termstat.c 2010-05-11 13:44:40.113654043 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)termstat.c 5.10 (Berkeley) 3/22/91
+ */
+ char termstat_rcsid[] =
+- "$Id: termstat.c,v 1.6 1999/12/12 14:59:45 dholland Exp $";
++ "$Id: termstat.c,v 1.1 2004-10-14 13:19:53 ianb Exp $";
+
+ #include "telnetd.h"
+
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetd/utility.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/utility.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetd/utility.c 2004-05-27 11:47:27.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetd/utility.c 2010-05-11 13:45:21.990318196 +0200
+@@ -35,7 +35,7 @@
+ * From: @(#)utility.c 5.8 (Berkeley) 3/22/91
+ */
+ char util_rcsid[] =
+- "$Id: utility.c,v 1.11 1999/12/12 14:59:45 dholland Exp $";
++ "$Id: utility.c,v 1.8 2006-09-24 00:48:31 ianb Exp $";
+
+ #define PRINTOPTIONS
+
+@@ -49,6 +49,15 @@
+
+ #include "telnetd.h"
+
++/* patched by fluke.l at gmail.com , im not sure it's gonna work or not */
++typedef struct {
++ int (*read) (void *, char *, int);
++ int (*write) (void *, char const *, int);
++ fpos_t (*seek) (void *, fpos_t, int);
++ int (*close) (void *);
++} cookie_io_functions_t;
++/* end patch */
++
+ struct buflist {
+ struct buflist *next;
+ char *buf;
+@@ -86,6 +95,11 @@
+ DIAG(TD_REPORT, netoprintf("td: ttloop\r\n"););
+
+ netflush();
++#ifdef USE_SSL
++ if (ssl_active_flag)
++ ncc = SSL_read(ssl_con, netibuf, sizeof netibuf);
++ else
++#endif /* USE_SSL */
+ ncc = read(net, netibuf, sizeof(netibuf));
+ if (ncc < 0) {
+ syslog(LOG_INFO, "ttloop: read: %m\n");
+@@ -216,7 +230,7 @@
+ }
+
+ out:
+- return next ? next + (current - end) : current;
++ return (const char *) (next ? (next + (current - end)) : current );
+ } /* end of nextitem */
+
+
+@@ -243,6 +257,29 @@
+ doclear--;
+ } /* end of netclear */
+
++#ifdef USE_SSL
++static int
++SSL_writev(SSL *ssl_con,const struct iovec *vector,int num)
++{
++ const struct iovec *v = vector;
++
++ int ret;
++ int len = 0;
++
++ while (num > 0) {
++ ret = SSL_write(ssl_con, v->iov_base, v->iov_len);
++ if (ret < 0)
++ return ret;
++ if (ret != v->iov_len)
++ syslog(LOG_NOTICE, "SSL_writev: short write\n");
++ num -= v->iov_len;
++ len += ret;
++ v++;
++ }
++ return len;
++}
++#endif /* USE_SSL */
++
+ static void
+ netwritebuf(void)
+ {
+@@ -253,6 +290,9 @@
+ size_t len;
+ int ltrailing = trailing;
+
++ if (!listlen)
++ return;
++
+ vector = malloc(listlen * sizeof(struct iovec));
+ if (!vector) {
+ return;
+@@ -265,6 +305,11 @@
+ if (lp == urg) {
+ len = v - vector;
+ if (!len) {
++#ifdef USE_SSL
++ if (ssl_active_flag)
++ n = SSL_write(ssl_con, lp->buf, 1);
++ else
++#endif /* USE_SSL */
+ n = send(net, lp->buf, 1, MSG_OOB);
+ if (n > 0) {
+ urg = 0;
+@@ -282,15 +327,25 @@
+ vector->iov_base = (char *)vector->iov_base + skip;
+ vector->iov_len -= skip;
+
+- n = writev(net, vector, len);
++ if(vector->iov_len == 0 ) {
++ n=0;
++ } else {
++
++#ifdef USE_SSL
++ if (ssl_active_flag)
++ n = SSL_writev(ssl_con, vector, len); /* normal write */
++ else
++#endif /* USE_SSL */
++ n = writev(net, vector, len);
+
+ epi:
+- free(vector);
++ free(vector);
+
+- if (n < 0) {
++ if (n < 0) {
+ if (errno != EWOULDBLOCK && errno != EINTR)
+- cleanup(0);
++ cleanup(0);
+ return;
++ }
+ }
+
+ len = n + skip;
+@@ -315,6 +370,10 @@
+ }
+ }
+
++ if(ltrailing && (len==0)) {
++ ltrailing=trailing=0;
++ }
++
+ skip = len;
+ }
+
+@@ -323,16 +382,22 @@
+ * Send as much data as possible to the network,
+ * handling requests for urgent data.
+ */
+-void
++int
+ netflush(void)
+ {
+ if (fflush(netfile)) {
+ /* out of memory? */
+ cleanup(0);
++ return 0;
+ }
+- if (listlen) {
+- netwritebuf();
+- }
++ netwritebuf();
++ return 1;
++}
++
++int
++writenet(char *b , int l)
++{
++ return(fwrite(b, 1, l, netfile));
+ }
+
+
+@@ -983,7 +1048,7 @@
+ ((pointer[3] & AUTH_HOW_MASK) == AUTH_HOW_MUTUAL) ?
+ "MUTUAL" : "ONE-WAY");
+
+- auth_printsub(&pointer[1], length - 1, buf, sizeof(buf));
++ auth_printsub(&pointer[1], length - 1, (unsigned char *) buf, sizeof(buf));
+ netoprintf("%s", buf);
+ break;
+
+@@ -1191,7 +1256,15 @@
+ size_t l;
+ size_t m = tail->len;
+
+- p = nextitem(tail->buf, tail->buf + tail->len, buf, end);
++ if((tail->buf == NULL) || (tail->len==0))
++ {
++ p = nextitem((unsigned char *) buf, (unsigned char *) end,0,0);
++ }
++ else
++ {
++ p = nextitem((unsigned char *) tail->buf, (unsigned char *) (tail->buf + tail->len),
++ (unsigned char *) buf, (unsigned char *) end);
++ }
+ ltrailing = !p;
+ if (ltrailing) {
+ p = end;
+@@ -1245,7 +1318,7 @@
+ const char *p;
+ size_t l;
+
+- p = nextitem(buf, end, 0, 0);
++ p = nextitem((unsigned char *) buf, (unsigned char *) end, 0, 0);
+ ltrailing = !p;
+ if (ltrailing) {
+ p = end;
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetlogin/Makefile netkit-telnet-ssl-0.17.24+0.1.orig/telnetlogin/Makefile
+--- netkit-telnet-ssl-0.17.24+0.1/telnetlogin/Makefile 2000-04-13 03:07:22.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetlogin/Makefile 2010-05-11 13:46:19.023660189 +0200
+@@ -11,7 +11,7 @@
+ $(OBJS): ../version.h
+
+ install: telnetlogin
+- install -s -m4750 -oroot -gtelnetd telnetlogin $(INSTALLROOT)$(SBINDIR)
++ install -m$(BINMODE) telnetlogin $(INSTALLROOT)$(SBINDIR)
+ install -m$(MANMODE) telnetlogin.8 $(INSTALLROOT)$(MANDIR)/man8
+
+ clean:
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetlogin/telnetlogin.8 netkit-telnet-ssl-0.17.24+0.1.orig/telnetlogin/telnetlogin.8
+--- netkit-telnet-ssl-0.17.24+0.1/telnetlogin/telnetlogin.8 2004-05-27 11:47:02.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetlogin/telnetlogin.8 2010-05-11 13:44:40.123659071 +0200
+@@ -28,7 +28,7 @@
+ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ .\" SUCH DAMAGE.
+ .\"
+-.\" $Id: telnetlogin.8,v 1.4 2000/07/30 23:57:10 dholland Exp $
++.\" $Id: telnetlogin.8,v 1.2 2004-11-07 15:47:43 ianb Exp $
+ .\"
+ .Dd April 12, 2000
+ .Dt TELNETLOGIN 8
+@@ -40,6 +40,7 @@
+ .Nm telnetlogin
+ .Op Fl h Ar host
+ .Op Fl p
++.Op Fl f Ar username
+ .Op Ar username
+ .Sh DESCRIPTION
+ .Nm telnetlogin
+@@ -79,11 +80,6 @@
+ .Xr inetd 8 ,
+ .Xr telnetd 8
+ .Sh RESTRICTIONS
+-.Nm telnetlogin
+-does not permit the
+-.Fl f
+-option to login, so will not
+-work with telnetds that perform authentication via Kerberos or SSL.
+ .Pp
+ THIS IS PRESENTLY EXPERIMENTAL CODE; USE WITH CAUTION.
+ .Sh HISTORY
+diff -ur netkit-telnet-ssl-0.17.24+0.1/telnetlogin/telnetlogin.c netkit-telnet-ssl-0.17.24+0.1.orig/telnetlogin/telnetlogin.c
+--- netkit-telnet-ssl-0.17.24+0.1/telnetlogin/telnetlogin.c 2004-05-27 11:47:02.000000000 +0200
++++ netkit-telnet-ssl-0.17.24+0.1.orig/telnetlogin/telnetlogin.c 2010-05-11 13:44:40.123659071 +0200
+@@ -35,7 +35,7 @@
+ "All rights reserved.\n";
+
+ char rcsid[] =
+- "$Id: telnetlogin.c,v 1.1 2000/04/13 01:07:22 dholland Exp $";
++ "$Id: telnetlogin.c,v 1.2 2004-11-07 15:47:43 ianb Exp $";
+ #include "../version.h"
+
+ #include <sys/types.h>
+@@ -76,7 +76,16 @@
+ int i=0;
+ /* should we check length? */
+ for (i=0; hname[i]; i++) {
+- if (hname[i]<=32 && hname[i]>126) return -1;
++ if ((hname[i]<=32) || (hname[i]>126)) return -1;
++ }
++ return 0;
++}
++
++static int check_username(char *username) {
++ int i;
++ if (strlen(username) > 32) return -1;
++ for (i=0; username[i]; i++) {
++ if ((username[i]<=32) || (username[i]>126)) return -1;
+ }
+ return 0;
+ }
+@@ -158,6 +167,12 @@
+ if (argn < argc && !strcmp(argv[argn], "-p")) {
+ argn++;
+ }
++ if (argn < argc && !strcmp(argv[argn], "-f")) {
++ argn++;
++ if (argn==argc) die("Illegal args: -f requires argument");
++ if (check_username(argv[argn])) die("Illegal remote username specified");
++ argn++;
++ }
+ if (argn < argc && argv[argn][0] != '-') {
+ argn++;
+ }
diff --git a/abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl.install b/abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl.install
new file mode 100644
index 0000000..25a4b28
--- /dev/null
+++ b/abs/not_built/core/netkit-telnet-ssl/netkit-telnet-ssl.install
@@ -0,0 +1,5 @@
+
+post_install() {
+ groupadd telnetd
+}
+
diff --git a/abs/not_built/core/netkit-telnet-ssl/telnet.xinetd b/abs/not_built/core/netkit-telnet-ssl/telnet.xinetd
new file mode 100644
index 0000000..f4ef4c0
--- /dev/null
+++ b/abs/not_built/core/netkit-telnet-ssl/telnet.xinetd
@@ -0,0 +1,10 @@
+service telnet-ssl
+{
+ flags = REUSE
+ socket_type = stream
+ wait = no
+ user = root
+ server = /usr/sbin/in.telnetd-ssl
+ log_on_failure += USERID
+ disable = yes
+}
diff --git a/abs/not_built/core/ntfs-3g/25-ntfs-config-write-policy.fdi b/abs/not_built/core/ntfs-3g/25-ntfs-config-write-policy.fdi
new file mode 100644
index 0000000..54195d8
--- /dev/null
+++ b/abs/not_built/core/ntfs-3g/25-ntfs-config-write-policy.fdi
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deviceinfo version="0.2">
+ <device>
+ <match key="volume.fstype" string="ntfs">
+ <append key="volume.fstype.alternative" type="copy_property">volume.fstype</append>
+ <merge key="volume.mount.ntfs.valid_options" type="copy_property">volume.mount.valid_options</merge>
+ <merge key="volume.unmount.ntfs.valid_options" type="copy_property">volume.unmount.valid_options</merge>
+ <merge key="volume.fstype" type="string">ntfs-3g</merge>
+ <merge key="volume.mount.valid_options" type="strlist">ro</merge>
+ <append key="volume.mount.valid_options" type="strlist">atime</append>
+ <append key="volume.mount.valid_options" type="strlist">noatime</append>
+ <append key="volume.mount.valid_options" type="strlist">relatime</append>
+ <append key="volume.mount.valid_options" type="strlist">fake_rw</append>
+ <append key="volume.mount.valid_options" type="strlist">no_def_opts</append>
+ <append key="volume.mount.valid_options" type="strlist">default_permissions</append>
+ <append key="volume.mount.valid_options" type="strlist">umask=</append>
+ <append key="volume.mount.valid_options" type="strlist">fmask=</append>
+ <append key="volume.mount.valid_options" type="strlist">dmask=</append>
+ <append key="volume.mount.valid_options" type="strlist">uid=</append>
+ <append key="volume.mount.valid_options" type="strlist">gid=</append>
+ <append key="volume.mount.valid_options" type="strlist">show_sys_files</append>
+ <append key="volume.mount.valid_options" type="strlist">silent</append>
+ <append key="volume.mount.valid_options" type="strlist">force</append>
+ <append key="volume.mount.valid_options" type="strlist">remove_hiberfile</append>
+ <append key="volume.mount.valid_options" type="strlist">locale=</append>
+ <append key="volume.mount.valid_options" type="strlist">streams_interface=</append>
+ <append key="volume.mount.valid_options" type="strlist">debug</append>
+ <append key="volume.mount.valid_options" type="strlist">no_detatch</append>
+ <append key="volume.mount.valid_options" type="strlist">sync</append>
+ <append key="volume.mount.valid_options" type="strlist">dirsync</append>
+ <append key="volume.mount.valid_options" type="strlist">nodiratime</append>
+ <append key="volume.mount.valid_options" type="strlist">noexec</append>
+ <append key="volume.mount.valid_options" type="strlist">quiet</append>
+ <append key="volume.mount.valid_options" type="strlist">remount</append>
+ <append key="volume.mount.valid_options" type="strlist">exec</append>
+ <append key="volume.mount.valid_options" type="strlist">recover</append>
+ <append key="volume.mount.valid_options" type="strlist">norecover</append>
+ <merge key="volume.unmount.valid_options" type="strlist">lazy</merge>
+ <merge key="volume.policy.mount_filesystem" type="string">ntfs-3g</merge>
+ </match>
+ </device>
+</deviceinfo>
diff --git a/abs/not_built/core/ntfs-3g/PKGBUILD b/abs/not_built/core/ntfs-3g/PKGBUILD
new file mode 100644
index 0000000..03a7168
--- /dev/null
+++ b/abs/not_built/core/ntfs-3g/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 94455 2010-10-07 10:35:38Z ronald $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Thomas Bächler <thomas.archlinux.org>
+
+pkgname=ntfs-3g
+pkgver=2010.10.2
+pkgrel=1
+pkgdesc="Stable read and write NTFS driver"
+url="http://www.tuxera.com"
+arch=('i686' 'x86_64')
+license=('GPL2')
+depends=('glibc' 'fuse')
+makedepends=('pkgconfig')
+options=('!libtool')
+source=(http://www.tuxera.com/opensource/${pkgname}-${pkgver}.tgz
+ 25-ntfs-config-write-policy.fdi)
+sha1sums=('97531dc0e556596e6bf2169863e9b8368c7d2bd0'
+ '200029f2999a2c284fd30ae25734abf6459c3501')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ac_cv_path_LDCONFIG=/bin/true ./configure --prefix=/usr \
+ --with-fuse=external --disable-static
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ ln -s /bin/ntfs-3g "${pkgdir}/sbin/mount.ntfs"
+ install -m755 -d "${pkgdir}/usr/share/hal/fdi/policy/10osvendor"
+ install -m644 "${srcdir}/25-ntfs-config-write-policy.fdi" "${pkgdir}/usr/share/hal/fdi/policy/10osvendor/"
+}
diff --git a/abs/not_built/core/ntfsprogs/PKGBUILD b/abs/not_built/core/ntfsprogs/PKGBUILD
new file mode 100644
index 0000000..56bf765
--- /dev/null
+++ b/abs/not_built/core/ntfsprogs/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 48342 2009-08-01 14:46:45Z jgc $
+# Maintainer: Ronald van Haren <ronald.archlinux.org>
+
+pkgname=ntfsprogs
+pkgver=2.0.0
+pkgrel=4
+depends=('glibc' 'fuse' 'util-linux-ng>=2.16')
+makedepends=('pkgconfig')
+pkgdesc="NTFS filesystem utilities"
+arch=(i686 x86_64)
+license=('GPL')
+source=(http://downloads.sourceforge.net/sourceforge/linux-ntfs/${pkgname}-${pkgver}.tar.gz)
+url="http://www.linux-ntfs.org/"
+options=(!libtool)
+md5sums=('2c402b647bb7aeb1d3f8ce1cc354fd68')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-gnome-vfs \
+ --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+}
+
diff --git a/abs/not_built/core/ntfsprogs/ntfsprogs.install b/abs/not_built/core/ntfsprogs/ntfsprogs.install
new file mode 100644
index 0000000..a58d672
--- /dev/null
+++ b/abs/not_built/core/ntfsprogs/ntfsprogs.install
@@ -0,0 +1,24 @@
+ # arg 1: the new package version
+post_install() {
+cat << EOF
+NOTE:
+==> There is a good guide to use the ntfsresize utility at:
+ 'http://mlf.linux.rulez.org/mlf/ezaz/ntfsresize.html'
+
+WARNING:
+==> This program "can" cause dataloss if you don't use it right!
+==> Make a backup of your files! You have been warned !!!
+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/not_built/core/nuvexport/MP4.pm b/abs/not_built/core/nuvexport/MP4.pm
new file mode 100755
index 0000000..e13d44b
--- /dev/null
+++ b/abs/not_built/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/not_built/core/nuvexport/PKGBUILD b/abs/not_built/core/nuvexport/PKGBUILD
new file mode 100644
index 0000000..27369de
--- /dev/null
+++ b/abs/not_built/core/nuvexport/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Contributor: Paul Mattal <paul@mattal.com>
+# Maintainer: Paul Mattal <paul@archlinux.org>
+pkgname=nuvexport
+pkgver=20080311
+relnum=0.5
+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"
+license=""
+depends=(perl perl-dbi 'ffmpeg>=20060920' perl-dbd-mysql perl-date-manip)
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+install=
+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() {
+ cd $startdir/src/$pkgname-$relnum
+
+ sed -i "s|prefix=/usr/local|prefix=$startdir/pkg/usr|g" Makefile || return 1
+ sed -i "s|/usr/bin/install|/bin/install|g" Makefile || return 1
+ sed -i "s|sysconfdir=/etc|sysconfdir=$startdir/pkg/etc|g" Makefile || return 1
+
+ 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/not_built/core/nuvexport/XviD.pm b/abs/not_built/core/nuvexport/XviD.pm
new file mode 100755
index 0000000..c4700f5
--- /dev/null
+++ b/abs/not_built/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/not_built/core/nuvexport/nuvexport-ipod-disable.patch b/abs/not_built/core/nuvexport/nuvexport-ipod-disable.patch
new file mode 100644
index 0000000..dfb17a9
--- /dev/null
+++ b/abs/not_built/core/nuvexport/nuvexport-ipod-disable.patch
@@ -0,0 +1,12 @@
+diff -urN nuvexport-0.3/nuvexport nuvexport-0.3-fixed/nuvexport
+--- nuvexport-0.3/nuvexport 2006-07-26 03:37:13.000000000 -0400
++++ nuvexport-0.3-fixed/nuvexport 2006-07-27 20:58:41.000000000 -0400
+@@ -93,7 +93,7 @@
+ push @Exporters, export::ffmpeg::ASF->new;
+ push @Exporters, export::ffmpeg::MP3->new;
+ push @Exporters, export::ffmpeg::PSP->new;
+- push @Exporters, export::ffmpeg::iPod->new;
++# push @Exporters, export::ffmpeg::iPod->new;
+ }
+ elsif ($export_prog eq 'mencoder') {
+ push @Exporters, export::mencoder::XviD->new;
diff --git a/abs/not_built/core/nvidia-173xx-utils/20-nvidia.conf b/abs/not_built/core/nvidia-173xx-utils/20-nvidia.conf
new file mode 100644
index 0000000..227ac7d
--- /dev/null
+++ b/abs/not_built/core/nvidia-173xx-utils/20-nvidia.conf
@@ -0,0 +1,5 @@
+Section "Device"
+ Identifier "Default nvidia Device"
+ Driver "nvidia"
+ Option "NoLogo" "True"
+EndSection
diff --git a/abs/not_built/core/nvidia-173xx-utils/PKGBUILD b/abs/not_built/core/nvidia-173xx-utils/PKGBUILD
new file mode 100644
index 0000000..013e1c7
--- /dev/null
+++ b/abs/not_built/core/nvidia-173xx-utils/PKGBUILD
@@ -0,0 +1,68 @@
+# $Id: PKGBUILD 28365 2009-03-01 00:11:38Z pierre $
+# Maintainer: Thomas Bächler <thomas@archlinux.org>
+
+pkgname=nvidia-173xx-utils
+pkgver=173.14.30
+pkgrel=1
+pkgdesc="NVIDIA drivers utilities and libraries, 173xx branch."
+arch=('i686' 'x86_64')
+[ "$CARCH" = "i686" ] && ARCH=x86
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+url="http://www.nvidia.com/"
+depends=('xorg-server')
+optdepends=('gtk2: nvidia-settings' 'pkgconfig: nvidia-xconfig')
+conflicts=('libgl')
+provides=('libgl')
+license=('custom')
+install=nvidia.install
+options=(!strip)
+backup=('etc/X11/xorg.conf.d/20-nvidia.conf')
+source=("http://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run")
+md5sums=('665f9f730c18ab24a997e0e14b863262')
+[ "$CARCH" = "x86_64" ] && md5sums=('8c47463ae14a2f742d0fa00160456745')
+
+source[1]='20-nvidia.conf'
+md5sums[1]='37e417b2c69e46de1346a653e07027fa'
+
+package() {
+ cd $srcdir
+ sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only
+ cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/
+
+ mkdir -p $pkgdir/usr/{lib,bin,share/applications,share/pixmaps,share/man/man1}
+ mkdir -p $pkgdir/usr/lib/xorg/modules/{extensions,drivers}
+ mkdir -p $pkgdir/usr/share/licenses/nvidia-173xx/
+
+ install lib/{libGLcore,libGL,libnvidia-cfg,tls/libnvidia-tls}.so.${pkgver} \
+ $pkgdir/usr/lib/
+ install -m644 share/man/man1/* $pkgdir/usr/share/man/man1/
+ rm $pkgdir/usr/share/man/man1/nvidia-installer.1.gz
+ install X11R6/lib/libXv* $pkgdir/usr/lib/
+ install -m644 share/applications/nvidia-settings.desktop $pkgdir/usr/share/applications/
+ # fix nvidia .desktop file
+ sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $pkgdir/usr/share/applications/nvidia-settings.desktop
+ install -m644 share/pixmaps/nvidia-settings.png $pkgdir/usr/share/pixmaps/
+ install X11R6/lib/modules/drivers/nvidia_drv.so $pkgdir/usr/lib/xorg/modules/drivers
+ install X11R6/lib/modules/extensions/libglx.so.$pkgver $pkgdir/usr/lib/xorg/modules/extensions
+ install -m755 bin/nvidia-{settings,xconfig,bug-report.sh} $pkgdir/usr/bin/
+ cd $pkgdir/usr/lib/
+ ln -s libGL.so.$pkgver libGL.so
+ ln -s libGL.so.$pkgver libGL.so.1
+ ln -s libGLcore.so.$pkgver libGLcore.so.1
+ ln -s libnvidia-cfg.so.$pkgver libnvidia-cfg.so.1
+ ln -s libnvidia-tls.so.$pkgver libnvidia-tls.so.1
+ ln -s libXvMCNVIDIA.so.$pkgver libXvMCNVIDIA_dynamic.so.1
+
+ cd $pkgdir/usr/lib/xorg/modules/extensions
+ ln -s libglx.so.$pkgver libglx.so
+
+ install -m644 $srcdir/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/LICENSE $pkgdir/usr/share/licenses/nvidia-173xx/
+ ln -s nvidia-173xx $pkgdir/usr/share/licenses/nvidia-173xx-utils
+
+ install -D -m644 $srcdir/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/share/doc/README.txt $pkgdir/usr/share/doc/nvidia-173xx/README
+
+ find $pkgdir/usr -type d -exec chmod 755 {} \;
+
+ # Install xorg.conf.d file for nvidia autodetection in xorg.conf-less configurations
+ install -D -m644 $srcdir/20-nvidia.conf $pkgdir/etc/X11/xorg.conf.d/20-nvidia.conf
+}
diff --git a/abs/not_built/core/nvidia-173xx-utils/nvidia.install b/abs/not_built/core/nvidia-173xx-utils/nvidia.install
new file mode 100644
index 0000000..0a878a7
--- /dev/null
+++ b/abs/not_built/core/nvidia-173xx-utils/nvidia.install
@@ -0,0 +1,6 @@
+post_install() {
+ 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
+}
diff --git a/abs/not_built/core/nvidia-173xx/PKGBUILD b/abs/not_built/core/nvidia-173xx/PKGBUILD
new file mode 100644
index 0000000..5815dce
--- /dev/null
+++ b/abs/not_built/core/nvidia-173xx/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 28363 2009-03-01 00:06:27Z pierre $
+# Maintainer : Thomas Baechler <thomas@archlinux.org>
+
+pkgname=nvidia-173xx
+pkgver=173.14.30
+_kernver='2.6.39-LinHES'
+pkgrel=4
+pkgdesc="NVIDIA drivers for kernel26, 173xx branch."
+arch=('i686' 'x86_64')
+[ "$CARCH" = "i686" ] && ARCH=x86
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+url="http://www.nvidia.com/"
+depends=('kernel26>=2.6.39' 'kernel26<2.6.40' 'nvidia-173xx-utils')
+makedepends=('kernel26-headers>=2.6.39' 'kernel26-headers<2.6.40')
+conflicts=('nvidia-96xx' 'nvidia')
+license=('custom')
+install=nvidia.install
+source=("http://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run")
+options=(!strip)
+md5sums=('665f9f730c18ab24a997e0e14b863262')
+[ "$CARCH" = "x86_64" ] && md5sums=('8c47463ae14a2f742d0fa00160456745')
+
+build() {
+ cd $srcdir
+ 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
+}
+
+package() {
+ cd $srcdir/NVIDIA-Linux-$ARCH-${pkgver}-pkg0/usr/src/nv/
+ mkdir -p $pkgdir/lib/modules/${_kernver}/kernel/drivers/video/
+ install -m644 nvidia.ko $pkgdir/lib/modules/${_kernver}/kernel/drivers/video/
+ mkdir -p $pkgdir/etc/modprobe.d
+ echo "blacklist nouveau" >> $pkgdir/etc/modprobe.d/nouveau_blacklist.conf
+ sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/nvidia.install
+ # gzip -9 module
+ find "$pkgdir" -name '*.ko' -exec gzip -9 {} \;
+}
diff --git a/abs/not_built/core/nvidia-173xx/nvidia.install b/abs/not_built/core/nvidia-173xx/nvidia.install
new file mode 100644
index 0000000..aea2fbb
--- /dev/null
+++ b/abs/not_built/core/nvidia-173xx/nvidia.install
@@ -0,0 +1,14 @@
+post_install() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION
+}
+
+post_upgrade() {
+ post_install
+ rmmod nvidia || echo 'In order to use the new nvidia module, exit Xserver and unload it manually.'
+}
+
+post_remove() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION
+}
diff --git a/abs/not_built/core/nvidia-96xx-utils/PKGBUILD b/abs/not_built/core/nvidia-96xx-utils/PKGBUILD
new file mode 100644
index 0000000..25a6805
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx-utils/PKGBUILD
@@ -0,0 +1,63 @@
+# $Id: PKGBUILD 69361 2010-02-20 11:24:49Z tpowa $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+
+pkgname=nvidia-96xx-utils
+pkgver=96.43.19
+pkgrel=3
+pkgdesc="NVIDIA drivers utilities and libraries, 96xx branch."
+arch=('i686' 'x86_64')
+[ "$CARCH" = "i686" ] && ARCH=x86
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+url="http://www.nvidia.com/"
+depends=('xorg-server')
+optdepends=('gtk2: nvidia-settings' 'pkgconfig: nvidia-xconfig')
+conflicts=('libgl')
+provides=('libgl')
+license=('custom')
+install=nvidia.install
+options=(!strip)
+source=("http://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run")
+md5sums=('53e98129d885a1b004aabc42a989fa73')
+[ "$CARCH" = "x86_64" ] && md5sums=('73e226d4ee0996b6df4bdf44cc1fc6f5')
+
+build() {
+ cd $srcdir
+ sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg0.run --extract-only
+ cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/
+
+ mkdir -p $pkgdir/usr/{lib,bin,share/applications,share/pixmaps,share/man/man1}
+ mkdir -p $pkgdir/usr/lib/xorg/modules/{extensions,drivers}
+ mkdir -p $pkgdir/usr/share/licenses/nvidia-96xx/
+
+ install lib/{libGLcore,libGL,libnvidia-cfg,tls/libnvidia-tls}.so.${pkgver} \
+ $pkgdir/usr/lib/ || return 1
+ install -m644 share/man/man1/* $pkgdir/usr/share/man/man1/ || return 1
+ rm $pkgdir/usr/share/man/man1/nvidia-installer.1.gz || return 1
+ install X11R6/lib/libXv* $pkgdir/usr/lib/ || return 1
+ install -m644 share/applications/nvidia-settings.desktop $pkgdir/usr/share/applications/ || return 1
+ # fix nvidia .desktop file
+ sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $pkgdir/usr/share/applications/nvidia-settings.desktop
+ install -m644 share/pixmaps/nvidia-settings.png $pkgdir/usr/share/pixmaps/ || return 1
+ install X11R6/lib/modules/drivers/nvidia_drv.so $pkgdir/usr/lib/xorg/modules/drivers || return 1
+ install X11R6/lib/modules/extensions/libglx.so.$pkgver $pkgdir/usr/lib/xorg/modules/extensions || return 1
+ install -m755 bin/nvidia-{settings,xconfig,bug-report.sh} $pkgdir/usr/bin/ || return 1
+ cd $pkgdir/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 libXvMCNVIDIA.so.$pkgver libXvMCNVIDIA_dynamic.so.1 || return 1
+
+ cd $pkgdir/usr/lib/xorg/modules/extensions
+ ln -s libglx.so.$pkgver libglx.so || return 1
+
+ install -m644 $srcdir/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/LICENSE $pkgdir/usr/share/licenses/nvidia-96xx/ || return 1
+ ln -s nvidia-96xx $startdir/pkg/usr/share/licenses/nvidia-96xx-utils || return 1
+
+ install -D -m644 $srcdir/NVIDIA-Linux-${ARCH}-${pkgver}-pkg0/usr/share/doc/README.txt $pkgdir/usr/share/doc/nvidia-96xx/README || return 1
+
+ find $pkgdir/usr -type d -exec chmod 755 {} \;
+}
+
+
diff --git a/abs/not_built/core/nvidia-96xx-utils/nvidia.install b/abs/not_built/core/nvidia-96xx-utils/nvidia.install
new file mode 100644
index 0000000..0a878a7
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx-utils/nvidia.install
@@ -0,0 +1,6 @@
+post_install() {
+ 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
+}
diff --git a/abs/not_built/core/nvidia-96xx-utils/supported-cards.txt b/abs/not_built/core/nvidia-96xx-utils/supported-cards.txt
new file mode 100644
index 0000000..d4f26ea
--- /dev/null
+++ b/abs/not_built/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/not_built/core/nvidia-96xx/PKGBUILD b/abs/not_built/core/nvidia-96xx/PKGBUILD
new file mode 100644
index 0000000..ead149d
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id: PKGBUILD 105368 2011-01-08 09:33:32Z tpowa $
+# Maintainer : Thomas Baechler <thomas@archlinux.org>
+
+pkgname=nvidia-96xx
+pkgver=96.43.19
+_kernver='2.6.39-LinHES'
+pkgrel=7
+pkgdesc="NVIDIA drivers for kernel26, 96xx branch."
+arch=('i686' 'x86_64')
+[ "$CARCH" = "i686" ] && ARCH=x86
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+url="http://www.nvidia.com/"
+depends=('kernel26>=2.6.39' 'kernel26<2.6.40' 'nvidia-96xx-utils')
+makedepends=('kernel26-headers>=2.6.39' 'kernel26-headers<2.6.40')
+conflicts=('nvidia' 'nvidia-173xx')
+license=('custom')
+install=nvidia.install
+source=("http://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run"
+ nvidia-legacy-2.6.39.patch)
+
+[ "$CARCH" = "x86_64" ] && md5sums=('7ff779e299b938b880baff6cd970ab51')
+
+build() {
+ cd $srcdir
+ sh NVIDIA-Linux-$ARCH-${pkgver}-pkg0.run --extract-only
+ cd NVIDIA-Linux-$ARCH-${pkgver}-pkg0
+ patch -p0 < ${srcdir}/nvidia-legacy-2.6.39.patch
+ cd usr/src/nv/
+ ln -s Makefile.kbuild Makefile
+ make SYSSRC=/lib/modules/${_kernver}/build module
+
+ mkdir -p $pkgdir/lib/modules/${_kernver}/kernel/drivers/video/
+ install -m644 nvidia.ko $pkgdir/lib/modules/${_kernver}/kernel/drivers/video/
+
+ mkdir -p $pkgdir/etc/modprobe.d
+ echo "blacklist nouveau" >> $pkgdir/etc/modprobe.d/nouveau_blacklist.conf
+ sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/nvidia.install
+}
+md5sums=('53e98129d885a1b004aabc42a989fa73'
+ 'fc1ca585f5c5c3067b0fa283ee44b7c6')
diff --git a/abs/not_built/core/nvidia-96xx/kernel-2.6.36.patch b/abs/not_built/core/nvidia-96xx/kernel-2.6.36.patch
new file mode 100644
index 0000000..6b68385
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx/kernel-2.6.36.patch
@@ -0,0 +1,10 @@
+--- nv.c~ 2010-10-25 23:03:15.976668304 +0200
++++ nv.c 2010-10-25 23:08:12.783334336 +0200
+@@ -249,7 +249,6 @@
+ static struct file_operations nv_fops = {
+ .owner = THIS_MODULE,
+ .poll = nv_kern_poll,
+- .ioctl = nv_kern_ioctl,
+ #if defined(HAVE_UNLOCKED_IOCTL)
+ .unlocked_ioctl = nv_kern_unlocked_ioctl,
+ #endif
diff --git a/abs/not_built/core/nvidia-96xx/nvidia-96.43.11-2.6.30.patch b/abs/not_built/core/nvidia-96xx/nvidia-96.43.11-2.6.30.patch
new file mode 100644
index 0000000..44d44fd
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx/nvidia-96.43.11-2.6.30.patch
@@ -0,0 +1,103 @@
+--- usr/src/nv/nv.c.orig
++++ usr/src/nv/nv.c
+@@ -15,6 +15,7 @@
+ #include "nv_compiler.h"
+ #include "os-agp.h"
+ #include "nv-vm.h"
++#include <linux/version.h>
+
+ #ifdef MODULE_ALIAS_CHARDEV_MAJOR
+ MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER);
+@@ -499,10 +500,12 @@
+ * Set the module owner to ensure that the reference
+ * count reflects accesses to the proc files.
+ */
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ proc_nvidia->owner = THIS_MODULE;
+ proc_nvidia_cards->owner = THIS_MODULE;
+ proc_nvidia_warnings->owner = THIS_MODULE;
+
++#endif
+ for (j = 0; j < num_nv_devices; j++)
+ {
+ nvl = &nv_linux_devices[j];
+@@ -521,7 +524,9 @@
+
+ entry->data = nv;
+ entry->read_proc = nv_kern_read_cardinfo;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+
+ if (nvos_find_agp_capability(dev)) {
+ /*
+@@ -534,7 +539,9 @@
+ goto failed;
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+ proc_nvidia_agp = entry;
+
+ entry = create_proc_entry("status", flags, proc_nvidia_agp);
+@@ -545,7 +552,9 @@
+
+ entry->data = nv;
+ entry->read_proc = nv_kern_read_status;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+
+ entry = create_proc_entry("host-bridge", flags, proc_nvidia_agp);
+ if (!entry) {
+@@ -555,8 +564,9 @@
+
+ entry->data = NULL;
+ entry->read_proc = nv_kern_read_agpinfo;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
+-
++#endif
+ entry = create_proc_entry("card", flags, proc_nvidia_agp);
+ if (!entry) {
+ NV_PCI_DEV_PUT(dev);
+@@ -565,7 +575,9 @@
+
+ entry->data = nv;
+ entry->read_proc = nv_kern_read_agpinfo;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+ }
+
+ NV_PCI_DEV_PUT(dev);
+@@ -576,14 +588,18 @@
+ goto failed;
+
+ entry->read_proc = nv_kern_read_version;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+
+ entry = create_proc_entry("registry", flags, proc_nvidia);
+ if (!entry)
+ goto failed;
+
+ entry->read_proc = nv_kern_read_registry;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+
+ return;
+
+@@ -610,7 +626,9 @@
+
+ entry->data = (void *)message;
+ entry->read_proc = nv_kern_read_warning;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
+ entry->owner = THIS_MODULE;
++#endif
+ #endif
+ }
+
diff --git a/abs/not_built/core/nvidia-96xx/nvidia-legacy-2.6.39.patch b/abs/not_built/core/nvidia-96xx/nvidia-legacy-2.6.39.patch
new file mode 100644
index 0000000..4ee8ba6
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx/nvidia-legacy-2.6.39.patch
@@ -0,0 +1,10 @@
+--- usr/src/nv/nv-linux.h.orig 2010-10-28 04:23:04.000000000 +0200
++++ usr/src/nv/nv-linux.h 2011-05-21 08:58:35.714633248 +0200
+@@ -80,7 +80,6 @@
+ #if !defined(KERNEL_2_4)
+ #include <linux/sched.h> /* suser(), capable() replacement */
+ #include <linux/moduleparam.h> /* module_param() */
+-#include <linux/smp_lock.h> /* kernel_locked */
+ #include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
+ #include <asm/kmap_types.h> /* page table entry lookup */
+ #endif
diff --git a/abs/not_built/core/nvidia-96xx/nvidia.install b/abs/not_built/core/nvidia-96xx/nvidia.install
new file mode 100644
index 0000000..aea2fbb
--- /dev/null
+++ b/abs/not_built/core/nvidia-96xx/nvidia.install
@@ -0,0 +1,14 @@
+post_install() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION
+}
+
+post_upgrade() {
+ post_install
+ rmmod nvidia || echo 'In order to use the new nvidia module, exit Xserver and unload it manually.'
+}
+
+post_remove() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION
+}
diff --git a/abs/not_built/core/perl_modules/perl-class-data-inheritable/PKGBUILD b/abs/not_built/core/perl_modules/perl-class-data-inheritable/PKGBUILD
new file mode 100644
index 0000000..4769533
--- /dev/null
+++ b/abs/not_built/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 <firmicus ατ gmx δοτ net>
+
+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/not_built/core/perl_modules/perl-compress-raw-zlib/PKGBUILD b/abs/not_built/core/perl_modules/perl-compress-raw-zlib/PKGBUILD
new file mode 100644
index 0000000..93782f3
--- /dev/null
+++ b/abs/not_built/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 <knoppmyth@gmail.com>
+
+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/not_built/core/perl_modules/perl-compress-zlib/PKGBUILD b/abs/not_built/core/perl_modules/perl-compress-zlib/PKGBUILD
new file mode 100644
index 0000000..5fb55a7
--- /dev/null
+++ b/abs/not_built/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 <knoppmyth@gmail.com>
+
+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/not_built/core/perl_modules/perl-data-dumper/PKGBUILD b/abs/not_built/core/perl_modules/perl-data-dumper/PKGBUILD
new file mode 100644
index 0000000..6b48a24
--- /dev/null
+++ b/abs/not_built/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 <knoppmyth@gmail.com>
+
+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/not_built/core/perl_modules/perl-devel-stacktrace/PKGBUILD b/abs/not_built/core/perl_modules/perl-devel-stacktrace/PKGBUILD
new file mode 100644
index 0000000..72c89c7
--- /dev/null
+++ b/abs/not_built/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/not_built/core/perl_modules/perl-exception-class/PKGBUILD b/abs/not_built/core/perl_modules/perl-exception-class/PKGBUILD
new file mode 100644
index 0000000..58e1138
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-exception-class/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer: François Charette <firmicus ατ gmx δοτ net>
+
+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/not_built/core/perl_modules/perl-getopt-long/PKGBUILD b/abs/not_built/core/perl_modules/perl-getopt-long/PKGBUILD
new file mode 100644
index 0000000..e167586
--- /dev/null
+++ b/abs/not_built/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 <knoppmyth@gmail.com>
+
+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/not_built/core/perl_modules/perl-getopt-lucid/PKGBUILD b/abs/not_built/core/perl_modules/perl-getopt-lucid/PKGBUILD
new file mode 100644
index 0000000..9905900
--- /dev/null
+++ b/abs/not_built/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/not_built/core/perl_modules/perl-image-imlib2/PKGBUILD b/abs/not_built/core/perl_modules/perl-image-imlib2/PKGBUILD
new file mode 100644
index 0000000..dcb916a
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-image-imlib2/PKGBUILD
@@ -0,0 +1,50 @@
+# CPAN Name : Image-Imlib2
+# Contributor: AUR Perl <aurperl@juster.info>
+# Generator : CPANPLUS::Dist::Arch 1.18
+
+pkgname='perl-image-imlib2'
+pkgver='2.03'
+pkgrel='1'
+pkgdesc="Interface to the Imlib2 image library"
+arch=('i686' 'x86_64')
+license=('PerlArtistic' 'GPL')
+options=('!emptydirs')
+depends=('perl' 'imlib2')
+makedepends=()
+url='http://search.cpan.org/dist/Image-Imlib2'
+source=('http://search.cpan.org/CPAN/authors/id/L/LB/LBROCARD/Image-Imlib2-2.03.tar.gz')
+md5sums=('303b91fae2b863903e41a3cac34fa0d3')
+sha512sums=('d38eba0da1d9fe46244400454f55d2d4d682a7aff78c123c01476c14f30de3fc4699a1f926fc82fea09341f0577f943d82fe73cd40225bc69a06e1c710383d60')
+_distdir="${srcdir}/Image-Imlib2-2.03"
+
+build() {
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \
+ PERL_AUTOINSTALL=--skipdeps \
+ PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \
+ PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \
+ MODULEBUILDRC=/dev/null
+
+ cd "$_distdir"
+ /usr/bin/perl Makefile.PL
+ make
+ )
+}
+
+check() {
+ cd "$_distdir"
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB=""
+ make test
+ )
+}
+
+package() {
+ cd "$_distdir"
+ make install
+ find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+}
+
+# Local Variables:
+# mode: shell-script
+# sh-basic-offset: 2
+# End:
+# vim:set ts=2 sw=2 et:
diff --git a/abs/not_built/core/perl_modules/perl-io-compress-zlib/PKGBUILD b/abs/not_built/core/perl_modules/perl-io-compress-zlib/PKGBUILD
new file mode 100644
index 0000000..9adde18
--- /dev/null
+++ b/abs/not_built/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 <knoppmyth@gmail.com>
+
+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/not_built/core/perl_modules/perl-javascript/PKGBUILD b/abs/not_built/core/perl_modules/perl-javascript/PKGBUILD
new file mode 100644
index 0000000..5be227c
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-javascript/PKGBUILD
@@ -0,0 +1,28 @@
+pkgname=perl-javascript
+pkgver=1.16
+pkgrel=2
+pkgdesc="Perl extension for executing embedded JavaScript"
+depends=('perl>=5.10.0' 'glibc' 'perl-test-exception' 'js<=1:1.7.0' 'xulrunner' 'nspr')
+license=('GPL' 'PerlArtistic')
+url="http://search.cpan.org/dist/JavaScript/"
+source=(http://search.cpan.org/CPAN/authors/id/C/CL/CLAESJAC/JavaScript-$pkgver.tar.gz)
+options=('!emptydirs')
+arch=(i686 x86_64)
+
+build()
+{
+ cd ${srcdir}/JavaScript-$pkgver
+
+ # dirty hack to pass the correct includes to the script
+ export JS_THREADSAFE=1 JS_UTF8=1 JS_ENABLE_E4X=1 JS_INC="/usr/include/js -I/usr/include/xulrunner-1.9.2 -I/usr/include/nspr"
+ perl Makefile.PL INSTALLDIRS=vendor || return 1
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+
+ # Remove .packlist and perllocal.pod files.
+ find ${pkgdir} -name '.packlist' -delete
+ find ${pkgdir} -name 'perllocal.pod' -delete
+
+}
+
+md5sums=('c3c4a744e0a5018b94f53341baa18df7')
diff --git a/abs/not_built/core/perl_modules/perl-lingua-en-numbers/PKGBUILD b/abs/not_built/core/perl_modules/perl-lingua-en-numbers/PKGBUILD
new file mode 100644
index 0000000..c7563cf
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-lingua-en-numbers/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 73857 2012-07-16 05:44:00Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Allan McRae <mcrae_allan@hotmail.com>
+# Contributor: François Charette <firmicus ατ gmx δοτ net>
+
+pkgname=perl-lingua-en-numbers
+pkgver=1.04
+pkgrel=1
+pkgdesc="Turn 407 into four hundred and seven, etc."
+arch=('any')
+url="http://search.cpan.org/dist/Lingua-EN-Numbers"
+license=('GPL' 'PerlArtistic')
+depends=('perl>=5.10.0')
+options=('!emptydirs')
+source=(http://search.cpan.org/CPAN/authors/id/N/NE/NEILB/Lingua-EN-Numbers-$pkgver.tar.gz)
+md5sums=('6b3d8ea645b37ee29b37388caa01b0f3')
+
+build() {
+ cd $srcdir/Lingua-EN-Numbers-$pkgver
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+ make install DESTDIR=$pkgdir
+ find $pkgdir -name '.packlist' -delete
+ find $pkgdir -name '*.pod' -delete
+}
diff --git a/abs/not_built/core/perl_modules/perl-list-member/PKGBUILD b/abs/not_built/core/perl_modules/perl-list-member/PKGBUILD
new file mode 100644
index 0000000..d944a68
--- /dev/null
+++ b/abs/not_built/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/not_built/core/perl_modules/perl-log-log4perl/PKGBUILD b/abs/not_built/core/perl_modules/perl-log-log4perl/PKGBUILD
new file mode 100644
index 0000000..73d125d
--- /dev/null
+++ b/abs/not_built/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 <firmicus ατ gmx δοτ net>
+
+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/not_built/core/perl_modules/perl-mime-parser/PKGBUILD b/abs/not_built/core/perl_modules/perl-mime-parser/PKGBUILD
new file mode 100644
index 0000000..c8adc5d
--- /dev/null
+++ b/abs/not_built/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/not_built/core/perl_modules/perl-parse-yapp/PKGBUILD b/abs/not_built/core/perl_modules/perl-parse-yapp/PKGBUILD
new file mode 100644
index 0000000..82d27db
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-parse-yapp/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+# Maintainer: Cecil H. Watson <knoppmyth@gmail.com>
+
+pkgname=perl-parse-yapp
+_realname=Parse-Yapp
+pkgver=1.05
+pkgrel=1
+pkgdesc="Parse::Yapp - Perl extension for generating and using LALR parsers."
+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/F/FD/FDESAR/${_realname}-${pkgver}.tar.gz)
+md5sums=('7bfca736d6af36c51edf7a97111a8f3b')
+
+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/not_built/core/perl_modules/perl-pathtools/PKGBUILD b/abs/not_built/core/perl_modules/perl-pathtools/PKGBUILD
new file mode 100644
index 0000000..a88a231
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-pathtools/PKGBUILD
@@ -0,0 +1,23 @@
+
+pkgname=perl-pathtools
+pkgver=3.33
+pkgrel=1
+pkgdesc="Current working directory (CWD) and File::Spec perl modules"
+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
+}
+
+md5sums=('92f0df032c399fadef2e2e647ebc3111')
diff --git a/abs/not_built/core/perl_modules/perl-pathtools/license.txt b/abs/not_built/core/perl_modules/perl-pathtools/license.txt
new file mode 100644
index 0000000..508353d
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-pathtools/license.txt
@@ -0,0 +1,6 @@
+"THE BEER-WARE LICENSE" (Revision 42):
+<phk@login.dknet.dk> 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/not_built/core/perl_modules/perl-proc-processtable/PKGBUILD b/abs/not_built/core/perl_modules/perl-proc-processtable/PKGBUILD
new file mode 100644
index 0000000..51ee46b
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-proc-processtable/PKGBUILD
@@ -0,0 +1,31 @@
+# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
+# Contributor: yugrotavele <yugrotavele at archlinux dot us>
+
+pkgname=perl-proc-processtable
+pkgver=0.45
+pkgrel=2
+pkgdesc="Provides a consistent interface to process table information."
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/dist/Proc-ProcessTable/"
+license=('PerlArtistic')
+depends=('perl')
+provides=('perl-proc-killall=1.0.0' 'perl-proc-killfam=1.0.0' 'perl-proc-processtable-process=0.20.0')
+options=(!emptydirs)
+source=("http://search.cpan.org/CPAN/authors/id/D/DU/DURIST/Proc-ProcessTable-$pkgver.tar.gz")
+md5sums=('4481495d639c314f57e6d9d25f23c88e')
+
+build() {
+ cd $srcdir/Proc-ProcessTable-$pkgver
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+package() {
+ cd $srcdir/Proc-ProcessTable-$pkgver
+
+ make install DESTDIR="${pkgdir}"
+ find ${pkgdir} -name perllocal.pod -delete
+ find ${pkgdir} -name .packlist -delete
+}
+
diff --git a/abs/not_built/core/perl_modules/perl-text-bidi/PKGBUILD b/abs/not_built/core/perl_modules/perl-text-bidi/PKGBUILD
new file mode 100644
index 0000000..e667f5e
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-text-bidi/PKGBUILD
@@ -0,0 +1,23 @@
+# Maintainer: Allan McRae <mcrae_allan@hotmail.com>
+# Contributor: François Charette <firmicus ατ gmx δοτ net>
+
+pkgname=perl-text-bidi
+pkgver=0.03
+pkgrel=3
+pkgdesc="Unicode bidi algorithm-libfribidi interface"
+arch=('i686' 'x86_64')
+url="http://search.cpan.org/~KAMENSKY/Text-Bidi"
+license=('GPL' 'PerlArtistic')
+depends=('perl>=5.10.0' 'fribidi')
+options=('!emptydirs')
+source=(http://www.cpan.org/authors/id/K/KA/KAMENSKY/Text-Bidi-$pkgver.tar.gz)
+md5sums=('93e124628ff2983e32ac478f25f8d627')
+
+build() {
+ cd $startdir/src/Text-Bidi-$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/not_built/core/perl_modules/perl-text-kakasi/PKGBUILD b/abs/not_built/core/perl_modules/perl-text-kakasi/PKGBUILD
new file mode 100644
index 0000000..1954f8a
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-text-kakasi/PKGBUILD
@@ -0,0 +1,23 @@
+# Maintainer: Allan McRae <mcrae_allan@hotmail.com>
+# Contributor: François Charette <firmicus ατ gmx δοτ net>
+
+pkgname=perl-text-kakasi
+pkgver=2.04
+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')
+options=('!emptydirs')
+source=(http://www.cpan.org/authors/id/D/DA/DANKOGAI/Text-Kakasi-$pkgver.tar.gz)
+md5sums=('5a9e381cb93edfd707124a63c60f96b1')
+
+build() {
+ cd $startdir/src/Text-Kakasi-$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/not_built/core/perl_modules/perl-time-format/PKGBUILD b/abs/not_built/core/perl_modules/perl-time-format/PKGBUILD
new file mode 100644
index 0000000..40a2ae2
--- /dev/null
+++ b/abs/not_built/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 <cmauch@gmail.com>
+
+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/not_built/core/perl_modules/perl-x-osd/PKGBUILD b/abs/not_built/core/perl_modules/perl-x-osd/PKGBUILD
new file mode 100644
index 0000000..771079b
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-x-osd/PKGBUILD
@@ -0,0 +1,32 @@
+# Contributor: 3ED <krzysztof1987 at gmail dot com>
+#
+pkgname='perl-x-osd'
+_lastauthor="G/GO/GOZER"
+_pkgname='X-Osd'
+pkgver='0.7'
+pkgrel='2'
+pkgdesc="Perl extension to the X On Screen Display library (xosd)"
+arch=('i686' 'x86_64')
+license=('PerlArtistic' 'GPL')
+options=('!emptydirs')
+depends=('perl' 'xosd')
+url='http://search.cpan.org/dist/X-Osd/'
+source=(http://search.cpan.org/CPAN/authors/id/${_lastauthor}/${_pkgname}-${pkgver}.tar.gz)
+sha256sums=('e3bafe11cd51ad9b1e3d1df18516f9bb1ba462f981483b922f2b627b08190391')
+
+build() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+ export PERL_MM_USE_DEFAULT=1
+ export PERL_AUTOINSTALL='--skipdeps'
+ perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+check() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+ make test
+}
+package() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+ find "${pkgdir}" -name .packlist -o -name perllocal.pod -delete
+}
diff --git a/abs/not_built/core/perl_modules/perl-xml-xql/PKGBUILD b/abs/not_built/core/perl_modules/perl-xml-xql/PKGBUILD
new file mode 100755
index 0000000..34757a3
--- /dev/null
+++ b/abs/not_built/core/perl_modules/perl-xml-xql/PKGBUILD
@@ -0,0 +1,34 @@
+# Contributor: ndlarsen <ndlarsen@gmail.com>
+# Comment: Based on PKGBUILDs from the perlcpan repo by Charles Mauch <cmauch@gmail.com>
+
+pkgname=perl-xml-xql
+pkgver=0.68
+pkgrel=1
+pkgdesc="A perl module for querying XML tree structures with XQL"
+arch=('i686')
+url="http://search.cpan.org/dist/XML-XQL/lib/XML/XQL.pm"
+license=('GPL Artistic')
+depends=('perl-parse-yapp' 'perl-xml-dom' 'perl-xml-parser' 'perl-date-manip')
+makedepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+groups=()
+options=(docs !emptydirs)
+install=
+noextract=()
+source=(http://search.cpan.org/CPAN/authors/id/T/TJ/TJMATHER/XML-XQL-$pkgver.tar.gz)
+md5sums=('bb84096fdf8bcc96a35971539ce8c19e')
+
+build() {
+
+ cd $startdir/src/XML-XQL-$pkgver
+ /usr/bin/perl Makefile.PL INSTALLDIRS=vendor MAN1ext=1p MAN3EXT=3pm
+ 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 '{}' \;
+
+}
+# $Id$ \ No newline at end of file
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/all-wcprops b/abs/not_built/core/plextor-convertX-driver/.svn/all-wcprops
new file mode 100644
index 0000000..a9a4baa
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/all-wcprops
@@ -0,0 +1,29 @@
+K 25
+svn:wc:ra_dav:version-url
+V 68
+/svn/MythVantage/!svn/ver/3/trunk/multimedia/plextor-convertX-driver
+END
+download.php?id=9719
+K 25
+svn:wc:ra_dav:version-url
+V 91
+/svn/MythVantage/!svn/ver/3/trunk/multimedia/plextor-convertX-driver/download.php%3Fid=9719
+END
+PKGBUILD
+K 25
+svn:wc:ra_dav:version-url
+V 77
+/svn/MythVantage/!svn/ver/3/trunk/multimedia/plextor-convertX-driver/PKGBUILD
+END
+wis-go-0.9.8-2.6.17.patch
+K 25
+svn:wc:ra_dav:version-url
+V 94
+/svn/MythVantage/!svn/ver/3/trunk/multimedia/plextor-convertX-driver/wis-go-0.9.8-2.6.17.patch
+END
+convertX.install
+K 25
+svn:wc:ra_dav:version-url
+V 85
+/svn/MythVantage/!svn/ver/3/trunk/multimedia/plextor-convertX-driver/convertX.install
+END
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/entries b/abs/not_built/core/plextor-convertX-driver/.svn/entries
new file mode 100644
index 0000000..24668fc
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/entries
@@ -0,0 +1,95 @@
+8
+
+dir
+26
+http://www.mythvantage.com/svn/MythVantage/trunk/multimedia/plextor-convertX-driver
+http://www.mythvantage.com/svn/MythVantage
+
+
+
+2008-08-11T22:07:32.420645Z
+3
+jams
+
+
+svn:special svn:externals svn:needs-lock
+
+
+
+
+
+
+
+
+
+
+
+aa4607db-271d-489d-aa74-f9b36e0b8801
+
+download.php?id=9719
+file
+
+
+
+
+2008-08-23T20:50:13.000000Z
+046fc285320714abb64ca8d699d5daad
+2008-08-11T22:07:32.420645Z
+3
+jams
+has-props
+
+PKGBUILD
+file
+
+
+
+
+2008-08-23T20:50:13.000000Z
+1a918566d44b59443786bfc0dc425bf8
+2008-08-11T22:07:32.420645Z
+3
+jams
+has-props
+
+install
+dir
+
+lib
+dir
+
+wis-go-0.9.8-2.6.17.patch
+file
+
+
+
+
+2008-08-23T20:50:13.000000Z
+83d3108be840a45871c195a25c4de4ca
+2008-08-11T22:07:32.420645Z
+3
+jams
+has-props
+
+usr
+dir
+
+etc
+dir
+
+slack
+dir
+
+convertX.install
+file
+
+
+
+
+2008-08-23T20:50:13.000000Z
+3f2eb8d111d0b1b43b4c53852610f4ec
+2008-08-11T22:07:32.420645Z
+3
+jams
+has-props
+
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/format b/abs/not_built/core/plextor-convertX-driver/.svn/format
new file mode 100644
index 0000000..45a4fb7
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/format
@@ -0,0 +1 @@
+8
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/PKGBUILD.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/PKGBUILD.svn-base
new file mode 100644
index 0000000..869ac71
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/PKGBUILD.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/convertX.install.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/convertX.install.svn-base
new file mode 100644
index 0000000..869ac71
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/convertX.install.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/download.php?id=9719.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/download.php?id=9719.svn-base
new file mode 100644
index 0000000..869ac71
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/download.php?id=9719.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/wis-go-0.9.8-2.6.17.patch.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/wis-go-0.9.8-2.6.17.patch.svn-base
new file mode 100644
index 0000000..869ac71
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/prop-base/wis-go-0.9.8-2.6.17.patch.svn-base
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/text-base/PKGBUILD.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/PKGBUILD.svn-base
new file mode 100644
index 0000000..1711062
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/PKGBUILD.svn-base
@@ -0,0 +1,31 @@
+
+
+pkgname=plextor-convertX-driver
+pkgver=0.9.8
+pkgrel=3
+_kernver=2.6.17-STB
+pkgdesc="ivtv - Drivers for many types of PVR cards"
+arch=(i686 x86_64)
+url="http://ivtvdriver.org"
+install="convertX.install"
+source=("http://oss.wischip.com/wis-go7007-linux-$pkgver.tar.bz2" "wis-go-0.9.8-2.6.17.patch")
+depends=(gcc 'udev>=070' 'fxload')
+
+
+build() {
+
+ # SET UP
+ patch -p0 < wis-go-0.9.8-2.6.17.patch
+ cd $startdir/src/wis-go7007-linux-0.9.8|| 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
+ # install
+ make DESTDIR=$startdir/pkg install || return 1
+ install -m755 apps/gorecord $startdir/pkg/usr/bin/gorecord
+ install -m755 apps/modet $startdir/pkg/usr/bin/modet
+}
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/text-base/convertX.install.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/convertX.install.svn-base
new file mode 100644
index 0000000..8dfd0b7
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/convertX.install.svn-base
@@ -0,0 +1,31 @@
+pre_install() {
+ /bin/true
+}
+
+post_install() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ KERNEL_VERSION=2.6.17-STB
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ /bin/true
+}
+
+post_upgrade() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ KERNEL_VERSION=2.6.17-STB
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ /bin/true
+}
+
+post_remove() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ KERNEL_VERSION=2.6.17-STB
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ /bin/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/text-base/download.php?id=9719.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/download.php?id=9719.svn-base
new file mode 100644
index 0000000..516608c
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/download.php?id=9719.svn-base
@@ -0,0 +1,460 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+
+<head>
+<title>LinuxPackages: Download Package</title>
+<meta name="Generator" content="PHP and good ole hand coded html">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="Author" content="{TG,robalo} at linuxpackages.net, {pimo,trotter} at opensys.ro">
+<meta name="Description" content="Slackware resources to help install and configure the Linux slackware distribution, Email list, Discussion Board, Howtos, Contributed packages, and much more">
+<meta name="Keywords" content="Linux Packages, Slackware, Linux, Help, Install, HOWTO, Sendmail, Slackbuilds, Software, News, ISDN, Security, Apache, Vhosting, Links, DNS, Sendmail, packages, programs">
+<link rel="alternate" type="application/rss+xml" title="Latest Packages RSS"
+ href="http://www.linuxpackages.net/backend/linuxpackages.rdf" />
+
+<link rel="stylesheet" href="lpstyle.css">
+<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
+ <!--
+ function open_window(url) {
+ var NEW_WIN = null;
+ NEW_WIN = window.open ("", "RecordViewer", "toolbar=no,width="+600+",height="+400+",directories=no,status=no,scrollbars=yes,resize=no,menubar=no");
+ NEW_WIN.location.href = url;
+ }
+ //-->
+ </SCRIPT>
+
+</head>
+<body bgcolor="#006699" text="#000000" link="#4b6d96" vlink="#4b6d96" alink="" marginwidth="0" marginheight="0" leftmargin="0" rightmargin="0" topmargin="0">
+<!-- <body bgcolor="" text="" link="" vlink="" alink="" marginwidth="0" marginheight="0" leftmargin="0" rightmargin="0" topmargin="0"> -->
+
+<table width="100%" cellpadding="10" cellspacing="0" border="0">
+<tr bgcolor="#FF9966"><form method="get" action="http://www.linuxpackages.net/search_view.php">
+<input type="hidden" name="by" value="name">
+<td width="265" align=right>
+<img src="/images/newlogo.gif" alt="LinuxPackages.net" width="265" height="43" border="0"></a><br>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="265" height="5" border="0"><br>
+&nbsp;<font color="#000000">SearchPkg:</font>
+<input name="name" type="text" size="12" value="">
+<select name="ver">
+<option value="11.0" >v11.0</option>
+<option value="10.2" >v10.2</option>
+<option value="10.1" >v10.1</option>
+<option value="10.0" >v10.0</option>
+<option value="9.1" >v9.1</option>
+<option value="9.0" >v9.0</option>
+<option value="8.1" >v8.1</option>
+<option value="8.0" >v8.0</option>
+<option value="" >any</option>
+</select>
+<input type="submit" value="Go">
+</td></form>
+<td width="468">
+<script language='JavaScript' type='text/javascript'>
+<!--
+ if (!document.phpAds_used) document.phpAds_used = ',';
+ phpAds_random = new String (Math.random()); phpAds_random = phpAds_random.substring(2,11);
+
+ document.write ("<" + "script language='JavaScript' type='text/javascript' src='");
+ document.write ("http://www.linuxpackages.net/adserv/adjs.php?n=" + phpAds_random);
+ document.write ("&amp;what=zone:5");
+ document.write ("&amp;exclude=" + document.phpAds_used);
+ if (document.referer)
+ document.write ("&amp;referer=" + escape(document.referer));
+ document.write ("'><" + "/script>");
+//-->
+</script><noscript><a href='http://www.linuxpackages.net/adserv/adclick.php?n=a1cec3e8'
+target='_blank'><img src='http://www.linuxpackages.net/adserv/adview.php?what=zone:5&amp;n=a1cec3e8'
+border='0' alt=''></a></noscript>
+<br>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="468" height="1" border="0"><br>
+</td><td width="100%">
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="60" border="0"><br>
+</td></tr>
+</table>
+
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#ffffff"><td width="100%">
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="1" border="0"><br>
+</td></tr>
+<tr bgcolor="#004263"><td align="center">
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="2" border="0"><br>
+<font color="#FF9966">
+<a href="http://www.linuxpackages.net/catalog" class="barlink">LP Store</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp<a href="http://www.linuxpackages.net/" class="barlink">Home</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.linuxpackages.net/about.php" class="barlink">About</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.linuxpackages.net/forum" class="barlink">Forums</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.linuxpackages.net/site-links" class="barlink">Links</a>&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.linuxpackages.net/packages.php" class="barlink">Packages</a>
+</font><br>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="3" border="0"><br>
+</td></tr>
+</table>
+
+<img src="http://www.linuxpackages.net/images/dot.gif" width="760" height="2" border="0"><br>
+<table width="100%" cellpadding="0" cellspacing="10" border="0"><tr>
+<td width="25%" valign="top">
+<!-- start left column -->
+
+<!--table header-->
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr><td bgcolor="#FF9966">
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#006699"><td width="100%" align="center">
+<b><font color="#ffffff">
+Information
+</font></b>
+</td><td width="5">
+<img src="http://www.linuxpackages.net/images/corner.gif" width="5" height="19" border="0"><br>
+</td></tr></table>
+</td></tr></table>
+<!--//table header//-->
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="3" border="0"><br>
+
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr bgcolor="#000000"><td>
+<table width="100%" cellpadding="5" cellspacing="0" border="0">
+<tr bgcolor="#FFFFFF"><td width="100%">
+<font color="#000000">
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/catalog">LP Store</a><br>
+
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/about.php">About this Site</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/packages.php">Packages</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/forum">Slackware</a><small><sup>&reg;</sup></small><a href="http://www.linuxpackages.net/forum"> Forums</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/faq">Slackware FAQ</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/howto.php">Slackware Documents </a><small>(<i>Updated</i>)</small><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://slackart.linuxpackages.net">Slackware Art </a><br>
+
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/howto.php?page=package&title=Package+Howto">Building Packages</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/howto.php?page=buildtools&title=Package+Tools">Package Tools</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/howto.php?page=perfect-package&title=Perfect+Package">The Perfect package</a><small>(<i>Updated</i>)</small><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/howto.php?page=contrib&title=Contribute">Submitting a Package</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/changelog.php">Slackware Changelog</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www2.linuxpackages.net/packages/SlackBuilds/">Build Script Archive</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/topcontrib.php">Top Contributors</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/mirrors.php">Mirror Status/Info</a><br>
+</font>
+</td></tr></table>
+</td></tr></table>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="10" border="0"><br>
+<!--table header-->
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr><td bgcolor="#FF9966">
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#006699"><td width="100%" align="center">
+<span class="module">Top 10 Downloads</span>
+</td><td width="5">
+<img src="http://www.linuxpackages.net/images/corner.gif" width="5" height="19" border="0"><br>
+</td></tr></table>
+</td></tr></table>
+<!--//table header//-->
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="3" border="0"><br>
+
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr bgcolor="#000000"><td>
+<table width="100%" cellpadding="5" cellspacing="0" border="0">
+<tr bgcolor="#dfdfdf"><td>
+<b>Packages</b><br>
+</td><td align=right>
+<b>Hits</b><br>
+</td></tr>
+<tr bgcolor="#FFFFFF"><td width="100%" colspan=2>
+<table width="100%" border=0 cellspacing=2 cellpadding=0>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=7951">OpenOffice.org 2.0.3</a><br>
+</td><td align=right>
+<b>18540</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=760">Wine 0.9.7</a><br>
+</td><td align=right>
+<b>15526</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=5982">xmmsskins 1.0</a><br>
+</td><td align=right>
+<b>13202</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=7608">K3b 0.12.17</a><br>
+</td><td align=right>
+<b>11383</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=8096">openoffice.org 2.0ptBR</a><br>
+</td><td align=right>
+<b>10492</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=8352">libdvdcss 1.2.9</a><br>
+</td><td align=right>
+<b>8839</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=7419">slapt-get 0.9.11e</a><br>
+</td><td align=right>
+<b>5652</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=7528">Freerock-Gnome 2.12.1</a><br>
+</td><td align=right>
+<b>4978</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=8105">Frozen-Bubble 1.0.0</a><br>
+</td><td align=right>
+<b>3906</b>
+</td></tr>
+<tr valign=top><td>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.linuxpackages.net/pkg_details.php?id=7926">k3b 0.12.16</a><br>
+</td><td align=right>
+<b>3630</b>
+</td></tr>
+</table>
+
+</td></tr></table>
+</td></tr></table>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="10" border="0"><br>
+
+<!--table header-->
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr><td bgcolor="#FF9966">
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#006699"><td width="100%" align="center">
+<b><font color="#ffffff">
+Email List
+</font></b>
+</td><td width="5">
+<img src="http://www.linuxpackages.net/images/corner.gif" width="5" height="19" border="0"><br>
+</td></tr></table>
+</td></tr></table>
+<!--//table header//-->
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="3" border="0"><br>
+
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr bgcolor="#000000"><td>
+<table width="100%" cellpadding="5" cellspacing="0" border="0">
+<tr bgcolor="#FFFFFF"><td width="100%" align=center>
+Subscribe to LinuxPackages Package annoucements to get updated when new packages or updates are posted.<br>
+<a href=/mailman/listinfo/pkg-annc>Click here to subscribe</a><br><br>
+</td></tr></table>
+</td></tr></table>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="10" border="0"><br>
+<!--table header-->
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr><td bgcolor="#FF9966">
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#006699"><td width="100%" align="center">
+<span class="module">Quick Links</span>
+</td><td width="5">
+<img src="http://www.linuxpackages.net/images/corner.gif" width="5" height="19" border="0"><br>
+</td></tr></table>
+</td></tr></table>
+<!--//table header//-->
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="3" border="0"><br>
+
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr bgcolor="#000000"><td>
+<table width="100%" cellpadding="5" cellspacing="0" border="0">
+<tr bgcolor="#FFFFFF"><td width="100%">
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.slackware.com" target=_blank>Slackware.com</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://muse.linuxmafia.org" target=_blank>GShield Firewall</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.satlug.org" target=_blank>SATLUG</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://swaret.sourceforge.net/index.php" target=_blank>Swaret</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.abnormalpenguin.com/slackware-mirrors.php" target=_blank>Slack Mirrors List</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://software.jaos.org/" target=_blank>Slapt-Get</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.darklinux.net/slackupdate/" target=_blank>SlackUpdate</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://www.mutagenix.org/" target=_blank>Mutagenix</a><br>
+<img src="/images/bullet.gif" border=0 align=middle> <a href="http://gsb.freerock.org" target=_blank>FreeRock Gnome</a><br>
+</td></tr></table>
+</td></tr></table>
+<!--//end left column//-->
+</td>
+<td width="75%" valign="top">
+<!-- start middle column -->
+
+<!--table header-->
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr><td bgcolor="#FF9966">
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#006699"><td width="100%" align="center">
+<b><font color="#ffffff">
+You are requesting file: wisgo7007sb-0.9.8-i486-1bif.tgz<br>
+Please select a mirror</font>
+</b>
+</td><td width="5">
+<img src="http://www.linuxpackages.net/images/corner.gif" width="5" height="19" border="0"><br>
+</td></tr></table>
+</td></tr></table>
+<!--//table header//-->
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="3" border="0"><br>
+
+<table width="100%" cellpadding="1" cellspacing="0" border="0">
+<tr bgcolor="#000000"><td>
+<table width="100%" cellpadding="5" cellspacing="0" border="0">
+<tr bgcolor="#FFFFFF"><td width="100%">
+<table align="center" width="90%" bgcolor="#ffffff" cellpadding="0"
+cellspacing="0" border="0">
+<tbody>
+<tr>
+<td align="center" colspan="2">
+<table width="100%" cellpadding="1" cellspacing="1" border="0">
+<tbody>
+<tr>
+<th>
+</th>
+<th>Host<br></th>
+<th>Location<br>
+</th>
+<th>Continent<br>
+</th>
+<th>Download<br>
+</th>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.rol.ru/ target=_blank><img alt=Rol border="0"
+src=images/rol-logo-sm.gif width="100" height="41"></a></td>
+<td align="center">Rol</td>
+<td align="center">Moscow</td>
+<td align="center">Russia</td>
+<td align="center">
+<a href=http://slackware.rol.ru/linuxpackages//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.reco-systems.de target=_blank><img alt=ReCo-Systems border="0"
+src=/images/logo_small.png width="100" height="41"></a></td>
+<td align="center">ReCo-Systems</td>
+<td align="center">Hannover Germany</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://linuxpackages.reco-systems.de//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://linuxpackages.reco-systems.de//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.slackware.hu target=_blank><img alt=Szombathely Linux Association border="0"
+src=/images/szle.jpg width="100" height="41"></a></td>
+<td align="center">Szombathely Linux Association</td>
+<td align="center">Hungary</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=ftp://ftp.slackware.hu/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.nymphomatic.org target=_blank><img alt=IEEE Student Branch border="0"
+src=images/evo.gif width="100" height="41"></a></td>
+<td align="center">IEEE Student Branch</td>
+<td align="center">Croatia</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://www.nymphomatic.org/mirror/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://ftp.nymphomatic.org/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.cgu.edu.tw target=_blank><img alt=Chang-Gung University border="0"
+src=images/cgu.png width="100" height="41"></a></td>
+<td align="center">Chang-Gung University</td>
+<td align="center">Taiwan</td>
+<td align="center">Asia</td>
+<td align="center">
+<a href=http://linuxpackages.cgucccc.org/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.software-mirror.com target=_blank><img alt=Software Mirror border="0"
+src=/images/sfmirror.gif width="100" height="41"></a></td>
+<td align="center">Software Mirror</td>
+<td align="center">Colorado</td>
+<td align="center">USA</td>
+<td align="center">
+<a href=http://www.software-mirror.com/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.inode.at target=_blank><img alt=Inode.at border="0"
+src=/images/inode.jpg width="100" height="41"></a></td>
+<td align="center">Inode.at</td>
+<td align="center">Austria</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://linuxpackages.inode.at/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://linuxpackages.inode.at/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.nyi.net target=_blank><img alt=NYI New York Internet border="0"
+src=/images/nyilogo.jpg width="100" height="41"></a></td>
+<td align="center">NYI New York Internet</td>
+<td align="center">New York USA</td>
+<td align="center">USA</td>
+<td align="center">
+<a href=http://www2.linuxpackages.net/packages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://ftp3.linuxpackages.net/pub/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.scarlet.be target=_blank><img alt=Scarlet.be border="0"
+src=/images/scarlet_lp.gif width="100" height="41"></a></td>
+<td align="center">Scarlet.be</td>
+<td align="center">Belgium</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://ftp.scarlet.be/pub/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://ftp.scarlet.be/pub/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.opensys.ro target=_blank><img alt=Open Systems border="0"
+src=/images/logoopensys.jpg width="100" height="41"></a></td>
+<td align="center">Open Systems</td>
+<td align="center">Romania</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://opensys.linuxpackages.net/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://opensys.linuxpackages.net/pub/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.telecoms.bg target=_blank><img alt=Telecoms border="0"
+src=images/evo.gif width="100" height="41"></a></td>
+<td align="center">Telecoms</td>
+<td align="center">Varna Bulgaria</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://linuxpackages.telecoms.bg/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://linuxpackages.telecoms.bg/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.naist.jp/ target=_blank><img alt=Naist border="0"
+src=/images/naist.png width="100" height="41"></a></td>
+<td align="center">Naist</td>
+<td align="center">Japan</td>
+<td align="center">Asia</td>
+<td align="center">
+<a href=http://ftp.naist.jp/pub/Linux/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://ftp.nara.wide.ad.jp/pub/Linux/linuxpackages/Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://mirrors.unixsol.org/ target=_blank><img alt=Unixsol border="0"
+src=/images/unixsol.png width="100" height="41"></a></td>
+<td align="center">Unixsol</td>
+<td align="center">Sofia Bulgaria</td>
+<td align="center">Europe</td>
+<td align="center">
+<a href=http://mirrors.unixsol.org/linuxpackages//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://mirrors.unixsol.org/linuxpackages//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+<tr bgcolor="#dddddd">
+<td align="center"><a href=http://www.cs.utah.edu/ target=_blank><img alt=University of Utah border="0"
+src=images/UUSC.png width="100" height="41"></a></td>
+<td align="center">University of Utah</td>
+<td align="center">Utah</td>
+<td align="center">USA</td>
+<td align="center">
+<a href=http://linuxpackages.cs.utah.edu//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>HTTP</a>&nbsp;&nbsp; <a href=ftp://mirror.cs.utah.edu/pub/linuxpackages//Slackware-11.0/Console/GO7007-Linux-Driver/wisgo7007sb-0.9.8-i486-1bif.tgz>FTP</a> </td>
+</tr>
+</tbody>
+</table>
+</td>
+</tr>
+</tbody>
+</table>
+<br><center>Not all mirrors may be updated right away with new packages.</center>
+</td></tr></table>
+</td></tr></table>
+<!--//end middle column//-->
+</td>
+</tr></table>
+
+<table width="100%" cellpadding="0" cellspacing="0" border="0">
+<tr bgcolor="#ffffff"><td width="100%">
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="1" border="0"><br>
+</td></tr>
+<tr bgcolor="#FF9966"><td align=center>
+<br>Copyright &copy;1997-2004 LinuxPackages Network. All rights reserved.<br>
+Slackware is a registered trademark of Patrick Volkerding and Slackware Linux, Inc.<br>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="5" border="0"><br>
+<a href="http://www.linuxpackages.net/advertise.php">Advertising</a> - <a href="http://www.linuxpackages.net/catalog/privacy.php">Privacy Statement</a> - Terms of Use - Build: 2002071201<br>
+<a href=http://www.nyi.net>FTP Hosting provided by The New York Internet Company</a><br>
+<img src="http://www.linuxpackages.net/images/dot.gif" width="1" height="10" border="0"><br>
+</td></tr>
+</table>
+</body>
+</html>
diff --git a/abs/not_built/core/plextor-convertX-driver/.svn/text-base/wis-go-0.9.8-2.6.17.patch.svn-base b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/wis-go-0.9.8-2.6.17.patch.svn-base
new file mode 100644
index 0000000..694a2f6
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/.svn/text-base/wis-go-0.9.8-2.6.17.patch.svn-base
@@ -0,0 +1,76 @@
+diff -ur wis-go7007-linux-0.9.8/kernel/go7007-usb.c wis-go7007-linux-0.9.8-new/kernel/go7007-usb.c
+--- wis-go7007-linux-0.9.8/kernel/go7007-usb.c 2006-04-02 00:57:04.000000000 +0200
++++ wis-go7007-linux-0.9.8-new/kernel/go7007-usb.c 2006-04-03 12:58:44.000000000 +0200
+@@ -27,7 +27,7 @@
+ #include <linux/usb.h>
+ #include <linux/i2c.h>
+ #include <asm/byteorder.h>
+-#include <media/audiochip.h>
++#include <media/tvaudio.h>
+
+ #include "go7007-priv.h"
+ #include "wis-i2c.h"
+@@ -225,17 +225,17 @@
+ .inputs = {
+ {
+ .video_input = 1,
+- .audio_input = AUDIO_EXTERN,
++ .audio_input = TVAUDIO_INPUT_EXTERN,
+ .name = "Composite",
+ },
+ {
+ .video_input = 8,
+- .audio_input = AUDIO_EXTERN,
++ .audio_input = TVAUDIO_INPUT_EXTERN,
+ .name = "S-Video",
+ },
+ {
+ .video_input = 3,
+- .audio_input = AUDIO_TUNER,
++ .audio_input = TVAUDIO_INPUT_TUNER,
+ .name = "Tuner",
+ },
+ },
+diff -ur wis-go7007-linux-0.9.8/kernel/go7007-v4l2.c wis-go7007-linux-0.9.8-new/kernel/go7007-v4l2.c
+--- wis-go7007-linux-0.9.8/kernel/go7007-v4l2.c 2006-04-02 01:22:03.000000000 +0200
++++ wis-go7007-linux-0.9.8-new/kernel/go7007-v4l2.c 2006-04-03 12:55:52.000000000 +0200
+@@ -939,7 +939,7 @@
+ if (go->i2c_adapter_online) {
+ i2c_clients_command(&go->i2c_adapter, DECODER_SET_INPUT,
+ &go->board_info->inputs[*input].video_input);
+- i2c_clients_command(&go->i2c_adapter, AUDC_SET_INPUT,
++ i2c_clients_command(&go->i2c_adapter, VIDIOC_S_AUDIO,
+ &go->board_info->inputs[*input].audio_input);
+ }
+ return 0;
+diff -ur wis-go7007-linux-0.9.8/kernel/wis-uda1342.c wis-go7007-linux-0.9.8-new/kernel/wis-uda1342.c
+--- wis-go7007-linux-0.9.8/kernel/wis-uda1342.c 2006-04-02 00:37:32.000000000 +0200
++++ wis-go7007-linux-0.9.8-new/kernel/wis-uda1342.c 2006-04-03 13:07:04.000000000 +0200
+@@ -20,7 +20,7 @@
+ #include <linux/version.h>
+ #include <linux/i2c.h>
+ #include <linux/videodev.h>
+-#include <media/audiochip.h>
++#include <media/tvaudio.h>
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ #include <media/v4l2-common.h>
+ #endif
+@@ -38,15 +38,15 @@
+ unsigned int cmd, void *arg)
+ {
+ switch (cmd) {
+- case AUDC_SET_INPUT:
++ case VIDIOC_S_AUDIO:
+ {
+ int *inp = arg;
+
+ switch (*inp) {
+- case AUDIO_TUNER:
++ case TVAUDIO_INPUT_TUNER:
+ write_reg(client, 0x00, 0x1441); /* select input 2 */
+ break;
+- case AUDIO_EXTERN:
++ case TVAUDIO_INPUT_EXTERN:
+ write_reg(client, 0x00, 0x1241); /* select input 1 */
+ break;
+ default:
diff --git a/abs/not_built/core/plextor-convertX-driver/PKGBUILD b/abs/not_built/core/plextor-convertX-driver/PKGBUILD
new file mode 100755
index 0000000..8b203f6
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/PKGBUILD
@@ -0,0 +1,36 @@
+
+
+pkgname=plextor-convertX-driver
+pkgver=0.9.8
+pkgrel=7
+_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://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-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
+ install -m755 apps/modet $startdir/pkg/usr/bin/modet
+}
+md5sums=('b4299b6e2fcbaf461bc8afe36654f314'
+ 'e4c7bc33d6e69eafc10bd107cf648828'
+ '3b89d8746adf70102eeeb47d03627ece')
diff --git a/abs/not_built/core/plextor-convertX-driver/convertX.install b/abs/not_built/core/plextor-convertX-driver/convertX.install
new file mode 100755
index 0000000..5b79d84
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/convertX.install
@@ -0,0 +1,34 @@
+pre_install() {
+ /bin/true
+}
+
+post_install() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ KERNEL_VERSION=2.6.28-LinHES
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ echo "# Added For Plextor ConvertX" >> /etc/fstab
+ echo "usbfs /proc/bus/usb usbfs devmode=0666 0 0" >> /etc/fstab
+ /bin/true
+}
+
+post_upgrade() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ KERNEL_VERSION=2.6.28-LinHES
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ /bin/true
+}
+
+post_remove() {
+ # updating module dependencies
+ echo ">>> Updating module dependencies. Please wait ..."
+ KERNEL_VERSION=2.6.28-LinHES
+ depmod -v $KERNEL_VERSION > /dev/null 2>&1
+ sed -i~ -e '/ConvertX/d' -e '/usbfs/d' /etc/fstab
+ /bin/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/not_built/core/plextor-convertX-driver/wis-go7007-2.6.26-nopage.diff b/abs/not_built/core/plextor-convertX-driver/wis-go7007-2.6.26-nopage.diff
new file mode 100644
index 0000000..2fd1cca
--- /dev/null
+++ b/abs/not_built/core/plextor-convertX-driver/wis-go7007-2.6.26-nopage.diff
@@ -0,0 +1,26 @@
+diff -urN wis-go7007-linux-0.9.8.orig/kernel/go7007-v4l2.c wis-go7007-linux-0.9.8/kernel/go7007-v4l2.c
+--- wis-go7007-linux-0.9.8.orig/kernel/go7007-v4l2.c 2007-05-09 13:56:07.000000000 -0400
++++ wis-go7007-linux-0.9.8/kernel/go7007-v4l2.c 2008-08-03 16:01:35.000000000 -0400
+@@ -1375,6 +1375,7 @@
+ }
+ }
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
+ /* This is really only going to ever be called when we
+ * do get_user_pages() in VIDIOC_QBUF */
+ static struct page *go7007_vm_nopage(struct vm_area_struct *vma,
+@@ -1392,11 +1393,14 @@
+ *type = VM_FAULT_MINOR;
+ return page;
+ }
++#endif
+
+ static struct vm_operations_struct go7007_vm_ops = {
+ .open = go7007_vm_open,
+ .close = go7007_vm_close,
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
+ .nopage = go7007_vm_nopage,
++#endif
+ };
+
+ static int go7007_mmap(struct file *file, struct vm_area_struct *vma)
diff --git a/abs/not_built/core/plextor-convertX-driver/wis-go7007-linux-0.9.8-2-2.6.27.patch b/abs/not_built/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/not_built/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 <linux/i2c.h>
+ #include <linux/firmware.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+ #include <linux/videodev.h>
+ #include <media/tuner.h>
+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 <linux/device.h>
+ #include <linux/i2c.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+
+ #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 <media/audiochip.h>
+ #else
+ #include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <media/v4l2-ioctl.h>
+ #endif
+ #include <linux/i2c.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+
+ #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 <linux/mm.h>
+ #include <linux/i2c.h>
+ #include <asm/uaccess.h>
+-#include <asm/semaphore.h>
++#include <linux/semaphore.h>
+ #include <asm/system.h>
+ #include <sound/driver.h>
+ #include <sound/core.h>
+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 <media/tuner.h>
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+ #include <media/v4l2-common.h>
++#include <media/v4l2-chip-ident.h>
++#include <media/v4l2-ioctl.h>
+ #endif
+
+ #include "wis-i2c.h"
diff --git a/abs/not_built/core/procinfo-ng/PKGBUILD b/abs/not_built/core/procinfo-ng/PKGBUILD
new file mode 100644
index 0000000..abe31c2
--- /dev/null
+++ b/abs/not_built/core/procinfo-ng/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 77945 2010-04-19 06:20:55Z allan $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
+
+pkgname=procinfo-ng
+pkgver=2.0.304
+pkgrel=1
+pkgdesc="Displays useful information from /proc"
+arch=('i686' 'x86_64')
+url="http://procinfo-ng.sourceforge.net/"
+license=('GPL2' 'LGPL2.1')
+depends=('ncurses' 'perl')
+provides=('procinfo')
+conflicts=('procinfo')
+replaces=('procinfo')
+source=(http://downloads.sourceforge.net/project/procinfo-ng/procinfo-ng/2.0.304/$pkgname-$pkgver.tar.bz2
+ ftp://ftp.cistron.nl/pub/people/00-OLD/svm/procinfo-18.tar.gz)
+md5sums=('ed018fe37becc36ceb1ebe3ed909c4d2'
+ '27658d0a69040aca05a65b9888599d50')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR="$pkgdir/" install
+
+ # install tools from old procinfo package
+ cd $srcdir/procinfo-18
+ install -m755 lsdev.pl $pkgdir/usr/bin/lsdev
+ install -m755 socklist.pl $pkgdir/usr/bin/socklist
+ install -m644 lsdev.8 $pkgdir/usr/share/man/man8/lsdev.8
+ install -m644 socklist.8 $pkgdir/usr/share/man/man8/socklist.8
+}
+
diff --git a/abs/not_built/core/procps/ChangeLog b/abs/not_built/core/procps/ChangeLog
new file mode 100644
index 0000000..dddcde3
--- /dev/null
+++ b/abs/not_built/core/procps/ChangeLog
@@ -0,0 +1,10 @@
+2009-05-12 Eric Belanger <eric@archlinux.org>
+
+ * procps 3.2.8-1
+ * Upstream update
+ * Fixed license
+
+2008-10-19 Eric Belanger <eric@archlinux.org>
+
+ * Updated url
+ * Added ChangeLog
diff --git a/abs/not_built/core/procps/PKGBUILD b/abs/not_built/core/procps/PKGBUILD
new file mode 100644
index 0000000..84c3a19
--- /dev/null
+++ b/abs/not_built/core/procps/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 39239 2009-05-14 06:04:46Z eric $
+# Maintainer: Eric Belanger <eric@archlinux.org>
+# Contributor: judd <jvinet@zeroflux.org>
+
+pkgname=procps
+pkgver=3.2.8
+pkgrel=1
+pkgdesc="Utilities for monitoring your system and processes on your system"
+arch=('i686' 'x86_64')
+url="http://procps.sourceforge.net/"
+license=('GPL' 'LGPL')
+groups=('base')
+depends=('ncurses')
+backup=('etc/sysctl.conf')
+source=(http://procps.sourceforge.net/procps-${pkgver}.tar.gz sysctl.conf)
+md5sums=('9532714b6846013ca9898984ba4cd7e0' '9be3a131a7068aae11418e6dd99e2221')
+sha1sums=('a0c86790569dec26b5d9037e8868ca907acc9829' '9b9a314010d042b5aa487893c06f361531525e6a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ sed -i "s:\$(lib64):lib:" Makefile || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" ldconfig=/bin/true install || return 1
+ install -D -m644 "${srcdir}/sysctl.conf" "${pkgdir}/etc/sysctl.conf" || return 1
+ install -d "${pkgdir}/usr/include/proc" || return 1
+ install -m644 proc/*.h "${pkgdir}/usr/include/proc" || return 1
+}
diff --git a/abs/not_built/core/procps/sysctl.conf b/abs/not_built/core/procps/sysctl.conf
new file mode 100644
index 0000000..e3ebc7b
--- /dev/null
+++ b/abs/not_built/core/procps/sysctl.conf
@@ -0,0 +1,13 @@
+#
+# Kernel sysctl configuration
+#
+
+# Disable packet forwarding
+net.ipv4.ip_forward=0
+
+# Disable the magic-sysrq key (console security issues)
+kernel.sysrq = 0
+
+# Enable TCP SYN Cookie Protection
+net.ipv4.tcp_syncookies = 1
+
diff --git a/abs/not_built/core/projectm-complete/PKGBUILD b/abs/not_built/core/projectm-complete/PKGBUILD
new file mode 100644
index 0000000..59fd26f
--- /dev/null
+++ b/abs/not_built/core/projectm-complete/PKGBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Nickolay Stepanenko <nixtrian at gmail dot com>
+
+pkgname=projectm-complete
+pkgver=2.0.1
+pkgrel=3
+pkgdesc="A music visualizer which uses 3D accelerated iterative image based rendering (all components)"
+arch=('i686' 'x86_64')
+url="http://projectm.sourceforge.net/"
+license=('GPL')
+depends=('ftgl' 'glut' 'glew' 'libvisual-plugins')
+provides=('projectm' 'projectm-qt' 'projectm-libvisual' 'projectm-libvisual-alsa')
+conflicts=('projectm' 'projectm-qt' 'projectm-libvisual' 'projectm-libvisual-alsa')
+makedepends=('pkgconfig' 'xproto' 'cmake')
+source=("http://sourceforge.net/projects/projectm/files/2.0.1/projectM-complete-2.0.1-Source.tar.gz/download"
+ "libprojectm-2.0.1-pcfix.patch"
+ "error-handling.patch")
+md5sums=('9d32fa1357622c7a945a2e10620ee945' '9e2d9b03748fd6511181366b8d025425')
+
+build() {
+ cd $srcdir/projectM-complete-$pkgver-Source/ || return 1
+
+ patch -p1 -i ../libprojectm-2.0.1-pcfix.patch
+ patch -p1 -i ../error-handling.patch
+ cd src
+ cmake -D CMAKE_INSTALL_PREFIX=/usr -D CMAKE_BUILD_TYPE=Release -D USE_FBO=OFF . || return 1
+ make all || return 1
+ make DESTDIR=$pkgdir install || return 1
+ rm -rf $srcdir/projectM-complete-$pkgver-Source
+}
+md5sums=('9d32fa1357622c7a945a2e10620ee945'
+ '9e2d9b03748fd6511181366b8d025425'
+ '9b6e5a862603e7b9e45bfc51313c6a04')
diff --git a/abs/not_built/core/projectm-complete/error-handling.patch b/abs/not_built/core/projectm-complete/error-handling.patch
new file mode 100644
index 0000000..4154884
--- /dev/null
+++ b/abs/not_built/core/projectm-complete/error-handling.patch
@@ -0,0 +1,308 @@
+Description: Error handling
+ * Guard against reinitializing the builtin milkdrop functions.
+ Hides a deeper issue where something is double loading the preset factories, most
+ likely.
+ * Playlist file / directory error handling fixes, resize playlist refresh fix
+
+Forwarded: yes
+Author: Carmelo Piccione <carmelo.piccione@gmail.com>
+Last-Update: 2010-07-29
+--- a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
++++ b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
+@@ -29,7 +29,7 @@
+ /* Create new function */
+ func = new Func(name, func_ptr, num_args);
+
+- if (func == NULL)
++ if (func == 0)
+ return PROJECTM_OUTOFMEM_ERROR;
+
+ retval = insert_func( func );
+@@ -115,12 +115,18 @@
+ return PROJECTM_SUCCESS;
+ }
+
++volatile bool BuiltinFuncs::initialized = false;
+
+ /* Initialize the builtin function database.
+ Should only be necessary once */
+ int BuiltinFuncs::init_builtin_func_db() {
+ int retval;
+
++ if (initialized) {
++ return 0;
++ } else
++ initialized = true;
++
+ retval = load_all_builtin_func();
+ return retval;
+ }
+@@ -134,7 +140,7 @@
+ traverse<TraverseFunctors::Delete<Func> >(builtin_func_tree);
+
+ builtin_func_tree.clear();
+-
++initialized = false;
+ return PROJECTM_SUCCESS;
+ }
+
+@@ -142,13 +148,24 @@
+ int BuiltinFuncs::insert_func( Func *func ) {
+
+ assert(func);
+- std::pair<std::map<std::string, Func*>::iterator, bool> inserteePair =
+- builtin_func_tree.insert(std::make_pair(std::string(func->getName()), func));
+
++ if (func == 0) {
++ std::cerr << "Received a null function object, ignoring...." << std::endl;
++ return PROJECTM_ERROR;
++ }
++
++// //std::cout << "inserting function " << func->getName() << std::endl;
++
++ const std::pair<std::string, Func*> pair = std::make_pair(std::string(func->getName()), func);
++
++ assert(pair.second);
++
++ const std::pair<std::map<std::string, Func*>::iterator, bool> inserteePair =
++ builtin_func_tree.insert(pair);
++
+ if (!inserteePair.second) {
+ std::cerr << "Failed to insert builtin function \"" << func->getName() << "\" into collection! Bailing..." << std::endl;
+ abort();
+-
+ }
+
+ return PROJECTM_SUCCESS;
+--- a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
++++ b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
+@@ -229,6 +229,7 @@
+ static Func *find_func( const std::string & name );
+ private:
+ static std::map<std::string, Func*> builtin_func_tree;
++ static volatile bool initialized;
+ };
+
+ #endif
+--- a/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp
++++ b/src/libprojectM/MilkdropPresetFactory/MilkdropPresetFactory.cpp
+@@ -26,7 +26,7 @@
+ Eval::init_infix_ops();
+
+ _presetOutputs = createPresetOutputs(gx,gy);
+- _presetOutputs2 = createPresetOutputs(gx, gy);
++ _presetOutputs2 = createPresetOutputs(gx, gy);
+ }
+
+ MilkdropPresetFactory::~MilkdropPresetFactory() {
+@@ -37,13 +37,13 @@
+ BuiltinFuncs::destroy_builtin_func_db();
+ std::cerr << "[~MilkdropPresetFactory] delete preset out puts" << std::endl;
+ delete(_presetOutputs);
+- delete(_presetOutputs2);
++ delete(_presetOutputs2);
+ std::cerr << "[~MilkdropPresetFactory] done" << std::endl;
+
+ }
+
+ /* Reinitializes the engine variables to a default (conservative and sane) value */
+-void resetPresetOutputs(PresetOutputs *presetOutputs)
++void resetPresetOutputs(PresetOutputs * presetOutputs)
+ {
+
+ presetOutputs->zoom=1.0;
+--- a/src/libprojectM/PresetFactoryManager.cpp
++++ b/src/libprojectM/PresetFactoryManager.cpp
+@@ -20,7 +20,7 @@
+ #endif
+
+ #include <sstream>
+-PresetFactoryManager::PresetFactoryManager() : _gx(0), _gy(0) {}
++PresetFactoryManager::PresetFactoryManager() : _gx(0), _gy(0), initialized(false) {}
+
+ PresetFactoryManager::~PresetFactoryManager() {
+ for (std::vector<PresetFactory *>::iterator pos = _factoryList.begin();
+@@ -29,11 +29,20 @@
+ delete(*pos);
+ }
+
+-
++ initialized = false;
+ }
++
+ void PresetFactoryManager::initialize(int gx, int gy) {
+ _gx = gx;
+ _gy = gy;
++
++ if (!initialized) {
++ initialized = true;
++ } else {
++ std::cout << "already initialized " << std::endl;
++ return;
++ }
++
+ PresetFactory * factory;
+
+ #ifndef DISABLE_MILKDROP_PRESETS
+--- a/src/libprojectM/PresetFactoryManager.hpp
++++ b/src/libprojectM/PresetFactoryManager.hpp
+@@ -21,7 +21,7 @@
+ virtual ~PresetFactoryException() throw() {}
+ const std::string & message() const { return _message; }
+
+- private:
++ private:
+ std::string _message;
+ };
+
+@@ -54,6 +54,6 @@
+ mutable std::map<std::string, PresetFactory *> _factoryMap;
+ mutable std::vector<PresetFactory *> _factoryList;
+ void registerFactory(const std::string & extension, PresetFactory * factory);
+-
++ volatile bool initialized;
+ };
+ #endif
+--- a/src/libprojectM/projectM.cpp
++++ b/src/libprojectM/projectM.cpp
+@@ -222,7 +222,6 @@
+ projectM_init ( _settings.meshX, _settings.meshY, _settings.fps,
+ _settings.textureSize, _settings.windowWidth,_settings.windowHeight);
+
+-
+ _settings.beatSensitivity = beatDetect->beat_sensitivity = config.read<float> ( "Hard Cut Sensitivity", 10.0 );
+
+ if ( config.read ( "Aspect Correction", true ) )
+--- a/src/projectM-pulseaudio/QPulseAudioThread.cpp
++++ b/src/projectM-pulseaudio/QPulseAudioThread.cpp
+@@ -296,9 +296,7 @@
+ {
+ assert ( mainloop_api );
+ mainloop_api->quit ( mainloop_api, ret );
+- if (*s_qprojectM_MainWindowPtr)
+- delete(*s_qprojectM_MainWindowPtr);
+- *s_qprojectM_MainWindowPtr = 0;
++
+ }
+
+
+@@ -315,7 +313,8 @@
+ {
+ fprintf ( stderr, "pa_stream_peek() failed: %s\n", pa_strerror ( pa_context_errno ( context ) ) );
+ pulseQuit ( 1 );
+- return;
++ return
++;
+ }
+
+ if ((!s_qprojectM_MainWindowPtr) || (!*s_qprojectM_MainWindowPtr))
+@@ -352,16 +351,16 @@
+ switch ( pa_stream_get_state ( s ) )
+ {
+ case PA_STREAM_UNCONNECTED:
+-// qDebug() << "UNCONNECTED";
++ qDebug() << "UNCONNECTED";
+ break;
+ case PA_STREAM_CREATING:
+-// qDebug() << "CREATED";
++ qDebug() << "CREATED";
+ break;
+ case PA_STREAM_TERMINATED:
+-// qDebug() << "TERMINATED";
++ qDebug() << "TERMINATED";
+ break;
+ case PA_STREAM_READY:
+-// qDebug() << "READY";
++ qDebug() << "READY";
+ if ( verbose )
+ {
+ const pa_buffer_attr *a;
+--- a/src/projectM-qt/qplaylisttableview.hpp
++++ b/src/projectM-qt/qplaylisttableview.hpp
+@@ -93,14 +93,14 @@
+ }
+
+ inline void resizeEvent(QResizeEvent * event) {
+-
++ QTableView::resizeEvent(event);
+ emit(resized(event));
+ }
+
+ inline void mousePressEvent(QMouseEvent * event) {
+ QAbstractItemView::mousePressEvent(event);
+ if (event->button() == Qt::RightButton) {
+- emit(mousePressed(event, selectedIndexes()));
++ emit(mousePressed(event, selectedIndexes()));
+ }
+ else
+ ;
+--- a/src/projectM-qt/qprojectm_mainwindow.cpp
++++ b/src/projectM-qt/qprojectm_mainwindow.cpp
+@@ -98,7 +98,8 @@
+
+ connect(ui->tableView, SIGNAL(resized(QResizeEvent *)), this, SLOT(refreshHeaders(QResizeEvent*)));
+
+- connect(ui->tableView, SIGNAL(mousePressed(QMouseEvent*, const QModelIndexList &)), this, SLOT(popupPlaylistContextMenu(QMouseEvent*, const QModelIndexList &)));
++ connect(ui->tableView, SIGNAL(mousePressed(QMouseEvent*, const QModelIndexList &)), this,
++ SLOT(popupPlaylistContextMenu(QMouseEvent*, const QModelIndexList &)));
+
+ connect ( m_QProjectMWidget, SIGNAL ( projectM_Initialized(QProjectM*) ),
+ this, SLOT ( postProjectM_Initialize() ) );
+@@ -662,7 +663,7 @@
+ // Add 1 to skip the Name column
+ hHeader->setResizeMode (i+1, QHeaderView::ResizeToContents);
+ sizeTotal += hHeader->sectionSize(i+1);
+- }
++ }
+ hHeader->resizeSection(0, ui->tableView->size().width()-20-sizeTotal);
+
+
+@@ -883,11 +884,13 @@
+ QString url = m_QPlaylistFileDialog->selectedFiles() [0];
+
+
+- if ( !playlistModel->readPlaylist ( url ) ) {
++ const bool loadedOk = playlistModel->readPlaylist ( url );
++
++ if (!loadedOk) {
+ qDebug() << "could not open playlist";
+ url = QString();
+-
+- }
++ }
++
+ qDebug() << "url: " << url;
+ updatePlaylistUrl(url);
+
+--- a/src/projectM-qt/qprojectmwidget.hpp
++++ b/src/projectM-qt/qprojectmwidget.hpp
+@@ -22,6 +22,7 @@
+ #ifndef QPROJECTM_WIDGET_HPP
+ #define QPROJECTM_WIDGET_HPP
+
++#include <iostream>
+ #include "qprojectm.hpp"
+ #include <QGLWidget>
+ #include <QMutex>
+@@ -111,7 +112,7 @@
+
+ void resetProjectM()
+ {
+-
++ std::cout << "reseting" << std::endl;
+ qDebug() << "reset start";
+
+ emit ( projectM_BeforeDestroy() );
+@@ -246,8 +247,10 @@
+ void initializeGL()
+ {
+
+- this->m_projectM = new QProjectM ( m_config_file );
+- projectM_Initialized ( m_projectM );
++ if (m_projectM == 0) {
++ this->m_projectM = new QProjectM ( m_config_file );
++ projectM_Initialized ( m_projectM );
++ }
+ }
+
+ inline void paintGL()
diff --git a/abs/not_built/core/projectm-complete/libprojectm-2.0.1-pcfix.patch b/abs/not_built/core/projectm-complete/libprojectm-2.0.1-pcfix.patch
new file mode 100644
index 0000000..50097e7
--- /dev/null
+++ b/abs/not_built/core/projectm-complete/libprojectm-2.0.1-pcfix.patch
@@ -0,0 +1,25 @@
+--- projectM-2.0.1-Source.orig/src/libprojectM/libprojectM.pc.in
++++ projectM-2.0.1-Source/src/libprojectM/libprojectM.pc.in
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=@CMAKE_INSTALL_PREFIX@
+-libdir=@LIB_INSTALL_DIR@
++libdir=${exec_prefix}/lib@LIB_SUFFIX@
+ includedir=@CMAKE_INSTALL_PREFIX@/include
+ pkgdatadir=@CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@
+ sysconfdir=@CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@
+
+--- projectM-complete-2.0.1-Source.orig/src/CMakeLists.txt 2009-12-06 02:20:48.000000000 +0100
++++ rojectM-complete-2.0.1-Source/src/CMakeLists.txt 2010-06-28 01:10:27.145943667 +0200
+@@ -3,9 +3,9 @@
+ cmake_minimum_required(VERSION 2.4.0)
+
+ OPTION(INCLUDE-PROJECTM-QT "Build the projectM Qt4 user interface extension library (recommended)" ON)
+-OPTION(INCLUDE-PROJECTM-PULSEAUDIO "Build the projectM pulse audio client (recommended for fedora users)" ON)
++OPTION(INCLUDE-PROJECTM-PULSEAUDIO "Build the projectM pulse audio client (recommended for fedora users)" OFF)
+ OPTION(INCLUDE-PROJECTM-LIBVISUAL "Build the projectM libvisual client" ON)
+-OPTION(INCLUDE-PROJECTM-LIBVISUAL-ALSA "Build experimental libvisual / alsa input standalone client (NEW!)" OFF)
++OPTION(INCLUDE-PROJECTM-LIBVISUAL-ALSA "Build experimental libvisual / alsa input standalone client (NEW!)" ON)
+ OPTION(INCLUDE-PROJECTM-JACK "Build the projectM JACK client" OFF)
+ OPTION(INCLUDE-PROJECTM-TEST "Build the projectM test suite" ON)
+ OPTION(INCLUDE-PROJECTM-XMMS "Build the projectM xmms module (deprecated, use audacious instead)" OFF)
diff --git a/abs/not_built/core/pvr150-firmware/PKGBUILD b/abs/not_built/core/pvr150-firmware/PKGBUILD
new file mode 100644
index 0000000..013a2c8
--- /dev/null
+++ b/abs/not_built/core/pvr150-firmware/PKGBUILD
@@ -0,0 +1,17 @@
+# $Id: PKGBUILD 5936 2008-07-21 20:24:16Z thomas $
+# Maintainer: Cecil Watson<knoppmyth@gmail.com>
+
+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/not_built/core/python2/PKGBUILD b/abs/not_built/core/python2/PKGBUILD
new file mode 100644
index 0000000..0273175
--- /dev/null
+++ b/abs/not_built/core/python2/PKGBUILD
@@ -0,0 +1,84 @@
+# $Id: PKGBUILD 157413 2012-04-28 09:27:14Z allan $
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributer: Allan McRae <allan@archlinux.org>
+# Contributer: Jason Chu <jason@archlinux.org>
+
+pkgname=python2
+pkgver=2.7.3
+pkgrel=2
+_pybasever=2.7
+pkgdesc="A high-level scripting language"
+arch=('i686' 'x86_64')
+license=('PSF')
+url="http://www.python.org/"
+depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi')
+makedepends=('tk')
+optdepends=('tk: for IDLE')
+conflicts=('python<3')
+options=('!makeflags')
+source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz)
+sha1sums=('b2b0ada7ebed4a8204a855193afbdb3aa3308357')
+
+build() {
+ cd "${srcdir}/Python-${pkgver}"
+
+ # Temporary workaround for FS#22322
+ # See http://bugs.python.org/issue10835 for upstream report
+ sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c
+
+ # Enable built-in SQLite module to load extensions (fix FS#22122)
+ sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py
+
+ # FS#23997
+ sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py
+
+ # Ensure that we are using the system copy of various libraries (expat, zlib and libffi),
+ # rather than copies shipped in the tarball
+ rm -r Modules/expat
+ rm -r Modules/zlib
+ rm -r Modules/_ctypes/{darwin,libffi}*
+
+ export OPT="${CFLAGS}"
+ ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \
+ --enable-unicode=ucs4 --with-system-expat --with-system-ffi \
+ --with-dbmliborder=gdbm:ndbm
+
+ make
+}
+
+package() {
+ cd "${srcdir}/Python-${pkgver}"
+ make DESTDIR="${pkgdir}" altinstall maninstall
+
+ ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2"
+ ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config"
+ ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1"
+
+ ln -sf ../../libpython${_pybasever}.so \
+ "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so"
+
+ mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/"
+
+ # some useful "stuff"
+ install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts}
+ install -m755 Tools/i18n/{msgfmt,pygettext}.py \
+ "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/"
+ install -m755 Tools/scripts/{README,*py} \
+ "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/"
+
+ # fix conflicts with python
+ mv "${pkgdir}"/usr/bin/idle{,2}
+ mv "${pkgdir}"/usr/bin/pydoc{,2}
+ mv "${pkgdir}"/usr/bin/2to3{,-2.7}
+
+ # clean up #!s
+ find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \
+ xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|"
+
+ # clean-up reference to build directory
+ sed -i "s#${srcdir}/Python-${pkgver}:##" \
+ "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile"
+
+ # license
+ install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/abs/not_built/core/python_modules/bluez-python/PKGBUILD b/abs/not_built/core/python_modules/bluez-python/PKGBUILD
new file mode 100644
index 0000000..4314206
--- /dev/null
+++ b/abs/not_built/core/python_modules/bluez-python/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: Li Dongyang<Jerry87905@gmail.com>
+
+pkgname=bluez-python
+pkgver=0.1.4
+pkgrel=3
+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() {
+ /bin/true
+}
+package() {
+ cd ${srcdir}/${pkgname}
+ python2 setup.py install --root=${pkgdir}
+}
diff --git a/abs/not_built/core/python_modules/cddb-py/PKGBUILD b/abs/not_built/core/python_modules/cddb-py/PKGBUILD
new file mode 100755
index 0000000..3facc20
--- /dev/null
+++ b/abs/not_built/core/python_modules/cddb-py/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 26144 2010-09-13 19:36:37Z schuay $
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: Hugo Ideler <hugoideler@dse.nl>
+# Contributor: David Keogh <davekeogh@shaw.ca>
+# Maintainer: Daniel J Griffiths <ghost1227@archlinux.us>
+
+pkgname=cddb-py
+pkgver=1.4
+pkgrel=6
+pkgdesc="CDDB-Server access from Python"
+arch=('i686' 'x86_64')
+url="http://cddb-py.sourceforge.net"
+license=('GPL')
+depends=('python2')
+source=("http://downloads.sourceforge.net/sourceforge/cddb-py/CDDB-${pkgver}.tar.gz")
+md5sums=('254698082bafe3030d07d88fb7e13fe2')
+
+package() {
+ cd ${srcdir}/CDDB-${pkgver}
+
+ for file in CDDB.py DiscID.py; do
+ sed -i 's_#!/usr/bin/env python_#!/usr/bin/env python2_' $file
+ done
+
+ python2 setup.py install --root=${pkgdir} --optimize=1
+}
diff --git a/abs/not_built/core/python_modules/gnome-python-extras/PKGBUILD b/abs/not_built/core/python_modules/gnome-python-extras/PKGBUILD
new file mode 100644
index 0000000..690ec2e
--- /dev/null
+++ b/abs/not_built/core/python_modules/gnome-python-extras/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 35285 2009-04-11 20:46:50Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=gnome-python-extras
+pkgver=2.25.3
+pkgrel=2
+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
+}
+package() {
+ cd "${srcdir}/gnome-python-extras-${pkgver}"
+ make DESTDIR="${pkgdir}" install || return 1
+}
diff --git a/abs/not_built/core/python_modules/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch b/abs/not_built/core/python_modules/gnome-python-extras/gnome-python-extras-2.19.1-pkg-config.patch
new file mode 100644
index 0000000..77fd0a4
--- /dev/null
+++ b/abs/not_built/core/python_modules/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/not_built/core/python_modules/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch b/abs/not_built/core/python_modules/gnome-python-extras/gnome-python-extras-2.19.1-xulrunner.patch
new file mode 100644
index 0000000..d2fa26e
--- /dev/null
+++ b/abs/not_built/core/python_modules/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/not_built/core/python_modules/imdbpy/PKGBUILD b/abs/not_built/core/python_modules/imdbpy/PKGBUILD
new file mode 100644
index 0000000..22efa94
--- /dev/null
+++ b/abs/not_built/core/python_modules/imdbpy/PKGBUILD
@@ -0,0 +1,37 @@
+# $Id: PKGBUILD 27018 2010-09-16 17:37:18Z schuay $
+# Maintainer: Ray Rashif <schivmeister@gmail.com>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Geoffroy Carrier <geoffroy.carrier@koon.fr>
+# Contributor: lang2 <wenzhi.liang@gmail.com>
+
+pkgname=imdbpy
+_realname=IMDbPY
+pkgver=4.6
+pkgrel=3
+pkgdesc="Python bindings for imdb"
+url="http://imdbpy.sourceforge.net/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('python2')
+makedepends=('setuptools')
+optdepends=('python-lxml' 'python-sqlalchemy' 'python-sqlobject')
+source=(http://downloads.sourceforge.net/$pkgname/$_realname-$pkgver.tar.gz)
+
+build(){
+ cd "$srcdir/$_realname-$pkgver"
+
+ # python2 fix
+ for file in $(find . -name '*.py' -print); do
+ sed -i 's_#!.*/usr/bin/python_#!/usr/bin/python2_' $file
+ sed -i 's_#!.*/usr/bin/env.*python_#!/usr/bin/env python2_' $file
+ done
+
+ python2 setup.py install --root="$pkgdir"
+
+ # fix directories path
+ mv "$pkgdir/usr/etc" "$pkgdir"
+ install -d "$pkgdir/usr/share"
+ mv "$pkgdir/usr/imdb" "$pkgdir/usr/share"
+ mv "$pkgdir/usr/doc" "$pkgdir/usr/share/imdb/"
+}
+md5sums=('876d4cd041fa23633e3637c22bf95622')
diff --git a/abs/not_built/core/python_modules/pycrypto/PKGBUILD b/abs/not_built/core/python_modules/pycrypto/PKGBUILD
new file mode 100644
index 0000000..5ba87ac
--- /dev/null
+++ b/abs/not_built/core/python_modules/pycrypto/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 96778 2010-10-24 17:01:27Z ibiru $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Kritoke <kritoke@gamebox.net>
+
+pkgname=pycrypto
+pkgver=2.3
+pkgrel=2
+pkgdesc="Collection of cryptographic algorithms and protocols, implemented for use from Python."
+arch=('i686' 'x86_64')
+depends=('python2')
+url="http://www.dlitz.net/software/pycrypto/"
+license=(custom)
+source=(http://ftp.dlitz.net/pub/dlitz/crypto/${pkgname}/${pkgname}-${pkgver}.tar.gz)
+sha256sums=('4f11e85fbcf13960373650fc2dae8f088f9b001f07fb6d3efb2fcb5334987182')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py build
+ python2 setup.py install --root="${pkgdir}" --optimize=1
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYRIGHT "${pkgdir}/usr/share/licenses/${pkgname}/"
+ cp -r LEGAL "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/python_modules/python-beaker/PKGBUILD b/abs/not_built/core/python_modules/python-beaker/PKGBUILD
new file mode 100644
index 0000000..8780497
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-beaker/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 87715 2010-08-18 03:37:40Z allan $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Massimiliano Torromeo < massimiliano DOT torromeo AT gmail DOT com >
+pkgname=python-beaker
+pkgver=1.5.4
+pkgrel=3
+arch=('any')
+license=('custom')
+pkgdesc="Caching and sessions WSGI middleware for use with web applications and stand-alone Python scripts and applications"
+url="http://beaker.groovie.org/"
+depends=('python2')
+makedepends=('setuptools')
+source=("http://cheeseshop.python.org/packages/source/B/Beaker/Beaker-$pkgver.tar.gz")
+md5sums=('de84e7511119dc0b8eb4ac177d3e2512')
+
+build() {
+ cd ${srcdir}/Beaker-${pkgver}
+ sed -i "s#/usr/bin/python#/usr/bin/python2#" beaker/crypto/pbkdf2.py
+ python2 setup.py install --root=${pkgdir} --optimize=1
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/abs/not_built/core/python_modules/python-beautifulsoup4/PKGBUILD b/abs/not_built/core/python_modules/python-beautifulsoup4/PKGBUILD
new file mode 100644
index 0000000..e5eba14
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-beautifulsoup4/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 73500 2012-07-08 17:25:45Z dwallace $
+# Maintainer: Daniel Wallace <danielwallace at gtmanfred dot com>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgbase=python-beautifulsoup4
+pkgname=('python2-beautifulsoup4' 'python-beautifulsoup4')
+pkgver=4.1.1
+pkgrel=2
+pkgdesc="A Python HTML/XML parser designed for quick turnaround projects like screen-scraping"
+arch=('any')
+url="http://www.crummy.com/software/BeautifulSoup/index.html"
+license=('PSF')
+#makedepends=('python-distribute' 'python2-distribute')
+makedepends=('python2-distribute')
+source=("http://www.crummy.com/software/BeautifulSoup/bs4/download/${pkgver%\.*}/${pkgbase#*-}-${pkgver}.tar.gz")
+md5sums=('fccee58b4d914fb489385d672fe89f43')
+
+build() {
+ cd "${srcdir}"
+ cp -a beautifulsoup4-${pkgver}{,-python2}
+
+ # Build python 3 module
+ cd "${srcdir}/beautifulsoup4-${pkgver}"
+ python setup.py build
+
+ # Build python 2 module
+ cd "${srcdir}/beautifulsoup4-${pkgver}-python2"
+ python2 setup.py build
+}
+
+package_python2-beautifulsoup4() {
+ depends=('python2-distribute')
+ optdepends=('python2-chardet: universal encoding detector'
+ 'python2-lxml: pythonic binding for the libxml2 and libxslt libraries')
+
+ cd "${srcdir}/beautifulsoup4-${pkgver}-python2"
+ python2 setup.py install --root="${pkgdir}/" --optimize=1 --skip-build
+
+ rm -rf ${pkgdir}/usr/lib/python2.7/site-packages/bs4/tests
+}
+
+package_python-beautifulsoup4() {
+# depends=('python-distribute')
+ optdepends=('python-chardet: universal encoding detector'
+ 'python-lxml: pythonic binding for the libxml2 and libxslt libraries')
+
+ cd "${srcdir}/beautifulsoup4-${pkgver}"
+ python setup.py install --root="${pkgdir}/" --optimize=1 --skip-build
+
+ rm -rf ${pkgdir}/usr/lib/python3.2/site-packages/bs4/{__pycache__,tests,builder/__pycache__}
+}
diff --git a/abs/not_built/core/python_modules/python-beautifulsoup4/__changelog b/abs/not_built/core/python_modules/python-beautifulsoup4/__changelog
new file mode 100644
index 0000000..1cdf6fa
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-beautifulsoup4/__changelog
@@ -0,0 +1,2 @@
+9/3/12 - chw
+commented python-distribute as dep since we don't include python3. Built with mp.py --pkg=python2-beautisoup4.
diff --git a/abs/not_built/core/python_modules/python-chardet/PKGBUILD b/abs/not_built/core/python_modules/python-chardet/PKGBUILD
new file mode 100644
index 0000000..d3e67d0
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-chardet/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 87872 2010-08-18 15:26:20Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+pkgname=python-chardet
+_pkgnamebase=python2-chardet
+pkgver=2.0.1
+pkgrel=3
+pkgdesc="Python module for character encoding auto-detection"
+arch=('any')
+url="http://chardet.feedparser.org"
+license=('LGPL')
+depends=('python2')
+source=(http://chardet.feedparser.org/download/${_pkgnamebase}-${pkgver}.tgz)
+sha256sums=('56fa0c37189b0a5f082d064dec59d69a044aaa3eeb7acb9b3081e2ba306deaa4')
+
+build() {
+ cd "${srcdir}/${_pkgnamebase}-${pkgver}"
+ python2 setup.py install --root="${pkgdir}" --optimize=1
+}
+
diff --git a/abs/not_built/core/python_modules/python-geoip/PKGBUILD b/abs/not_built/core/python_modules/python-geoip/PKGBUILD
new file mode 100644
index 0000000..cd095c6
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-geoip/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 89623 2010-09-02 16:32:29Z remy $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=python-geoip
+pkgver=1.2.4
+pkgrel=4
+pkgdesc="Python bindings for the GeoIP IP-to-country resolver library."
+arch=(i686 x86_64)
+url="http://www.maxmind.com/app/python"
+license=('LGPL')
+depends=('python2' 'geoip')
+source=(http://www.maxmind.com/download/geoip/api/python/GeoIP-Python-${pkgver}.tar.gz)
+replaces=('geoip-python')
+provides=('geoip-python')
+
+build() {
+ cd ${startdir}/src/GeoIP-Python-${pkgver}
+ python2 setup.py build install --root=${pkgdir}/
+}
+md5sums=('50f820d854476efaf3b7af733ffe4236')
+
diff --git a/abs/not_built/core/python_modules/python-libconcord/PKGBUILD b/abs/not_built/core/python_modules/python-libconcord/PKGBUILD
new file mode 100644
index 0000000..fb638f8
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-libconcord/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id$
+# Maintainers:
+# Andreas Baumann <abaumann@yahoo.com>
+# Guillaume DUMOULIN <guillaume.dumoulin@gmail.com>
+# Contributor: elsixdiab
+pkgname=python-libconcord
+_pkgsrcname=concordance
+pkgver=0.23
+pkgrel=3
+pkgdesc="This software will allow you to program your Logitech Harmony universal remote control"
+url="http://www.phildev.net/harmony/index.shtml"
+license="GPL"
+arch=('any')
+depends=('libconcord=0.23' 'python2')
+source=("http://downloads.sourceforge.net/${_pkgsrcname}/${_pkgsrcname}-${pkgver}.tar.bz2")
+md5sums=('d7400d5b351b195b63adfafae68be3d8')
+build() {
+ cd $srcdir/${_pkgsrcname}-${pkgver}/libconcord/bindings/python/
+ python2 setup.py install --prefix=/usr --root="$pkgdir" || return 1
+}
+
+
diff --git a/abs/not_built/core/python_modules/python-mako/PKGBUILD b/abs/not_built/core/python_modules/python-mako/PKGBUILD
new file mode 100644
index 0000000..987116a
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-mako/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 87883 2010-08-18 15:32:33Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Roberto Alsina <ralsina@kde.org>
+pkgname=python-mako
+pkgver=0.3.4
+pkgrel=5
+pkgdesc="Hyperfast and lightweight templating for the Python platform."
+arch=('any')
+url="http://www.makotemplates.org/"
+license=('custom')
+depends=('python2' 'python-markupsafe>=0.9.2' 'python-beaker>=1.5.4')
+makedepends=('setuptools')
+source=(http://www.makotemplates.org/downloads/Mako-$pkgver.tar.gz)
+md5sums=('2ae56ccc6c9b5c4e2e67f42b69475009')
+
+build() {
+ cd "$srcdir/Mako-$pkgver"
+ python2 setup.py install --root="$pkgdir" --optimize=1 || return 1
+ install -D LICENSE "$pkgdir/usr/share/licenses/python-mako/COPYING" || return 1
+}
+
diff --git a/abs/not_built/core/python_modules/python-markupsafe/PKGBUILD b/abs/not_built/core/python_modules/python-markupsafe/PKGBUILD
new file mode 100644
index 0000000..f3563c9
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-markupsafe/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: PKGBUILD 87877 2010-08-18 15:28:18Z ibiru $
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Alex Anthony <alex.anthony28991@gmail.com>
+
+pkgname=python-markupsafe
+pkgver=0.9.2
+pkgrel=3
+pkgdesc="Implements a XML/HTML/XHTML Markup safe string for Python"
+arch=('i686' 'x86_64')
+url="http://pypi.python.org/pypi/MarkupSafe"
+license=('custom')
+depends=('python2')
+makedepends=('setuptools')
+source=(http://pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-${pkgver}.tar.gz)
+md5sums=('69b72d1afdd9e808f9c1ef65f819c7a6')
+
+build() {
+ cd ${srcdir}/MarkupSafe-${pkgver}
+ python2 setup.py install --root=${pkgdir} --optimize=1
+
+ install -D -m644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+}
+
diff --git a/abs/not_built/core/python_modules/python-numeric/PKGBUILD b/abs/not_built/core/python_modules/python-numeric/PKGBUILD
new file mode 100644
index 0000000..2c8ea21
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-numeric/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer: SpepS <dreamspepser at yahoo dot it>
+# Contributor: arjan <arjan@archlinux.org>
+# Contributor orelien <aurelien.foret@wanadoo.fr>
+
+pkgname=python-numeric
+pkgver=24.2
+pkgrel=6
+pkgdesc="Numerical Python adds a fast array facility to the Python language"
+arch=('i686' 'x86_64')
+url="http://numeric.scipy.org/"
+license=('custom')
+depends=('python2')
+source=(http://downloads.sourceforge.net/sourceforge/numpy/Numeric-$pkgver.tar.gz)
+md5sums=('2ae672656e06716a149acb048cca3093')
+
+build() {
+
+ cd "$srcdir/Numeric-$pkgver"
+
+ # Python2 fix
+ sed \
+ -e "s_\(env python\).*_\12_" \
+ -e "s_\(bin/python\).*_\12_" \
+ -i `grep -rlE "(env python|bin/python)" .`
+}
+
+package() {
+
+ cd "$srcdir/Numeric-$pkgver"
+
+ # Install
+ python2 setup.py install --prefix=/usr --root="$pkgdir/"
+ install -D -m644 Legal.htm "$pkgdir/usr/share/licenses/$pkgname/Legal.htm"
+}
+
diff --git a/abs/not_built/core/python_modules/python-pymedia/PKGBUILD b/abs/not_built/core/python_modules/python-pymedia/PKGBUILD
new file mode 100644
index 0000000..5433471
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-pymedia/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer: TDY <tdy@gmx.com>
+
+pkgname=python-pymedia
+pkgver=1.3.7.3
+pkgrel=2
+pkgdesc="A Python library for accessing and manipulating multimedia files"
+arch=('i686' 'x86_64')
+url="http://pymedia.org/"
+license=('LGPL')
+depends=('alsa-lib' 'ffmpeg-svn' 'python2')
+optdepends=('faad2: AAC support'
+ 'lame: MP3 support'
+ 'libogg: Ogg support'
+ 'libvorbis: Vorbis support')
+source=(http://downloads.sourceforge.net/${pkgname/*-}/${pkgname/*-}-$pkgver.tar.gz
+ ${pkgname/*-}-$pkgver-amd64-gentoo.diff)
+md5sums=('2f4930c63866c97af5090b176e2a118a'
+ '3137e65e1208db98e404ee894fcd744a')
+
+build() {
+ cd "$srcdir/${pkgname/*-}-$pkgver"
+ patch -Np1 -i ../${pkgname/*-}-$pkgver-amd64-gentoo.diff || return 1
+
+ find "$srcdir/${pkgname/*-}-$pkgver" -name '*.py' | \
+ xargs sed -i "s|#![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" || return 1
+ find "$srcdir/${pkgname/*-}-$pkgver" -name '*.py' | \
+ xargs sed -i "s|#![ ]*/bin/env python$|#!/usr/bin/env python2|" || return 1
+
+ python2 setup.py build || return 1
+}
+
+package() {
+ cd "$srcdir/${pkgname/*-}-$pkgver"
+ python2 setup.py install --prefix=/usr --root="$pkgdir" || return 1
+}
diff --git a/abs/not_built/core/python_modules/python-pymedia/pymedia-1.3.7.3-amd64-gentoo.diff b/abs/not_built/core/python_modules/python-pymedia/pymedia-1.3.7.3-amd64-gentoo.diff
new file mode 100644
index 0000000..801eccf
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-pymedia/pymedia-1.3.7.3-amd64-gentoo.diff
@@ -0,0 +1,64 @@
+diff -ru pymedia-1.3.7.3/audio/inttypes.h pymedia-1.3.7.3-amd64/audio/inttypes.h
+--- pymedia-1.3.7.3/audio/inttypes.h 2006-06-13 13:32:22.000000000 -0700
++++ pymedia-1.3.7.3-amd64/audio/inttypes.h 2008-03-26 08:05:57.000000000 -0700
+@@ -2,6 +2,7 @@
+ #if !defined( __INTTYPES_H__ )
+ #define __INTTYPES_H__
+
++#include <stdint.h>
+ #if defined( _STDINT_H )
+
+ typedef unsigned short UINT16;
+diff -ru pymedia-1.3.7.3/setup.py pymedia-1.3.7.3-amd64/setup.py
+--- pymedia-1.3.7.3/setup.py 2006-06-19 23:04:43.000000000 -0700
++++ pymedia-1.3.7.3-amd64/setup.py 2008-03-26 08:16:04.000000000 -0700
+@@ -216,7 +216,7 @@
+ FILES[ 'video.vcodec' ][ 'libavcodec' ]+= NONMMX_FILES
+ else:
+ print 'Using UNIX configuration...\n'
+- disable_fPIC()
++ #disable_fPIC()
+ dep= config.Dependency_unix
+ inc_hunt = [
+ '/usr/include',
+@@ -224,13 +224,13 @@
+ '/usr/local/include',
+ '/usr/local/include/lame',]
+ lib_hunt = [ '/usr/lib64', '/usr/lib', '/usr/local/lib64', '/usr/local/lib' ]
+- LIBS= []
++ LIBS= ['avcodec', 'avformat']
+ DEFINES+= [
+ ('PATH_DEV_DSP', '"/dev/dsp"' ),
+ ('PATH_DEV_MIXER','"/dev/mixer"' ),
+ ('_FILE_OFFSET_BITS',64),
+ ('ACCEL_DETECT',1),
+- ('HAVE_MMX', '1' ),
++ ('HAVE_LRINTF', '1' ),
+ ]
+ if sys.platform== 'cygwin':
+ DEFINES+= [
+@@ -243,13 +243,13 @@
+ ('DVD_STRUCT_IN_LINUX_CDROM_H', '1' ),
+ ]
+
+- FILES[ 'video.vcodec' ][ 'libavcodec' ]+= MMX_FILES
++ FILES[ 'video.vcodec' ][ 'libavcodec' ]#+= MMX_FILES
+
+ DEPS = [
+ dep('OGG', 'libogg-[1-9].*', 'ogg/ogg.h', 'libogg', 'CONFIG_VORBIS').configure(inc_hunt,lib_hunt),
+ dep('VORBIS', 'libvorbis-[1-9].*', 'vorbis/codec.h', 'libvorbis', 'CONFIG_VORBIS' ).configure(inc_hunt,lib_hunt),
+ dep('FAAD', 'libfaad2', 'faad.h', 'libfaad', 'CONFIG_FAAD').configure(inc_hunt,lib_hunt),
+- dep('MP3LAME', 'lame-3.95.*', 'lame.h', 'libmp3lame', 'CONFIG_MP3LAME').configure(inc_hunt,lib_hunt),
++ dep('MP3LAME', 'lame-3.96.*', 'lame.h', 'libmp3lame', 'CONFIG_MP3LAME').configure(inc_hunt,lib_hunt),
+ dep('VORBISENC', 'libvorbis-[1-9].*','vorbis/vorbisenc.h','libvorbisenc', 'CONFIG_VORBIS').configure(inc_hunt,lib_hunt),
+ dep('ALSA', 'libasound','alsa/asoundlib.h','libasound', 'CONFIG_ALSA').configure(inc_hunt,lib_hunt),
+ ]
+@@ -260,7 +260,7 @@
+ DEFINES+= [ ( x.define, None ) for x in DEPS ]+ [ ( 'HAVE_AV_CONFIG_H', None ), ( 'UDF_CACHE', 1 ) ]
+ LIBS+= [ x.lib for x in DEPS ]
+
+-choice = raw_input('Continue building '+MODULE_NAME+' ? [Y,n]:')
++choice = 'Y'
+ if choice== 'n':
+ print 'To start installation please run: \n\tsetup.py install and press Enter when prompted\n'
+ sys.exit()
diff --git a/abs/not_built/core/python_modules/python-pyserial/PKGBUILD b/abs/not_built/core/python_modules/python-pyserial/PKGBUILD
new file mode 100644
index 0000000..43c5b87
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-pyserial/PKGBUILD
@@ -0,0 +1,21 @@
+# $Id: PKGBUILD 29428 2010-10-14 09:13:52Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer: Douglas Soares de Andrade <dsandrade@gmail.com>
+# Contributor: Douglas Soares de Andrade <dsandrade@gmail.com>
+
+pkgname=python-pyserial
+pkgver=2.5
+pkgrel=3
+pkgdesc="Multiplatform Serial Port Module for Python"
+arch=('any')
+url="http://pyserial.sf.net"
+license=('custom:PYTHON')
+depends=('python2')
+source=(http://downloads.sourceforge.net/sourceforge/pyserial/pyserial-$pkgver.tar.gz)
+md5sums=('34340820710239bea2ceca7f43ef8cab')
+
+build() {
+ cd $srcdir/pyserial-$pkgver
+ python2 setup.py install --root=$pkgdir
+ install -D -m644 LICENSE.txt $pkgdir/usr/share/licenses/$pkgname/LICENSE.txt
+}
diff --git a/abs/not_built/core/python_modules/python-simplejson/ChangeLog b/abs/not_built/core/python_modules/python-simplejson/ChangeLog
new file mode 100644
index 0000000..4a5d1d9
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-simplejson/ChangeLog
@@ -0,0 +1,5 @@
+2010-05-15 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * Update to major release 2.1.1
+
+2010-03-27 Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+ * Update to major release 2.1.0
diff --git a/abs/not_built/core/python_modules/python-simplejson/PKGBUILD b/abs/not_built/core/python_modules/python-simplejson/PKGBUILD
new file mode 100644
index 0000000..05e2b1b
--- /dev/null
+++ b/abs/not_built/core/python_modules/python-simplejson/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 26298 2010-09-14 17:18:19Z schuay $
+# Maintainer: Jaroslav Lichtblau <dragonlord@aur.archlinux.org>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: David Moore <davidm@sjsoft.com>
+
+pkgname=python-simplejson
+pkgver=2.1.1
+pkgrel=3
+pkgdesc="Simple, fast, extensible JSON encoder/decoder for Python"
+license=('MIT')
+arch=('any')
+url="http://undefined.org/python/#simplejson"
+depends=('python2')
+makedepends=('setuptools')
+source=(http://pypi.python.org/packages/source/s/simplejson/simplejson-${pkgver}.tar.gz)
+md5sums=('0bbe3a2e5e4cac040013733aca159d89')
+
+build() {
+ cd ${srcdir}/simplejson-${pkgver}
+
+ python2 setup.py install --root=${pkgdir}
+
+# License
+ install -Dm644 ${srcdir}/simplejson-${pkgver}/LICENSE.txt \
+ ${pkgdir}/usr/share/licenses/python-simplejson/LICENSE
+}
diff --git a/abs/not_built/core/python_modules/python2-distribute/PKGBUILD b/abs/not_built/core/python_modules/python2-distribute/PKGBUILD
new file mode 100644
index 0000000..04c0f48
--- /dev/null
+++ b/abs/not_built/core/python_modules/python2-distribute/PKGBUILD
@@ -0,0 +1,24 @@
+# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
+# Contributor: Sebastien Binet <binet@farnsworth>
+pkgname=python2-distribute
+pkgver=0.6.14
+pkgrel=4
+pkgdesc="A collection of extensions to the Python 2 distutils"
+arch=('any')
+license=('PSF')
+url="http://packages.python.org/distribute"
+depends=('python2')
+conflicts=('setuptools')
+replaces=('setuptools')
+provides=('setuptools=0.6c11')
+source=(http://pypi.python.org/packages/source/d/distribute/distribute-${pkgver}.tar.gz
+ distribute-${pkgver}_python2_and_3.patch)
+
+package() {
+ cd ${srcdir}/distribute-${pkgver}
+ patch -Np1 -i ../distribute-${pkgver}_python2_and_3.patch
+ python2 setup.py install --prefix=/usr --root=${pkgdir}
+}
+# vim: set noexpandtab tabstop=8 shiftwidth=8 textwidth=132 autoindent
+md5sums=('83ada58a83d99b28c806703597323b80'
+ 'bbf5554ade06f27285f81ed8a8a3a3f8')
diff --git a/abs/not_built/core/python_modules/python2-distribute/distribute-0.6.14_python2_and_3.patch b/abs/not_built/core/python_modules/python2-distribute/distribute-0.6.14_python2_and_3.patch
new file mode 100644
index 0000000..dc5da86
--- /dev/null
+++ b/abs/not_built/core/python_modules/python2-distribute/distribute-0.6.14_python2_and_3.patch
@@ -0,0 +1,51 @@
+diff -Naur distribute-0.6.14.ori//distribute.egg-info/entry_points.txt distribute-0.6.14/distribute.egg-info/entry_points.txt
+--- distribute-0.6.14.ori//distribute.egg-info/entry_points.txt 2010-07-14 20:14:10.000000000 -0400
++++ distribute-0.6.14/distribute.egg-info/entry_points.txt 2010-10-21 09:26:43.386667396 -0400
+@@ -31,7 +31,8 @@
+ depends.txt = setuptools.command.egg_info:warn_depends_obsolete
+
+ [console_scripts]
+-easy_install = setuptools.command.easy_install:main
++easy_install-3.1 = setuptools.command.easy_install:main
++easy_install-2.7 = setuptools.command.easy_install:main
+ easy_install-2.6 = setuptools.command.easy_install:main
+
+ [setuptools.file_finders]
+diff -Naur distribute-0.6.14.ori//distribute_setup.py distribute-0.6.14/distribute_setup.py
+--- distribute-0.6.14.ori//distribute_setup.py 2010-07-14 19:53:38.000000000 -0400
++++ distribute-0.6.14/distribute_setup.py 2010-10-21 09:25:18.356667404 -0400
+@@ -299,8 +299,7 @@
+ log.warn('Could not find the install location')
+ return
+ pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
+- setuptools_file = 'setuptools-%s-py%s.egg-info' % \
+- (SETUPTOOLS_FAKED_VERSION, pyver)
++ setuptools_file = 'setuptools-%s.egg-info' % SETUPTOOLS_FAKED_VERSION
+ pkg_info = os.path.join(placeholder, setuptools_file)
+ if os.path.exists(pkg_info):
+ log.warn('%s already exists', pkg_info)
+diff -Naur distribute-0.6.14.ori//setup.py distribute-0.6.14/setup.py
+--- distribute-0.6.14.ori//setup.py 2010-07-14 19:53:38.000000000 -0400
++++ distribute-0.6.14/setup.py 2010-10-21 09:32:44.850000736 -0400
+@@ -96,6 +96,8 @@
+ f.close()
+
+
++console_scripts = ["easy_install-%s = setuptools.command.easy_install:main" % sys.version[:3]]
++
+ # if we are installing Distribute using "python setup.py install"
+ # we need to get setuptools out of the way
+ def _easy_install_marker():
+@@ -182,11 +184,7 @@
+ "dependency_links.txt = setuptools.command.egg_info:overwrite_arg",
+ ],
+
+- "console_scripts": [
+- "easy_install = setuptools.command.easy_install:main",
+- "easy_install-%s = setuptools.command.easy_install:main"
+- % sys.version[:3]
+- ],
++ "console_scripts": console_scripts,
+
+ "setuptools.file_finders":
+ ["svn_cvs = setuptools.command.sdist:_default_revctrl"],
diff --git a/abs/not_built/core/python_modules/pyusb/PKGBUILD b/abs/not_built/core/python_modules/pyusb/PKGBUILD
new file mode 100644
index 0000000..d9349ec
--- /dev/null
+++ b/abs/not_built/core/python_modules/pyusb/PKGBUILD
@@ -0,0 +1,18 @@
+# Contributor: Jason Giangrande <jgiangrande@clarku.edu>
+pkgname=pyusb
+pkgver=0.4.3
+pkgrel=4
+pkgdesc="A native Python module written in C which provides USB access."
+arch=('i686' 'x86_64')
+url="http://pyusb.berlios.de/"
+license=('GPL')
+depends=('python2' 'libusb')
+makedepends=('setuptools')
+source=(http://downloads.sourceforge.net/project/pyusb/PyUSB%200.x/$pkgver/pyusb-$pkgver.tar.gz)
+md5sums=('a1a43bc6407caccbc22073c56439aa06')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ python2 setup.py install -f --root="${pkgdir}" || return 1
+}
+
diff --git a/abs/not_built/core/python_modules/pyxdg/PKGBUILD b/abs/not_built/core/python_modules/pyxdg/PKGBUILD
new file mode 100644
index 0000000..a3aca49
--- /dev/null
+++ b/abs/not_built/core/python_modules/pyxdg/PKGBUILD
@@ -0,0 +1,20 @@
+# $Id: PKGBUILD 89531 2010-09-01 15:23:06Z remy $
+# Maintainer: Hugo Doria <hugo@archlinux.org>
+# Contributor: Mario A. Vazquez <mario_vazq@hotmail.com>
+
+pkgname=pyxdg
+pkgver=0.19
+pkgrel=3
+pkgdesc="Python library to access freedesktop.org standards."
+arch=('any')
+url="http://freedesktop.org/Software/pyxdg"
+license=("LGPL")
+depends=('python2')
+source=(http://www.freedesktop.org/~lanius/${pkgname}-${pkgver}.tar.gz)
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ python2 setup.py install --prefix=/usr --root=${pkgdir} || return 1
+}
+md5sums=('9f33542e846d0fc1e0bfa992a8555b0a')
+
diff --git a/abs/not_built/core/rp-pppoe/PKGBUILD b/abs/not_built/core/rp-pppoe/PKGBUILD
new file mode 100644
index 0000000..1b4724d
--- /dev/null
+++ b/abs/not_built/core/rp-pppoe/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 5374 2008-07-15 17:18:23Z daniel $
+# Contributor: orelien <aurelien.foret@wanadoo.fr>
+# Maintainer: judd <jvinet@zeroflux.org>
+pkgname=rp-pppoe
+pkgver=3.10
+pkgrel=10
+pkgdesc="Roaring Penguin's Point-to-Point Protocol over Ethernet client"
+arch=(i686 x86_64)
+url="http://www.roaringpenguin.com/pppoe/"
+license=('GPL')
+groups=('base')
+depends=('ppp')
+options=('!makeflags')
+backup=(etc/ppp/pppoe.conf etc/ppp/firewall-standalone etc/ppp/firewall-masq etc/ppp/pppoe-server-options)
+source=(http://www.roaringpenguin.com/files/download/rp-pppoe-$pkgver.tar.gz adsl)
+md5sums=('d58a13cc4185bca6121a606ff456dec0'
+ 'adace1ad441aa88dcb3db52fb7f9c97f')
+
+build() {
+ cd $startdir/src/$pkgname-$pkgver/src
+ ./configure --prefix=/usr --enable-plugin=/ppp-2.4.4
+ make || return 1
+ make DESTDIR=$startdir/pkg install
+ install -m755 -D ../../adsl $startdir/pkg/etc/rc.d/adsl
+}
diff --git a/abs/not_built/core/rp-pppoe/adsl b/abs/not_built/core/rp-pppoe/adsl
new file mode 100755
index 0000000..33bd918
--- /dev/null
+++ b/abs/not_built/core/rp-pppoe/adsl
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+case "$1" in
+ start)
+ stat_busy "Starting ADSL Connection"
+ /usr/sbin/pppoe-start &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon adsl
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping ADSL Connection"
+ /usr/sbin/pppoe-stop &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon adsl
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/abs/not_built/core/speex/PKGBUILD b/abs/not_built/core/speex/PKGBUILD
new file mode 100644
index 0000000..7bf7e7b
--- /dev/null
+++ b/abs/not_built/core/speex/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 137583 2011-09-09 22:58:20Z allan $
+# Maintainer:
+# Contributer: Jason Chu <jason@archlinux.org>
+
+pkgname=speex
+pkgver=1.2rc1
+pkgrel=2
+pkgdesc="A free codec for free speech"
+arch=('i686' 'x86_64')
+url="http://www.speex.org/"
+license=('BSD')
+depends=('libogg')
+options=('!libtool')
+source=(http://downloads.us.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz)
+md5sums=('c4438b22c08e5811ff10e2b06ee9b9ae')
+
+build() {
+ cd $srcdir/speex-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
+ make
+}
+
+package() {
+ cd $srcdir/speex-$pkgver
+ make DESTDIR=$startdir/pkg install
+
+ install -D -m644 COPYING $startdir/pkg/usr/share/licenses/$pkgname/LICENSE
+}
diff --git a/abs/not_built/core/systemd/systemd-tools/0001-Reinstate-TIMEOUT-handling.patch b/abs/not_built/core/systemd/systemd-tools/0001-Reinstate-TIMEOUT-handling.patch
new file mode 100644
index 0000000..766dcb8
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/0001-Reinstate-TIMEOUT-handling.patch
@@ -0,0 +1,124 @@
+From 2127f99fb43d2ef950e95329ce40bdd5da8b015c Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner@archlinux.org>
+Date: Fri, 25 May 2012 19:43:24 -0400
+Subject: [PATCH] Reinstate TIMEOUT= handling
+
+This is mostly to deal with ipw2?00 drivers which have yet to be fixed
+in the kernel.
+---
+ src/libudev/libudev-device.c | 19 +++++++++++++++++++
+ src/libudev/libudev-private.h | 1 +
+ src/udev/udevd.c | 13 ++++++++++---
+ 3 files changed, 30 insertions(+), 3 deletions(-)
+
+diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
+index a8277d1..5966189 100644
+--- a/src/libudev/libudev-device.c
++++ b/src/libudev/libudev-device.c
+@@ -68,6 +68,7 @@ struct udev_device {
+ struct udev_list tags_list;
+ unsigned long long int seqnum;
+ unsigned long long int usec_initialized;
++ int timeout;
+ int devlink_priority;
+ int refcount;
+ dev_t devnum;
+@@ -89,6 +90,21 @@ struct udev_device {
+ bool db_persist;
+ };
+
++int udev_device_get_timeout(struct udev_device *udev_device)
++{
++ return udev_device->timeout;
++}
++
++static int udev_device_set_timeout(struct udev_device *udev_device, int timeout)
++{
++ char num[32];
++
++ udev_device->timeout = timeout;
++ snprintf(num, sizeof(num), "%u", timeout);
++ udev_device_add_property(udev_device, "TIMEOUT", num);
++ return 0;
++}
++
+ /**
+ * udev_device_get_seqnum:
+ * @udev_device: udev device
+@@ -362,6 +378,8 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device,
+
+ util_strscpyl(path, sizeof(path), TEST_PREFIX "/sys", &property[8], NULL);
+ udev_device_set_syspath(udev_device, path);
++ } else if (strncmp(property, "TIMEOUT=", 8) == 0) {
++ udev_device_set_timeout(udev_device, strtoull(&property[8], NULL, 10));
+ } else if (startswith(property, "SUBSYSTEM=")) {
+ udev_device_set_subsystem(udev_device, &property[10]);
+ } else if (startswith(property, "DEVTYPE=")) {
+@@ -605,6 +623,7 @@ struct udev_device *udev_device_new(struct udev *udev)
+ udev_list_init(udev, &udev_device->sysattr_value_list, true);
+ udev_list_init(udev, &udev_device->sysattr_list, false);
+ udev_list_init(udev, &udev_device->tags_list, true);
++ udev_device->timeout = -1;
+ udev_device->watch_handle = -1;
+ /* copy global properties */
+ udev_list_entry_foreach(list_entry, udev_get_properties_list_entry(udev))
+diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h
+index 4eb4a59..99aefeb 100644
+--- a/src/libudev/libudev-private.h
++++ b/src/libudev/libudev-private.h
+@@ -70,6 +70,7 @@ const char *udev_device_get_id_filename(struct udev_device *udev_device);
+ void udev_device_set_is_initialized(struct udev_device *udev_device);
+ int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
+ void udev_device_cleanup_tags_list(struct udev_device *udev_device);
++int udev_device_get_timeout(struct udev_device *udev_device);
+ unsigned long long udev_device_get_usec_initialized(struct udev_device *udev_device);
+ void udev_device_set_usec_initialized(struct udev_device *udev_device, unsigned long long usec_initialized);
+ int udev_device_get_devlink_priority(struct udev_device *udev_device);
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index 0d85960..cd24462 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -384,7 +384,7 @@ out:
+ }
+ }
+
+-static void event_run(struct event *event)
++static void event_run(struct event *event, bool force)
+ {
+ struct udev_list_node *loop;
+
+@@ -410,7 +410,7 @@ static void event_run(struct event *event)
+ return;
+ }
+
+- if (children >= children_max) {
++ if (!force && children >= children_max) {
+ if (children_max > 1)
+ log_debug("maximum number (%i) of children reached\n", children);
+ return;
+@@ -444,6 +444,13 @@ static int event_queue_insert(struct udev_device *dev)
+
+ event->state = EVENT_QUEUED;
+ udev_list_node_append(&event->node, &event_list);
++
++ /* run all events with a timeout set immediately */
++ if (udev_device_get_timeout(dev) > 0) {
++ event_run(event, true);
++ return 0;
++ }
++
+ return 0;
+ }
+
+@@ -549,7 +556,7 @@ static void event_queue_start(struct udev *udev)
+ if (is_devpath_busy(event))
+ continue;
+
+- event_run(event);
++ event_run(event, false);
+ }
+ }
+
+--
+1.7.10.2
+
diff --git a/abs/not_built/core/systemd/systemd-tools/PKGBUILD b/abs/not_built/core/systemd/systemd-tools/PKGBUILD
new file mode 100644
index 0000000..338fd8f
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/PKGBUILD
@@ -0,0 +1,205 @@
+# Maintainer: Dave Reisner <dreisner@archlinux.org>
+# Contributor: Tom Gundersen <teg@jklm.no>
+
+pkgbase=systemd
+pkgname=('systemd' 'libsystemd' 'systemd-tools' 'systemd-sysvcompat')
+pkgver=186
+pkgrel=2
+arch=('i686' 'x86_64')
+url="http://www.freedesktop.org/wiki/Software/systemd"
+license=('GPL2' 'LGPL2.1' 'MIT')
+makedepends=('acl' 'cryptsetup' 'dbus-core' 'docbook-xsl' 'gobject-introspection' 'gperf'
+ 'gtk-doc' 'intltool' 'kmod' 'libcap' 'libxslt' 'linux-api-headers' 'pam' 'xz')
+options=('!libtool')
+source=("http://www.freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
+ 'initcpio-hook-udev'
+ 'initcpio-install-udev'
+ 'initcpio-install-timestamp'
+ '0001-Reinstate-TIMEOUT-handling.patch'
+ 'locale.sh')
+md5sums=('17eff1d31e6e49bf82e129fe57efd59b'
+ 'e99e9189aa2f6084ac28b8ddf605aeb8'
+ '59e91c4d7a69b7bf12c86a9982e37ced'
+ 'df69615503ad293c9ddf9d8b7755282d'
+ '5543be25f205f853a21fa5ee68e03f0d'
+ 'f15956945052bb911e5df81cf5e7e5dc')
+
+build() {
+ cd "$pkgname-$pkgver"
+
+ # still waiting on ipw2x00 to get fixed...
+ patch -Np1 <"$srcdir/0001-Reinstate-TIMEOUT-handling.patch"
+
+ ./configure \
+ --libexecdir=/usr/lib \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --enable-split-usr \
+ --enable-introspection \
+ --enable-gtk-doc \
+ --disable-audit \
+ --disable-ima \
+ --with-pamlibdir=/usr/lib/security \
+ --with-distro=arch \
+ --with-usb-ids-path=/usr/share/hwdata/usb.ids \
+ --with-pci-ids-path=/usr/share/hwdata/pci.ids \
+ --with-firmware-path=/usr/lib/firmware/updates:/lib/firmware/updates:/usr/lib/firmware:/lib/firmware
+
+ make
+}
+
+package_systemd() {
+ pkgdesc="system and service manager"
+ depends=('acl' 'dbus-core' "libsystemd=$pkgver" 'kmod' 'libcap' 'pam'
+ "systemd-tools=$pkgver" 'util-linux' 'xz')
+ optdepends=('python-dbus: systemd-analyze'
+ 'initscripts: legacy support for hostname and vconsole setup'
+ 'initscripts-systemd: legacy generator for initialization scripts'
+ 'python-cairo: systemd-analyze'
+ 'systemd-arch-units: collection of native unit files for Arch daemon/init scripts'
+ 'systemd-sysvcompat: symlink package to provide sysvinit binaries')
+ backup=(etc/dbus-1/system.d/org.freedesktop.systemd1.conf
+ etc/dbus-1/system.d/org.freedesktop.hostname1.conf
+ etc/dbus-1/system.d/org.freedesktop.login1.conf
+ etc/dbus-1/system.d/org.freedesktop.locale1.conf
+ etc/dbus-1/system.d/org.freedesktop.timedate1.conf
+ etc/systemd/system.conf
+ etc/systemd/user.conf
+ etc/systemd/logind.conf
+ etc/systemd/journald.conf)
+ install="systemd.install"
+
+ make -C "$pkgname-$pkgver" DESTDIR="$pkgdir" install
+
+ printf "d /run/console 0755 root root\n" > "$pkgdir/usr/lib/tmpfiles.d/console.conf"
+
+ install -dm755 "$pkgdir/bin"
+ ln -s ../usr/lib/systemd/systemd "$pkgdir/bin/systemd"
+
+ # move bash-completion and symlink for loginctl
+ install -Dm644 "$pkgdir/etc/bash_completion.d/systemd-bash-completion.sh" \
+ "$pkgdir/usr/share/bash-completion/completions/systemctl"
+ ln -s systemctl "$pkgdir/usr/share/bash-completion/completions/loginctl"
+ rm -rf "$pkgdir/etc/bash_completion.d"
+
+ # don't write units to /etc by default -- we'll enable this on post_install
+ # as a sane default
+ rm "$pkgdir/etc/systemd/system/getty.target.wants/getty@tty1.service"
+ rmdir "$pkgdir/etc/systemd/system/getty.target.wants"
+
+ ### split off libsystemd (libs, includes, pkgconfig, man3)
+ rm -rf "$srcdir/_libsystemd"
+ install -dm755 "$srcdir"/_libsystemd/usr/{include,lib/pkgconfig}
+ cd "$srcdir"/_libsystemd
+ mv "$pkgdir/usr/lib"/libsystemd-*.so* usr/lib
+ mv "$pkgdir/usr/include/systemd" usr/include
+ mv "$pkgdir/usr/lib/pkgconfig"/libsystemd-*.pc usr/lib/pkgconfig
+
+ ### split out manpages for sysvcompat
+ rm -rf "$srcdir/_sysvcompat"
+ install -dm755 "$srcdir"/_sysvcompat/usr/share/man/man8/
+ mv "$pkgdir"/usr/share/man/man8/{telinit,halt,reboot,poweroff,runlevel,shutdown}.8 \
+ "$srcdir"/_sysvcompat/usr/share/man/man8
+
+ ### split out systemd-tools/udev
+ rm -rf "$srcdir/_tools"
+ install -dm755 \
+ "$srcdir"/_tools/etc/udev \
+ "$srcdir"/_tools/usr/bin \
+ "$srcdir"/_tools/usr/include \
+ "$srcdir"/_tools/usr/lib/udev \
+ "$srcdir"/_tools/usr/lib/systemd/system/{sysinit,sockets}.target.wants \
+ "$srcdir"/_tools/usr/lib/girepository-1.0 \
+ "$srcdir"/_tools/usr/share/pkgconfig \
+ "$srcdir"/_tools/usr/share/gir-1.0 \
+ "$srcdir"/_tools/usr/share/gtk-doc/html/{g,lib}udev \
+ "$srcdir"/_tools/usr/share/man/man{1,5,7,8}
+
+ cd "$srcdir/_tools"
+ mv "$pkgdir"/etc/udev etc
+ mv "$pkgdir"/etc/{binfmt,modules-load,sysctl,tmpfiles}.d etc
+ mv "$pkgdir"/usr/bin/udevadm usr/bin
+ mv "$pkgdir"/usr/bin/systemd-machine-id-setup usr/bin
+ mv "$pkgdir"/usr/lib/pkgconfig usr/lib
+ mv "$pkgdir"/usr/lib/systemd/systemd-udevd usr/lib/systemd
+ mv "$pkgdir"/usr/lib/systemd/system/systemd-udev* usr/lib/systemd/system
+ mv "$pkgdir"/usr/lib/systemd/system/sysinit.target.wants/systemd-udev* usr/lib/systemd/system/sysinit.target.wants
+ mv "$pkgdir"/usr/lib/systemd/system/sockets.target.wants/systemd-udev* usr/lib/systemd/system/sockets.target.wants
+ mv "$pkgdir"/usr/lib/lib{,g}udev* usr/lib
+ mv "$pkgdir"/usr/lib/{binfmt,sysctl,modules-load,tmpfiles}.d usr/lib
+ mv "$pkgdir"/usr/lib/udev usr/lib
+ mv "$pkgdir"/usr/include/{libudev.h,gudev-1.0} usr/include
+ mv "$pkgdir"/usr/lib/girepository-1.0 usr/lib
+ mv "$pkgdir"/usr/share/pkgconfig/udev.pc usr/share/pkgconfig
+ mv "$pkgdir"/usr/share/gir-1.0 usr/share
+ mv "$pkgdir"/usr/share/gtk-doc/html/{g,lib}udev usr/share/gtk-doc/html
+ mv "$pkgdir"/usr/share/man/man7/udev.7 usr/share/man/man7
+ mv "$pkgdir"/usr/share/man/man8/{systemd-{tmpfiles,udevd},udevadm}.8 usr/share/man/man8
+ mv "$pkgdir"/usr/share/man/man1/systemd-{ask-password,delta,detect-virt,machine-id-setup}.1 usr/share/man/man1
+ mv "$pkgdir"/usr/share/man/man5/{binfmt,modules-load,sysctl,tmpfiles}.d.5 usr/share/man/man5
+ mv "$pkgdir"/usr/share/man/man5/{hostname,{vconsole,locale}.conf}.5 usr/share/man/man5
+ mv "$pkgdir"/usr/bin/systemd-{ask-password,delta,detect-virt,tmpfiles,tty-ask-password-agent} usr/bin
+ mv "$pkgdir"/usr/lib/systemd/systemd-{ac-power,binfmt,cryptsetup,modules-load,random-seed,remount-fs,reply-password,sysctl,timestamp,vconsole-setup} usr/lib/systemd
+}
+
+package_systemd-sysvcompat() {
+ pkgdesc="sysvinit compat for systemd"
+ conflicts=('sysvinit' 'initscripts')
+
+ mv "$srcdir/_sysvcompat"/* "$pkgdir"
+
+ install -dm755 "$pkgdir/sbin"
+ for tool in runlevel reboot shutdown poweroff halt telinit; do
+ ln -s '/usr/bin/systemctl' "$pkgdir/sbin/$tool"
+ done
+
+ ln -s '../usr/lib/systemd/systemd' "$pkgdir/sbin/init"
+
+ install -Dm755 "$srcdir/locale.sh" "$pkgdir/etc/profile.d/locale.sh"
+}
+
+package_libsystemd() {
+ pkgdesc="systemd client libraries"
+ depends=('xz')
+
+ mv "$srcdir/_libsystemd"/* "$pkgdir"
+}
+
+package_systemd-tools() {
+ pkgdesc='standalone tools from systemd'
+ url='http://www.freedesktop.org/wiki/Software/systemd'
+ depends=('acl' 'bash' 'glibc' 'glib2' 'libsystemd' 'kmod' 'hwids' 'util-linux' 'kbd')
+ optdepends=('cryptsetup: required for encrypted block devices')
+ provides=("udev=$pkgver")
+ conflicts=('udev')
+ replaces=('udev')
+ install='systemd-tools.install'
+
+ mv "$srcdir/_tools/"* "$pkgdir"
+
+ # the path to udevadm is hardcoded in some places
+ install -d "$pkgdir/sbin"
+ ln -s ../usr/bin/udevadm "$pkgdir/sbin/udevadm"
+
+ # udevd is no longer udevd because systemd. why isn't udevadm now udevctl?
+ ln -s ../lib/systemd/systemd-udevd "$pkgdir/usr/bin/udevd"
+
+ # add back tmpfiles.d/legacy.conf
+ install -m644 "systemd-$pkgver/tmpfiles.d/legacy.conf" "$pkgdir/usr/lib/tmpfiles.d"
+
+ # Replace dialout/tape/cdrom group in rules with uucp/storage/optical group
+ sed -i 's#GROUP="dialout"#GROUP="uucp"#g;
+ s#GROUP="tape"#GROUP="storage"#g;
+ s#GROUP="cdrom"#GROUP="optical"#g' "$pkgdir"/usr/lib/udev/rules.d/*.rules
+
+ # add mkinitcpio hooks
+ install -Dm644 "$srcdir/initcpio-install-udev" "$pkgdir/usr/lib/initcpio/install/udev"
+ install -Dm644 "$srcdir/initcpio-hook-udev" "$pkgdir/usr/lib/initcpio/hooks/udev"
+ install -Dm644 "$srcdir/initcpio-install-timestamp" "$pkgdir/usr/lib/initcpio/install/timestamp"
+
+ # XXX: kill off coredump rule until the journal can recover coredumps
+ # this file needs to come back as part of systemd, not systemd-tools
+ rm "$pkgdir/usr/lib/sysctl.d/coredump.conf"
+}
+
+# vim: ft=sh syn=sh et
diff --git a/abs/not_built/core/systemd/systemd-tools/initcpio-hook-udev b/abs/not_built/core/systemd/systemd-tools/initcpio-hook-udev
new file mode 100644
index 0000000..75da7e4
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/initcpio-hook-udev
@@ -0,0 +1,20 @@
+#!/usr/bin/ash
+
+run_earlyhook() {
+ udevd --daemon --resolve-names=never
+ udevd_running=1
+}
+
+run_hook() {
+ msg ":: Triggering uevents..."
+ udevadm trigger --action=add --type=subsystems
+ udevadm trigger --action=add --type=devices
+ udevadm settle
+}
+
+run_cleanuphook() {
+ udevadm control --exit
+ udevadm info --cleanup-db
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/not_built/core/systemd/systemd-tools/initcpio-install-timestamp b/abs/not_built/core/systemd/systemd-tools/initcpio-install-timestamp
new file mode 100644
index 0000000..259cc70
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/initcpio-install-timestamp
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+build() {
+ add_binary /usr/lib/systemd/systemd-timestamp /usr/bin/systemd-timestamp
+}
+
+help() {
+ cat <<HELPEOF
+Provides support for RD_TIMESTAMP in early userspace, which can be read by a
+program such as systemd-analyze to determine boot time.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/not_built/core/systemd/systemd-tools/initcpio-install-udev b/abs/not_built/core/systemd/systemd-tools/initcpio-install-udev
new file mode 100644
index 0000000..7624299
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/initcpio-install-udev
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+build() {
+ local rules tool
+
+ add_file "/etc/udev/udev.conf"
+ add_binary /usr/lib/systemd/systemd-udevd /usr/bin/udevd
+ add_binary /usr/bin/udevadm
+
+ for rules in 50-udev-default.rules 60-persistent-storage.rules 80-drivers.rules; do
+ add_file "/usr/lib/udev/rules.d/$rules"
+ done
+ for tool in ata_id scsi_id; do
+ add_file "/usr/lib/udev/$tool"
+ done
+
+ add_runscript
+}
+
+help() {
+ cat <<HELPEOF
+This hook will use udev to create your root device node and detect the needed
+modules for your root device. It is also required for firmware loading in
+initramfs. It is recommended to use this hook.
+HELPEOF
+}
+
+# vim: set ft=sh ts=4 sw=4 et:
diff --git a/abs/not_built/core/systemd/systemd-tools/locale.sh b/abs/not_built/core/systemd/systemd-tools/locale.sh
new file mode 100644
index 0000000..a4c413e
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/locale.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+if [ ! -r /etc/locale.conf ]; then
+ return
+fi
+
+. /etc/locale.conf
+
+if [ "${LANG+x}" = 'x' ]; then
+ export LANG
+fi
+
+if [ "${LC_CTYPE+x}" = 'x' ]; then
+ export LC_CTYPE
+fi
+
+if [ "${LC_NUMERIC+x}" = 'x' ]; then
+ export LC_NUMERIC
+fi
+
+if [ "${LC_TIME+x}" = 'x' ]; then
+ export LC_TIME
+fi
+
+if [ "${LC_COLLATE+x}" = 'x' ]; then
+ export LC_COLLATE
+fi
+
+if [ "${LC_MONETARY+x}" = 'x' ]; then
+ export LC_MONETARY
+fi
+
+if [ "${LC_MESSAGES+x}" = 'x' ]; then
+ export LC_MESSAGES
+fi
+
+if [ "${LC_PAPER+x}" = 'x' ]; then
+ export LC_PAPER
+fi
+
+if [ "${LC_NAME+x}" = 'x' ]; then
+ export LC_NAME
+fi
+
+if [ "${LC_ADDRESS+x}" = 'x' ]; then
+ export LC_ADDRESS
+fi
+
+if [ "${LC_TELEPHONE+x}" = 'x' ]; then
+ export LC_TELEPHONE
+fi
+
+if [ "${LC_MEASUREMENT+x}" = 'x' ]; then
+ export LC_MEASUREMENT
+fi
+
+if [ "${LC_IDENTIFICATION+x}" = 'x' ]; then
+ export LC_IDENTIFICATION
+fi
+
diff --git a/abs/not_built/core/systemd/systemd-tools/systemd-tools.install b/abs/not_built/core/systemd/systemd-tools/systemd-tools.install
new file mode 100644
index 0000000..7d0bd87
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/systemd-tools.install
@@ -0,0 +1,35 @@
+# arg 1: the new package version
+# arg 2: the old package version
+
+post_install() {
+ systemd-machine-id-setup
+}
+
+post_upgrade() {
+ systemd-machine-id-setup
+
+ if [ "$(vercmp $2 174)" -lt 0 ]; then
+ echo " * We now use upstream rules for assigning devices to the 'disk', 'optical',"
+ echo " 'scanner' and 'video' groups. Beware of any changes."
+ echo " * We no longer create symlinks from /dev/<dev> to /dev/<dev>0."
+ echo " * For security reasons, we no longer add devices to the 'storage' group. Use"
+ echo " udisks and friends, or add custom rules to /etc/udev.d/rules/, if you want"
+ echo " this functionality back."
+ echo " * We no longer create the static nodes on install needed for an initrd-less"
+ echo " boot where devtmpfs is not mounted by the kernel, this only affects fresh"
+ echo " installs."
+ fi
+ if [ "$(vercmp $2 175)" -lt 0 ]; then
+ echo " * devtmpfs support is now a hard requirement. Users of the official Arch"
+ echo " kernels have this enabled."
+ fi
+ if [ "$(vercmp $2 181)" -lt 0 ]; then
+ echo " * udev-compat has been removed, and should be uninstalled."
+ echo " * Framebuffers are no longer blacklisted by default."
+ echo " * binaries moved from /sbin to /usr/bin"
+ fi
+ if [ "$(vercmp $2 181-3)" -lt 0 ]; then
+ echo " * if your kernel does not provide /dev/loop-control, you need to manually"
+ echo " load the 'loop' module before using losetup"
+ fi
+}
diff --git a/abs/not_built/core/systemd/systemd-tools/systemd.install b/abs/not_built/core/systemd/systemd-tools/systemd.install
new file mode 100644
index 0000000..e369f09
--- /dev/null
+++ b/abs/not_built/core/systemd/systemd-tools/systemd.install
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+sd_booted() {
+ [ -e sys/fs/cgroup/systemd ]
+}
+
+post_install() {
+ # enable getty@tty1 by default, but don't track the file
+ systemctl enable getty@.service
+
+ echo ":: Append 'init=/bin/systemd' to your kernel command line in your"
+ echo " bootloader to replace sysvinit with systemd"
+}
+
+post_upgrade() {
+ if sd_booted; then
+ # we moved the binary in 44-2 to /usr, so a reexec leads to a
+ # coredump. refuse this reexec and warn the user that they should
+ # reboot instead.
+ if [ "$(vercmp 44-2 "$2")" -eq 1 ]; then
+ echo "warning: refusing to reexec systemd. the system should be rebooted."
+ else
+ systemctl daemon-reload
+ systemctl daemon-reexec
+ fi
+ fi
+
+ # getty@tty1.service is no longer enabled by default, but we don't want to break
+ # existing setups.
+ if [ "$(vercmp 183 "$2")" -eq 1 ]; then
+ # systemctl seems to be whiny on sysvinit. this will succeed unless something
+ # horrific happens, so just mask the error.
+ systemctl -q enable getty@.service || true
+ fi
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/abs/not_built/core/test-pattern/PKGBUILD b/abs/not_built/core/test-pattern/PKGBUILD
new file mode 100644
index 0000000..7ac825b
--- /dev/null
+++ b/abs/not_built/core/test-pattern/PKGBUILD
@@ -0,0 +1,16 @@
+pkgname=test-pattern
+pkgver=1.0
+pkgrel=6
+arch=('i686')
+pkgdesc="script to create test pattern videos"
+depends=(imagemagick)
+license=('GPL')
+source=(test_pattern.bash)
+
+build() {
+ cd $startdir/src
+# mkdir $startdir/pkg/usr/bin/
+ install -m755 -D test_pattern.bash $startdir/pkg/usr/bin/test_pattern.bash
+}
+
+md5sums=('3a427a5dee0763c6b0a5938fedbde883')
diff --git a/abs/not_built/core/test-pattern/test_pattern.bash b/abs/not_built/core/test-pattern/test_pattern.bash
new file mode 100755
index 0000000..d220fb0
--- /dev/null
+++ b/abs/not_built/core/test-pattern/test_pattern.bash
@@ -0,0 +1,326 @@
+#!/bin/bash
+
+# Set default options to be overriden by command line arguments.
+
+w=400
+h=325
+rate=50
+TEMPDIR=
+unset remove_tempdir
+interlaced=
+aspect_ratio=
+bitrate=
+
+while getopts ":w:h:t:r:ia:b:" opt; do
+ case $opt in
+ w)
+ w=$OPTARG
+ ;;
+ h)
+ h=$OPTARG
+ ;;
+ t)
+ TEMPDIR=$OPTARG
+ ;;
+ r)
+ rate=$OPTARG
+ ;;
+ i)
+ interlaced=TRUE
+ ;;
+ a)
+ aspect_ratio=$OPTARG
+ ;;
+ b)
+ bitrate=$OPTARG
+ ;;
+ \?)
+ echo -n "\
+Error: Invalid option -$OPTARG
+
+Usage:
+ test_pattern.bash [options]
+ -w width
+ The width in pixels.
+ -h height
+ The height in pixels.
+ -t tempdir
+ Temporary directory for intermediate files. If no directory is specified, one is created and deleted at the end of processing.
+ -r fieldrate
+ -i
+ Generate an interlaced test pattern
+ -a n:m
+ Aspect ratio of generated video.
+ -b bitrate
+ Bitrate used for encoding.
+
+Example:
+test_pattern.bash -w 1440 -h 1080 -t temp -r 50 -i -a 16:9 -b 12000k
+"
+ exit 1
+ esac
+done
+
+if [ -z "$aspect_ratio" ] ; then
+ aspect_ratio="${w}:${h}"
+fi
+
+aspectx=$(echo $aspect_ratio | cut -d: -f1)
+aspecty=$(echo $aspect_ratio | cut -d: -f2)
+
+# Calculate some dimensions based on the requested size.
+
+barw=$((w/32))
+barstep=$((w/90))
+barstart=$((-barw/barstep-1))
+
+frames=$((w/2))
+
+unity=$((h*2/27))
+unitx=$((unity*aspecty*w/(aspectx*h)))
+gridlw=$((unity*3/43))
+
+echo unity=$unity
+echo unitx=$unitx
+
+nvgrid=$(((h-gridlw)/unity))
+nhgrid=$(((((w-gridlw)/unitx)-1)/2*2+1))
+
+gridstartx=$((w/2-(nhgrid*unitx+gridlw)/2-1))
+gridstarty=$((h/2-(nvgrid*unity+gridlw)/2-1))
+
+echo nvgrid=$nvgrid
+echo nhgrid=$nhgrid
+echo gridstartx=$gridstartx
+echo gridstarty=$gridstarty
+
+echo parsed tempdir $TEMPDIR
+
+if [ -z "$TEMPDIR" ] ; then
+ TEMPDIR=$(mktemp -d --tmpdir=/tmp)
+ remove_tempdir=1
+else
+ if [ ! -d "$TEMPDIR" ] ; then
+ mkdir $TEMPDIR
+ fi
+fi
+
+echo parsed tempdir $TEMPDIR $remove_tempdir
+
+unset checker
+checker=( -fill "rgb(192,192,192)" )
+for ((g=-9;g<=7;g=g+2)) ; do
+ checker=( "${checker[@]}"
+ -draw
+ "rectangle $((w/2+g*unitx*7/10)),$((gridstarty+unity*3+gridlw)) $((w/2+(g+1)*unitx*7/10)),$((gridstarty+unity*4+gridlw))" )
+done
+
+checker=( "${checker[@]}" -fill black )
+for ((g=-8;g<=8;g=g+2)) ; do
+ checker=( "${checker[@]}"
+ -draw
+ "rectangle $((w/2+g*unitx*7/10)),$((gridstarty+unity*3+gridlw)) $((w/2+(g+1)*unitx*7/10)),$((gridstarty+unity*4+gridlw))" )
+done
+
+unset stripe
+stripe=( -fill white )
+
+for ((g=0;g<5;g++)) ; do
+ startx=$((w/2+(3-g*2)*unitx))
+ endx=$((startx+2*unitx))
+
+ for ((x=startx;x<endx;x=x+2*(g+1))) ; do
+ stripe=( "${stripe[@]}"
+ -draw
+ "rectangle $x,$((gridstarty+unity*7+gridlw)) $((x+g)),$((gridstarty+unity*9+gridlw))" )
+ done
+done
+
+for ((g=0;g<13;g++)) ; do
+ stripe=( "${stripe[@]}"
+ -draw
+ "rectangle $((gridstartx+(nhgrid/2-6+g)*unitx)),$((gridstarty+unity*6+gridlw)) $((gridstartx+(nhgrid/2-6+g)*unitx+gridlw)),$((gridstarty+unity*7+gridlw-1))" )
+done
+
+convert -size ${w}x${h} xc:white \
+ -fill "rgb(204,204,0)" \
+ -draw "rectangle $((w/2-6*unitx)),$((gridstarty+unity*4+gridlw)) $((w/2-4*unitx)),$((gridstarty+unity*6+gridlw))" \
+ -draw "rectangle $((w/2-6*unitx)),$((gridstarty+unity*11+gridlw)) $((w/2+6*unitx)),$((gridstarty+unity*13+gridlw))" \
+ -fill "rgb(0,204,204)" \
+ -draw "rectangle $((w/2-4*unitx)),$((gridstarty+unity*4+gridlw)) $((w/2-2*unitx)),$((gridstarty+unity*6+gridlw))" \
+ -fill "rgb(0,204,0)" \
+ -draw "rectangle $((w/2-2*unitx)),$((gridstarty+unity*4+gridlw)) $((w/2-0*unitx)),$((gridstarty+unity*6+gridlw))" \
+ -fill "rgb(204,0,204)" \
+ -draw "rectangle $((w/2-0*unitx)),$((gridstarty+unity*4+gridlw)) $((w/2+2*unitx)),$((gridstarty+unity*6+gridlw))" \
+ -fill "rgb(204,0,0)" \
+ -draw "rectangle $((w/2+2*unitx)),$((gridstarty+unity*4+gridlw)) $((w/2+4*unitx)),$((gridstarty+unity*6+gridlw))" \
+ -draw "rectangle $((w/2-unitx/2)),$((gridstarty+unity*11+gridlw)) $((w/2+unitx/2)),$((gridstarty+unity*13+gridlw))" \
+ -fill "rgb(0,0,204)" \
+ -draw "rectangle $((w/2+4*unitx)),$((gridstarty+unity*4+gridlw)) $((w/2+6*unitx)),$((gridstarty+unity*6+gridlw))" \
+\
+ -fill black \
+ -draw "rectangle $((w/2-6*unitx)),$((gridstarty+unity*6+gridlw)) $((w/2+6*unitx)),$((gridstarty+unity*9+gridlw))" \
+ "${stripe[@]}" \
+ -fill black \
+ -draw "rectangle $((w/2-(unitx-gridlw)/2)),$((gridstarty+unity*5+gridlw)) $((w/2+(unitx-gridlw)/2-1)),$((gridstarty+unity*8+gridlw))" \
+ -fill white \
+ -draw "rectangle $((w/2-6*unitx)),$((h/2-gridlw/2)) $((w/2+6*unitx)),$((h/2-gridlw/2+gridlw))" \
+ -draw "rectangle $((w/2-gridlw/2)),$((gridstarty+unity*5+gridlw)) $((w/2-gridlw/2+gridlw)),$((gridstarty+unity*8+gridlw))" \
+\
+ -fill "rgb(0,0,0)" \
+ -draw "rectangle $((w/2-6*unitx)),$((gridstarty+unity*9+gridlw)) $((w/2-4*unitx)),$((gridstarty+unity*10+gridlw))" \
+ -fill "rgb(51,51,51)" \
+ -draw "rectangle $((w/2-4*unitx)),$((gridstarty+unity*9+gridlw)) $((w/2-2*unitx)),$((gridstarty+unity*10+gridlw))" \
+ -fill "rgb(102,102,102)" \
+ -draw "rectangle $((w/2-2*unitx)),$((gridstarty+unity*9+gridlw)) $((w/2-0*unitx)),$((gridstarty+unity*10+gridlw))" \
+ -fill "rgb(153,153,153)" \
+ -draw "rectangle $((w/2-0*unitx)),$((gridstarty+unity*9+gridlw)) $((w/2+2*unitx)),$((gridstarty+unity*10+gridlw))" \
+ -fill "rgb(204,204,204)" \
+ -draw "rectangle $((w/2+2*unitx)),$((gridstarty+unity*9+gridlw)) $((w/2+4*unitx)),$((gridstarty+unity*10+gridlw))" \
+ -fill "rgb(255,255,255)" \
+ -draw "rectangle $((w/2+4*unitx)),$((gridstarty+unity*9+gridlw)) $((w/2+6*unitx)),$((gridstarty+unity*10+gridlw))" \
+\
+ -fill black \
+ -draw "rectangle $((w/2-2*unitx)),$((gridstarty+unity*1+gridlw)) $((w/2+2*unitx)),$((gridstarty+unity*2+gridlw))" \
+ -draw "rectangle $((w/2-6*unitx)),$((gridstarty+unity*2+gridlw)) $((w/2-3*unitx)),$((gridstarty+unity*3+gridlw))" \
+ -draw "rectangle $((w/2+6*unitx)),$((gridstarty+unity*2+gridlw)) $((w/2+3*unitx)),$((gridstarty+unity*3+gridlw))" \
+ -draw "rectangle $((gridstartx+(nhgrid/2-2)*unitx)),$((gridstarty+unity*2+gridlw)) $((gridstartx+(nhgrid/2-2)*unitx+gridlw)),$((gridstarty+unity*3+gridlw))" \
+ -draw "rectangle $((w/2-3*unitx+1)),$((gridstarty+unity*10+gridlw)) $((w/2+3*unitx)),$((gridstarty+unity*11+gridlw))" \
+ -fill white \
+ -draw "rectangle $((gridstartx+(nhgrid/2-2)*unitx)),$((gridstarty+unity*10+gridlw)) $((gridstartx+(nhgrid/2-2)*unitx+gridlw)),$((gridstarty+unity*11+gridlw))" \
+ "${checker[@]}" \
+ ${TEMPDIR}/centre.png
+
+convert -size ${w}x${h} xc:black \
+ -fill white \
+ -draw "ellipse $((w/2)),$((h/2)) $((6*unitx)),$((6*unity)) 0,360" \
+ ${TEMPDIR}/circle.png
+
+unset drawgrid
+drawgrid=( -fill white )
+for ((g=0;g<=$nhgrid;g++)) ; do
+ drawgrid=( "${drawgrid[@]}"
+ -draw
+ "rectangle $((gridstartx+g*unitx)),0 $((gridstartx+g*unitx+gridlw)),$h" )
+done
+
+for ((g=0;g<=$nvgrid;g++)) ; do
+ drawgrid=( "${drawgrid[@]}"
+ -draw
+ "rectangle 0,$((gridstarty+g*unity)) $w,$((gridstarty+g*unity+gridlw))" )
+done
+
+drawgrid=( "${drawgrid[@]}"
+ -draw "rectangle 0,0 $gridstartx,$h"
+ -draw "rectangle 0,0 $w,$gridstarty"
+ -draw "rectangle $w,$h $((gridstartx+nhgrid*unitx)),0"
+ -draw "rectangle $w,$h 0,$((gridstarty+nvgrid*unity))"
+ -fill black
+)
+
+for ((g=0;g<=$nhgrid;g=g+2)) ; do
+ drawgrid=( "${drawgrid[@]}"
+ -draw
+ "rectangle $((gridstartx+g*unitx+gridlw+1)),0 $((gridstartx+(g+1)*unitx)),$((gridstarty-1))"
+ -draw
+ "rectangle $((gridstartx+g*unitx+gridlw+1)),$((gridstarty+nvgrid*unity+gridlw+1)) $((gridstartx+(g+1)*unitx)),$h"
+ )
+done
+
+for ((g=0;g<=$nvgrid;g=g+2)) ; do
+ drawgrid=( "${drawgrid[@]}"
+ -draw
+ "rectangle 0,$((gridstarty+g*unity+gridlw+1)) $((gridstartx-1)),$((gridstarty+(g+1)*unity-1))"
+ -draw
+ "rectangle $((gridstartx+nhgrid*unitx+gridlw+1)),$((gridstarty+g*unity+gridlw+1)) $w,$((gridstarty+(g+1)*unity-1))"
+ )
+done
+
+diagonals=(
+ -fill white
+ -linewidth 10
+ -fill white
+ -draw "line 0,0 $((w/2)),$((h-1))"
+ -draw "line 0,0 $((w-1)),$((h/2))"
+ -draw "line 0,$((h-1)) $((w/2)),0"
+ -draw "line 0,$((h-1)) $((w-1)),$((h/2))"
+ -draw "line $((w-1)),0 $((w/2)),$((h-1))"
+ -draw "line $((w-1)),0 0,$((h/2))"
+ -draw "line $((w-1)),$((h-1)) $((w/2)),0"
+ -draw "line $((w-1)),$((h-1)) 0,$((h/2))" )
+
+convert -size ${w}x${h} xc:grey50 \
+ "${diagonals[@]}" \
+ "${drawgrid[@]}" \
+ -fill "rgb(51,153,102)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2-7)*unitx+gridlw+1)),$((gridstarty+unity+gridlw+1)) $((gridstartx+(nhgrid/2-6)*unitx-1)),$((h/2))" \
+ -fill "rgb(204,102,102)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2-7)*unitx+gridlw+1)),$((h/2)) $((gridstartx+(nhgrid/2-6)*unitx-1)),$((gridstarty+unity*12-1))" \
+ -fill "rgb(102,102,255)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2-6)*unitx)),$((gridstarty+unity+gridlw+1)) $((gridstartx+(nhgrid/2-5)*unitx-1)),$((gridstarty+unity*3-1))" \
+ -fill "rgb(153,102,0)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2-6)*unitx)),$((gridstarty+10*unity+gridlw+1)) $((gridstartx+(nhgrid/2-5)*unitx-1)),$((gridstarty+unity*12-1))" \
+ -fill "rgb(128,128,0)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2+7)*unitx+gridlw+1)),$((gridstarty+unity+gridlw+1)) $((gridstartx+(nhgrid/2+8)*unitx-1)),$((h/2))" \
+ -fill "rgb(102,102,255)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2+7)*unitx+gridlw+1)),$((h/2)) $((gridstartx+(nhgrid/2+8)*unitx-1)),$((gridstarty+unity*12-1))" \
+ -fill "rgb(102,102,255)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2+6)*unitx+gridlw+1)),$((gridstarty+unity+gridlw+1)) $((gridstartx+(nhgrid/2+7)*unitx+gridlw)),$((gridstarty+unity*3-1))" \
+ -fill "rgb(153,102,0)" \
+ -draw "rectangle $((gridstartx+(nhgrid/2+6)*unitx+gridlw+1)),$((gridstarty+10*unity+gridlw+1)) $((gridstartx+(nhgrid/2+7)*unitx+gridlw)),$((gridstarty+unity*12-1))" \
+ ${TEMPDIR}/grid.png
+
+convert -size ${w}x${h} ${TEMPDIR}/grid.png ${TEMPDIR}/centre.png ${TEMPDIR}/circle.png -composite ${TEMPDIR}/background.png
+
+if [ -n "$interlaced" ] ; then
+ interlaced_frame=0
+ convert -size 1x${h} -tile-offset +0+1 pattern:gray50 \
+ -scale ${w}x${h}\! ${TEMPDIR}/interlace.png
+fi
+
+for ((i=0; i < $frames; i++)) ; do
+
+ prev_image_name=$image_name
+ image_name=${TEMPDIR}/test$(printf "%03d" $i).png
+ echo creating image $image_name
+
+ convert -size ${w}x${h} ${TEMPDIR}/background.png \
+ -fill black \
+ -draw "rectangle $(((barstart+i)*barstep)),0 $(((barstart+i)*barstep+barw)),${h}" \
+ -font Arial-Black-Regular \
+ -pointsize $unity \
+ -fill white \
+ -stroke black -strokewidth 5 -annotate +$((w-2*i))+$((gridstartx+11*unity)) 'Judder Test' \
+ -stroke none -annotate +$((w-2*i))+$((gridstartx+11*unity)) 'Judder Test' \
+ -depth 8 \
+ ${image_name}
+
+ if [ -n "$interlaced" ] ; then
+ interlaced_frame=$((interlaced_frame + 1))
+
+ if [ $interlaced_frame = 2 ] ; then
+ echo interlacing $((i-1)) and $i
+ interlaced_frame=0
+ convert -size ${w}x${h} -depth 8 $prev_image_name $image_name ${TEMPDIR}/interlace.png -composite ${TEMPDIR}/interlaced$(printf "%03d" $((i/2))).png
+ fi
+ fi
+done
+
+bitrate_flags=
+if [ -n "$bitrate" ] ; then
+ bitrate_flags="-b $bitrate"
+fi
+
+if [ -n "$interlaced" ] ; then
+ ffmpeg -r ${rate} -i ${TEMPDIR}/interlaced%03d.png -r ${rate} \
+ -vcodec mpeg2video -flags +ilme+ildct -aspect $aspect_ratio \
+ ${bitrate_flags} -y test.mpg
+else
+ ffmpeg -r ${rate} -i ${TEMPDIR}/test%03d.png -r ${rate} \
+ -vcodec mpeg2video -aspect $aspect_ratio \
+ ${bitrate_flags} -y test.mpg
+fi
+
+if [ -n "$remove_tempdir" ] ; then
+ rm -Rf $TEMPDIR
+fi
diff --git a/abs/not_built/core/tftp-hpa/LICENSE b/abs/not_built/core/tftp-hpa/LICENSE
new file mode 100644
index 0000000..6dade69
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tftp-hpa/PKGBUILD b/abs/not_built/core/tftp-hpa/PKGBUILD
new file mode 100644
index 0000000..cf1c9e0
--- /dev/null
+++ b/abs/not_built/core/tftp-hpa/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 37555 2009-05-02 22:51:20Z eric $
+# Maintainer: dorphell <dorphell@archlinux.org>
+# Contributor: Jose Javier <jojapa@terra.es>
+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/not_built/core/tftp-hpa/tftpd.conf b/abs/not_built/core/tftp-hpa/tftpd.conf
new file mode 100644
index 0000000..4705cc3
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tftp-hpa/tftpd.rc b/abs/not_built/core/tftp-hpa/tftpd.rc
new file mode 100755
index 0000000..b21f87f
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tiacx-firmware/PKGBUILD b/abs/not_built/core/tiacx-firmware/PKGBUILD
new file mode 100644
index 0000000..1479cf5
--- /dev/null
+++ b/abs/not_built/core/tiacx-firmware/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 59442 2009-11-23 23:27:25Z giovanni $
+# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Giovanni Scafora <giovanni@archlinux.org>
+
+pkgname=tiacx-firmware
+pkgver=2
+pkgrel=2
+pkgdesc="Firmware for Texas Instruments ACX100/ACX111 wireless chips."
+arch=('any')
+url="http://acx100.sourceforge.net/"
+license=('MPL')
+install=tiacx-firmware.install
+depends=()
+source=(ftp://ftp.archlinux.org/other/tiacx-firmware/acx-firmware-20060207.tar.bz2)
+md5sums=('b8efea38c2c598190604dfa297cc9675')
+
+build() {
+ install -d ${pkgdir}/usr/share
+ cp -r fw "${pkgdir}/usr/share/tiacx"
+ find ${pkgdir} -type d -exec chmod 755 {} \;
+ find ${pkgdir} -type f -exec chmod 644 {} \;
+}
diff --git a/abs/not_built/core/tiacx-firmware/tiacx-firmware.install b/abs/not_built/core/tiacx-firmware/tiacx-firmware.install
new file mode 100644
index 0000000..b83d6fd
--- /dev/null
+++ b/abs/not_built/core/tiacx-firmware/tiacx-firmware.install
@@ -0,0 +1,18 @@
+post_install() {
+ cat << 'EOM'
+
+ ==>
+ ==> PLEASE NOTE:
+ ==> The firmware files for ACX100/111 devices are installed in
+ ==> /usr/share/tiacx. Please identify the correct file(s) for your
+ ==> device and copy them to /lib/firmware.
+ ==>
+ ==> See http://acx100.sourceforge.net/wiki/Firmware for details.
+ ==>
+
+EOM
+}
+
+post_upgrade() {
+ post_install
+}
diff --git a/abs/not_built/core/tiacx/PKGBUILD b/abs/not_built/core/tiacx/PKGBUILD
new file mode 100644
index 0000000..428d993
--- /dev/null
+++ b/abs/not_built/core/tiacx/PKGBUILD
@@ -0,0 +1,41 @@
+# Contributor: James Rayner <iphitus@gmail.com>
+
+pkgname=tiacx
+pkgver=20080210
+pkgrel=22
+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.39' 'kernel26<2.6.40' 'tiacx-firmware')
+makedepends=('kernel26-headers>=2.6.39' 'kernel26-headers<2.6.40')
+install=acx.install
+source=(http://downloads.sourceforge.net/sourceforge/acx100/acx-$pkgver.tar.bz2
+ kernel-2.6.27.patch
+ kernel-2.6.30.patch
+ kernel-2.6.31.patch
+ kernel-2.6.33.patch)
+options=(!strip)
+_kernver=2.6.39-LinHES
+md5sums=('7d5ce3215708e4e9f95cf567a9ee3a12'
+ '9895f72f8d0c84956b0f6c3b16df0fe8'
+ 'e2900aee839ce711a7f7606b3e3de36e'
+ 'dbcb276d77df7801cef58a85c18dfe94'
+ '9cd35ea33b8abdd2e4efec485b05477e')
+
+build() {
+ cd $srcdir/acx-$pkgver
+ patch -Np1 -i ../kernel-2.6.27.patch
+ patch -Np0 -i ../kernel-2.6.30.patch
+ patch -Np1 -i ../kernel-2.6.31.patch
+ patch -Np0 -i ../kernel-2.6.33.patch
+ make -C /lib/modules/${_kernver}/build M=$(pwd)
+}
+
+package () {
+ cd $srcdir/acx-$pkgver
+ install -D acx.ko $pkgdir/lib/modules/${_kernver}/kernel/drivers/net/wireless/tiacx/acx.ko
+ sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install
+ # gzip -9 modules
+ find "$pkgdir" -name '*.ko' -exec gzip -9 {} \;
+}
diff --git a/abs/not_built/core/tiacx/acx.install b/abs/not_built/core/tiacx/acx.install
new file mode 100644
index 0000000..971bf32
--- /dev/null
+++ b/abs/not_built/core/tiacx/acx.install
@@ -0,0 +1,19 @@
+# arg 1: the new package version
+post_install() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION > /dev/null 2>&1
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION > /dev/null 2>&1
+
+}
+
+# arg 1: the old package version
+post_remove() {
+ KERNEL_VERSION='2.6.39-LinHES'
+ depmod $KERNEL_VERSION > /dev/null 2>&1
+}
diff --git a/abs/not_built/core/tiacx/kernel-2.6.27.patch b/abs/not_built/core/tiacx/kernel-2.6.27.patch
new file mode 100644
index 0000000..f0c114b
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tiacx/kernel-2.6.30.patch b/abs/not_built/core/tiacx/kernel-2.6.30.patch
new file mode 100644
index 0000000..b5d94a1
--- /dev/null
+++ b/abs/not_built/core/tiacx/kernel-2.6.30.patch
@@ -0,0 +1,16 @@
+--- wlan_compat.h~ 2009-06-12 09:17:30.000000000 +0200
++++ wlan_compat.h 2009-06-12 09:17:30.000000000 +0200
+@@ -217,13 +217,6 @@
+ /*=============================================================*/
+ #define WLAN_PACKED __attribute__ ((packed))
+
+-/* Interrupt handler backwards compatibility stuff */
+-#ifndef IRQ_NONE
+-#define IRQ_NONE
+-#define IRQ_HANDLED
+-typedef void irqreturn_t;
+-#endif
+-
+ #ifndef ARPHRD_IEEE80211_PRISM
+ #define ARPHRD_IEEE80211_PRISM 802
+ #endif
diff --git a/abs/not_built/core/tiacx/kernel-2.6.31.patch b/abs/not_built/core/tiacx/kernel-2.6.31.patch
new file mode 100644
index 0000000..2a89e3c
--- /dev/null
+++ b/abs/not_built/core/tiacx/kernel-2.6.31.patch
@@ -0,0 +1,88 @@
+--- acx-20080210/pci.c 2008-02-10 21:06:42.000000000 +0100
++++ acx-20080210/pci.c 2009-09-11 22:27:28.000000000 +0200
+@@ -1437,6 +1437,19 @@
+
+ static void dummy_netdev_init(struct net_device *ndev) {}
+
++static const struct net_device_ops acx_netdev_ops = {
++ .ndo_open = &acxpci_e_open,
++ .ndo_stop = &acxpci_e_close,
++ .ndo_start_xmit = &acx_i_start_xmit,
++ .ndo_get_stats = &acx_e_get_stats,
++#if IW_HANDLER_VERSION <= 5
++ .ndo_get_wireless_stats = &acx_e_get_wireless_stats,
++#endif
++ .ndo_set_multicast_list = &acxpci_i_set_multicast_list,
++ .ndo_tx_timeout = &acxpci_i_tx_timeout,
++ .ndo_change_mtu = &acx_e_change_mtu,
++};
++
+ #ifdef CONFIG_PCI
+ static int __devinit acxpci_e_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+ {
+@@ -1547,17 +1560,8 @@
+ }
+
+ ether_setup(ndev);
+- ndev->open = &acxpci_e_open;
+- ndev->stop = &acxpci_e_close;
+- ndev->hard_start_xmit = &acx_i_start_xmit;
+- ndev->get_stats = &acx_e_get_stats;
+-#if IW_HANDLER_VERSION <= 5
+- ndev->get_wireless_stats = &acx_e_get_wireless_stats;
+-#endif
+- ndev->wireless_handlers = (struct iw_handler_def *)&acx_ioctl_handler_def;
+- ndev->set_multicast_list = &acxpci_i_set_multicast_list;
+- ndev->tx_timeout = &acxpci_i_tx_timeout;
+- ndev->change_mtu = &acx_e_change_mtu;
++ ndev->wireless_handlers = (struct iw_handler_def *)&acx_ioctl_handler_def;
++ ndev->netdev_ops = &acx_netdev_ops;
+ ndev->watchdog_timeo = 4 * HZ;
+ ndev->irq = pdev->irq;
+ ndev->base_addr = pci_resource_start(pdev, 0);
+--- acx-20080210/usb.c 2008-02-10 21:06:42.000000000 +0100
++++ acx-20080210/usb.c 2009-09-11 22:38:42.000000000 +0200
+@@ -778,6 +778,21 @@
+ static void
+ dummy_netdev_init(struct net_device *ndev) {}
+
++static const struct net_device_ops acxusb_netdev_ops = {
++ .ndo_open = &acxusb_e_open,
++ .ndo_stop = &acxusb_e_close,
++ .ndo_start_xmit = (void *)&acx_i_start_xmit,
++ .ndo_get_stats = (void *)&acx_e_get_stats,
++#if IW_HANDLER_VERSION <= 5
++ .ndo_get_wireless_stats = (void *)&acx_e_get_wireless_stats,
++#endif
++ .ndo_set_multicast_list = (void *)&acxusb_i_set_rx_mode,
++#ifdef HAVE_TX_TIMEOUT
++ .ndo_tx_timeout = &acxusb_i_tx_timeout,
++#endif
++ .ndo_change_mtu = &acx_e_change_mtu,
++};
++
+ static int
+ acxusb_e_probe(struct usb_interface *intf, const struct usb_device_id *devID)
+ {
+@@ -845,20 +860,11 @@
+ /* Register the callbacks for the network device functions */
+
+ ether_setup(ndev);
+- ndev->open = &acxusb_e_open;
+- ndev->stop = &acxusb_e_close;
+- ndev->hard_start_xmit = (void *)&acx_i_start_xmit;
+- ndev->get_stats = (void *)&acx_e_get_stats;
+-#if IW_HANDLER_VERSION <= 5
+- ndev->get_wireless_stats = (void *)&acx_e_get_wireless_stats;
+-#endif
+ ndev->wireless_handlers = (struct iw_handler_def *)&acx_ioctl_handler_def;
+- ndev->set_multicast_list = (void *)&acxusb_i_set_rx_mode;
++ ndev->netdev_ops = &acxusb_netdev_ops;
+ #ifdef HAVE_TX_TIMEOUT
+- ndev->tx_timeout = &acxusb_i_tx_timeout;
+ ndev->watchdog_timeo = 4 * HZ;
+ #endif
+- ndev->change_mtu = &acx_e_change_mtu;
+ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)) && defined(SET_MODULE_OWNER)
+ SET_MODULE_OWNER(ndev);
+ #endif
diff --git a/abs/not_built/core/tiacx/kernel-2.6.33.patch b/abs/not_built/core/tiacx/kernel-2.6.33.patch
new file mode 100644
index 0000000..f486009
--- /dev/null
+++ b/abs/not_built/core/tiacx/kernel-2.6.33.patch
@@ -0,0 +1,11 @@
+--- pci.c~ 2010-02-27 19:30:54.000000000 +0100
++++ pci.c 2010-02-27 19:30:54.000000000 +0100
+@@ -35,7 +35,7 @@
+
+ /* Linux 2.6.18+ uses <linux/utsrelease.h> */
+ #ifndef UTS_RELEASE
+-#include <linux/utsrelease.h>
++#include <generated/utsrelease.h>
+ #endif
+
+ #include <linux/compiler.h> /* required for Lx 2.6.8 ?? */
diff --git a/abs/not_built/core/transcode/PKGBUILD b/abs/not_built/core/transcode/PKGBUILD
new file mode 100644
index 0000000..4e6718c
--- /dev/null
+++ b/abs/not_built/core/transcode/PKGBUILD
@@ -0,0 +1,76 @@
+# $Id: PKGBUILD 91207 2010-09-24 03:35:03Z eric $
+# Maintainer:
+# Contributor: Sarah Hay <sarahhay@mb.sympatico.ca>
+# Contributor: roberto <roberto@archlinux.org>
+
+pkgname=transcode
+_sripver=0.3-4
+pkgver=1.1.5
+pkgrel=8
+pkgdesc="A video/DVD ripper and encoder for the terminal/console"
+arch=('i686' 'x86_64')
+url="http://tcforge.berlios.de/"
+license=('GPL')
+depends=('imagemagick' 'lzo2' 'libdv' 'libdvdread' 'ffmpeg-svn' 'mjpegtools'
+ 'libmpeg2' 'libtheora' 'libxaw' 'libxml2' 'libxv' 'a52dec' 'alsa-lib')
+makedepends=('nasm' 'pkg-config')
+options=('!libtool' '!makeflags')
+source=(http://download2.berlios.de/tcforge/${pkgname}-${pkgver}.tar.bz2
+ http://downloads.sourceforge.net/sourceforge/subtitleripper/subtitleripper-${_sripver}.tgz
+ transcode-1.1.5-jpeg-7.patch transcode-1.1.5-mpa.patch)
+md5sums=('41ac6b1c0fe30f3aab286e771fc31b9e' 'c0bd49a88f667c68c4430ad25bbed510'\
+ 'af4056b7530a6f147594f676849e7c7b' 'c299cfc6c4be6a5512d1a129f04e5450')
+sha1sums=('48c36e06ca0cd1cdc1a9c6a241e231f896eefd26' 'd93ff3578dd5f722c8f4ef16bc0903eec5781a0d'\
+ '9e380c00a3b31725dc3ec483fa7bf5e3d8a8a977' '6f45d9167c3aa15a83cb29545749f55eb1f1e5a2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -p0 < ../transcode-1.1.5-jpeg-7.patch
+ patch -p1 < ../transcode-1.1.5-mpa.patch
+
+ # building from here
+ ./configure --prefix=/usr \
+ --enable-sse=no --enable-sse2=no --enable-altivec=no --enable-mmx \
+ --enable-lame --enable-ogg --enable-vorbis --enable-theora \
+ --enable-libdv --enable-libxml2 --enable-v4l \
+ --enable-imagemagick --enable-libjpeg --enable-lzo --enable-mjpegtools \
+ --enable-sdl --enable-freetype2 --enable-a52 --enable-libpostproc \
+ --enable-xvid --enable-x264 --enable-alsa \
+ --enable-libmpeg2 --enable-libmpeg2convert \
+ --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
+ ##############################################################################
+ # this imports the latest subtitleripper sources and replaces the internal
+ mkdir contrib
+ mv "${srcdir}/subtitleripper" contrib/subrip
+ # removes dependency on libppm, make it dependend on netpbm just failed, argh...
+ cd contrib/subrip
+ sed -e 's|^\(.*lppm.*\)$|#\1|' \
+ -e 's|^\(.*D_HAVE_LIB_PPM.*\)$|#\1|' \
+ -e 's/DEFINES :=/DEFINES = -DHAVE_GETLINE/' \
+ -i Makefile
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ cd contrib/subrip
+ install -m 755 pgm2txt "${pkgdir}/usr/bin/"
+ install -m 755 srttool "${pkgdir}/usr/bin/"
+ install -m 755 subtitle2pgm "${pkgdir}/usr/bin/"
+ install -m 755 subtitle2vobsub "${pkgdir}/usr/bin/"
+ install -m 755 vobsub2pgm "${pkgdir}/usr/bin/"
+}
diff --git a/abs/not_built/core/transcode/transcode-1.1.5-jpeg-7.patch b/abs/not_built/core/transcode/transcode-1.1.5-jpeg-7.patch
new file mode 100644
index 0000000..288932a
--- /dev/null
+++ b/abs/not_built/core/transcode/transcode-1.1.5-jpeg-7.patch
@@ -0,0 +1,16 @@
+http://bugs.gentoo.org/show_bug.cgi?id=294488
+
+Patch by: Salah Coronya
+
+Fix segmentation fault with jpeg-7 and above where dinfo.do_fancy_upsampling isn't set by default to FALSE anymore.
+
+--- export/export_jpg.c
++++ export/export_jpg.c
+@@ -91,6 +91,7 @@
+
+ jpeg_set_quality(&encinfo, quality, TRUE);
+ encinfo.raw_data_in = TRUE;
++ encinfo.do_fancy_downsampling = FALSE;
+ encinfo.in_color_space = JCS_YCbCr;
+
+ encinfo.comp_info[0].h_samp_factor = 2;
diff --git a/abs/not_built/core/transcode/transcode-1.1.5-mpa.patch b/abs/not_built/core/transcode/transcode-1.1.5-mpa.patch
new file mode 100644
index 0000000..e7fb0fc
--- /dev/null
+++ b/abs/not_built/core/transcode/transcode-1.1.5-mpa.patch
@@ -0,0 +1,10 @@
+--- transcode-1.1.5-old/export/aud_aux.c 2010-07-04 12:44:31.867550180 -0500
++++ transcode-1.1.5/export/aud_aux.c 2010-07-04 13:41:01.253292529 -0500
+@@ -347,6 +347,7 @@
+ //-- set parameters (bitrate, channels and sample-rate) --
+ //--------------------------------------------------------
+ memset(&mpa_ctx, 0, sizeof(mpa_ctx)); // default all
++ mpa_ctx.codec_type = CODEC_TYPE_AUDIO;
+ mpa_ctx.bit_rate = vob->mp3bitrate * 1000; // bitrate dest.
+ mpa_ctx.channels = vob->dm_chan; // channels
+ mpa_ctx.sample_rate = vob->a_rate;
diff --git a/abs/not_built/core/trapproto/PKGBUILD b/abs/not_built/core/trapproto/PKGBUILD
new file mode 100644
index 0000000..9f6830c
--- /dev/null
+++ b/abs/not_built/core/trapproto/PKGBUILD
@@ -0,0 +1,22 @@
+# $Id: PKGBUILD 356 2008-04-18 22:56:27Z aaron $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=trapproto
+pkgver=3.4.3
+pkgrel=2
+pkgdesc="X11 Trap extension wire protocol"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+source=(http://xorg.freedesktop.org/releases/individual/proto/${pkgname}-$pkgver.tar.bz2)
+md5sums=('3b713239e5e6b269b31cb665563358df')
+sha1sums=('b108aa39a7bfde530d5cd347fda7c58770d5b8da')
+
+build() {
+ cd ${srcdir}/${pkgname}-$pkgver
+ ./configure --prefix=/usr
+ make || return 1
+}
+package() {
+ cd ${srcdir}/${pkgname}-$pkgver
+ make DESTDIR=${pkgdir} install || return 1
+}
diff --git a/abs/not_built/core/ttf-bitstream-vera/PKGBUILD b/abs/not_built/core/ttf-bitstream-vera/PKGBUILD
new file mode 100644
index 0000000..4fa76b8
--- /dev/null
+++ b/abs/not_built/core/ttf-bitstream-vera/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id: PKGBUILD 77738 2010-04-17 15:45:51Z thayer $
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+
+pkgname=ttf-bitstream-vera
+pkgver=1.10
+pkgrel=7
+pkgdesc="Bitstream vera fonts"
+arch=('any')
+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 ${srcdir}/${pkgname}-${pkgver}
+ mkdir -p ${pkgdir}/usr/share/fonts/TTF
+ install -m644 *.ttf ${pkgdir}/usr/share/fonts/TTF/
+ mkdir -p ${pkgdir}/usr/share/licenses/ttf-bitstream-vera
+ install -m644 COPYRIGHT.TXT ${pkgdir}/usr/share/licenses/ttf-bitstream-vera/LICENSE
+}
+
diff --git a/abs/not_built/core/ttf-bitstream-vera/vera.install b/abs/not_built/core/ttf-bitstream-vera/vera.install
new file mode 100644
index 0000000..4f5212e
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/PKGBUILD b/abs/not_built/core/tweaker/PKGBUILD
new file mode 100644
index 0000000..85df000
--- /dev/null
+++ b/abs/not_built/core/tweaker/PKGBUILD
@@ -0,0 +1,45 @@
+pkgname=tweaker
+pkgver=1
+pkgrel=56
+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/
+}
+md5sums=('77fab526e866b273091e6816135ef25f'
+ 'e897b87dd308f9562d0867de9fab2de0')
diff --git a/abs/not_built/core/tweaker/bin/LocalIPCheck.pl b/abs/not_built/core/tweaker/bin/LocalIPCheck.pl
new file mode 100755
index 0000000..b744fb6
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/bin/SQLtweaker.sh b/abs/not_built/core/tweaker/bin/SQLtweaker.sh
new file mode 100755
index 0000000..5760e5d
--- /dev/null
+++ b/abs/not_built/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;}' </tmp/videosource.txt)
+ /bin/rm -f /tmp/videosource.txt
+ if [ -n "$dd_src" ]; then
+ # we have a chance at getting a usable locale from the schedulesdirect data
+ cd /usr/LH/
+
+ SCHEDULESDIRECT_USERNAME=$(echo "$dd_src" | cut -f4)
+ SCHEDULESDIRECT_PASSWORD=$(echo "$dd_src" | cut -f7)
+
+ sed -i "s/<userName>.*<\/userName>/<userName>$SCHEDULESDIRECT_USERNAME<\/userName>/" xtvd.xml
+ sed -i "s/<password>.*<\/password>/<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/not_built/core/tweaker/bin/create-linhes-sql.sh b/abs/not_built/core/tweaker/bin/create-linhes-sql.sh
new file mode 100755
index 0000000..478eed0
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/bin/tweaker.pl b/abs/not_built/core/tweaker/bin/tweaker.pl
new file mode 100755
index 0000000..28519df
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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('<?xml version="1.0"?>'); # print the XML declaration
+ $logger->debug('<!DOCTYPE stats SYSTEM "tcf.dtd">');
+ $logger->debug('<tcf>'); # 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("</tcf>\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(<COMMAND>) { # 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(<COMMAND>) { # 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/not_built/core/tweaker/bin/twk_EXAMPLE.pl b/abs/not_built/core/tweaker/bin/twk_EXAMPLE.pl
new file mode 100755
index 0000000..7dfb075
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_RAM.pl b/abs/not_built/core/tweaker/bin/twk_RAM.pl
new file mode 100755
index 0000000..2eea598
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_audio.pl b/abs/not_built/core/tweaker/bin/twk_audio.pl
new file mode 100755
index 0000000..47a2415
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_cpu.pl b/abs/not_built/core/tweaker/bin/twk_cpu.pl
new file mode 100755
index 0000000..8d5e563
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_dragon.pl b/abs/not_built/core/tweaker/bin/twk_dragon.pl
new file mode 100755
index 0000000..21a9dc7
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_fingerprint_hardware.sh b/abs/not_built/core/tweaker/bin/twk_fingerprint_hardware.sh
new file mode 100755
index 0000000..25111dd
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+# 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/not_built/core/tweaker/bin/twk_general.pl b/abs/not_built/core/tweaker/bin/twk_general.pl
new file mode 100755
index 0000000..f89912c
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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.sh \"%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 \"/<type>STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s/<depends.*depends>//; }\" /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/not_built/core/tweaker/bin/twk_general.pl.orig b/abs/not_built/core/tweaker/bin/twk_general.pl.orig
new file mode 100755
index 0000000..0255852
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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 \"/<type>STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s/<depends.*depends>//; }\" /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/not_built/core/tweaker/bin/twk_graphics.pl b/abs/not_built/core/tweaker/bin/twk_graphics.pl
new file mode 100755
index 0000000..22b6688
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_keymap.sh b/abs/not_built/core/tweaker/bin/twk_keymap.sh
new file mode 100755
index 0000000..c7f4093
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+# 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/not_built/core/tweaker/bin/twk_localization.pl b/abs/not_built/core/tweaker/bin/twk_localization.pl
new file mode 100755
index 0000000..fc84440
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_misc.pl b/abs/not_built/core/tweaker/bin/twk_misc.pl
new file mode 100755
index 0000000..96771a6
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/bin/twk_scrub_sql.pl b/abs/not_built/core/tweaker/bin/twk_scrub_sql.pl
new file mode 100755
index 0000000..c1de20b
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/bin/twk_tuners.pl b/abs/not_built/core/tweaker/bin/twk_tuners.pl
new file mode 100755
index 0000000..22c6a23
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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(<SHELL>) {
+ 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(<SHELL2>) {
+ 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/not_built/core/tweaker/bin/twk_tuners_notes.txt b/abs/not_built/core/tweaker/bin/twk_tuners_notes.txt
new file mode 100644
index 0000000..1f2e283
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/bin/twk_upgrade.pl b/abs/not_built/core/tweaker/bin/twk_upgrade.pl
new file mode 100755
index 0000000..b5d09b6
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+#
+# 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 \"/<type>STREAM<\\/type>\$/{N; N; N; N; s/text>.*<\\/text/text>Online Streams<\\/text/; s/action>.*<\\/action/action>MENU is.xml<\\/action/; s/<depends.*depends>//; }\" /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/not_built/core/tweaker/bin/twk_what_has_changed.sh b/abs/not_built/core/tweaker/bin/twk_what_has_changed.sh
new file mode 100755
index 0000000..deff7cf
--- /dev/null
+++ b/abs/not_built/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 <affiliation>. 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 <http://www.gnu.org/licenses/>.
+
+
+#----------------------------------------------------------------------------
+. /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/not_built/core/tweaker/fs/etc/asound.conf b/abs/not_built/core/tweaker/fs/etc/asound.conf
new file mode 100644
index 0000000..ffb665d
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini b/abs/not_built/core/tweaker/fs/home/mythtv/.config/smplayer/smplayer.ini
new file mode 100644
index 0000000..9660607
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/fs/var/lib/alsa/ALC888.asound.state b/abs/not_built/core/tweaker/fs/var/lib/alsa/ALC888.asound.state
new file mode 100644
index 0000000..5540338
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/fs/var/lib/alsa/AV710.asound.state b/abs/not_built/core/tweaker/fs/var/lib/alsa/AV710.asound.state
new file mode 100644
index 0000000..7e57108
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/lib/Tweaker/Definitions.pm b/abs/not_built/core/tweaker/lib/Tweaker/Definitions.pm
new file mode 100644
index 0000000..cbadf29
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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/not_built/core/tweaker/lib/Tweaker/Script.pm b/abs/not_built/core/tweaker/lib/Tweaker/Script.pm
new file mode 100644
index 0000000..7dd2c8f
--- /dev/null
+++ b/abs/not_built/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 <http://www.gnu.org/licenses/>.
+
+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(<SHELL>) {
+ $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(<SHELL>) {
+ 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(<MYSQLTXT>) {
+ 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(<MYSQLTXT>) {
+ 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/not_built/core/tweaker/log4perl.conf b/abs/not_built/core/tweaker/log4perl.conf
new file mode 100644
index 0000000..3c0a5bb
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/tcf/EXAMPLE.tcf b/abs/not_built/core/tweaker/tcf/EXAMPLE.tcf
new file mode 100644
index 0000000..0064fba
--- /dev/null
+++ b/abs/not_built/core/tweaker/tcf/EXAMPLE.tcf
@@ -0,0 +1,38 @@
+<!-- This is an example TCF. See TCFProgrammingSpecifications.odt for details.
+ //-->
+<tweak name = "Put a human-readable name for the tweak here. Make sure it's unique."> <!-- REQUIRED //-->
+ <description>Put a human-readable description of the tweak here.</description> <!-- OPTIONAL but usually a good idea, unless the user
+ will never see the description.
+ //-->
+ <complexity>Put a complexity level here.</complexity> <!-- OPTIONAL human-readable assessment of how complex this Tweak is to understand.
+ A complete list of complexity levels is listed in tweaker-core.tcf
+ //-->
+ <script>twk_EXAMPLE.pl</script> <!-- REQUIRED: An executable script in the $PATH of the shell that invoked Tweaker.
+ For consistency, adhere to the naming convention by beginning the script name with
+ 'twk_'. You can make the tweaker script in any language you wish, but Perl is
+ supported well.
+ //-->
+ <alwaysaskuser>boolean</alwaysaskuser> <!-- OPTIONAL field with values: yes, no - not used in Tweaker v0.7
+ //-->
+ <options> <!-- REQUIRED //-->
+ <option name = "Human-readable name for this option"> <!-- REQUIRED: Option names must match those handled in the
+ corresponding tweaker script.
+ //-->
+ <description>Human-readable description of what this option does.</description> <!-- OPTIONAL //-->
+ <complexity>Put a complexity level here.</complexity> <!-- OPTIONAL human-readable assessment of how complex this Tweak is to
+ understand. A complete list of complexity levels is listed in
+ tweaker-core.tcf
+ //-->
+ <recommendationlevel>recommendationlevel</recommendationlevel> <!-- OPTIONAL human-readable recommendation level for this tweak.
+ If this field is absent, the script will be run to acquire
+ the recommendationlevel. The default recommendationlevel
+ is $optional if it cannot otherwise be determined. For a
+ complete list of recommendation levels, see Tweaker/Definitions.pm
+ //-->
+ </option>
+ <!-- Put any additional options here. If you only have one option and it ends up with a recommendationlevel at or above $optional,
+ it will be selected automatically. Otherwise, the option with the highest recommendationlevel above $optional will be selected.
+ //-->
+ </options>
+</tweak>
+<!-- Put any additional tweaks here. //-->
diff --git a/abs/not_built/core/tweaker/tcf/focus.tcf b/abs/not_built/core/tweaker/tcf/focus.tcf
new file mode 100644
index 0000000..353662c
--- /dev/null
+++ b/abs/not_built/core/tweaker/tcf/focus.tcf
@@ -0,0 +1,113 @@
+<tweak name = "SQL table scrubber">
+ <script>twk_scrub_sql.pl</script>
+ <description>Scrubs the sections of mythconverg that KnoppMyth controls, preparing for the Tweaks below.</description>
+ <options>
+ <option name = "scrub">
+ <description>Everyone should run this, or some the Tweaks below may fail.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ </options>
+</tweak>
+<tweak name = "Audio">
+ <script>twk_audio.pl</script>
+ <description>Configures MythTV, xine, and mplayer to output audio the way you want.</description>
+ <options>
+ <option name = "analogstereo">
+ <description>Suitable for output to headphones, amplified speakers, or analog inputs on a receiver.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ <option name = "analogsurround">
+ <description>Suitable for direct output to multiple individual speakers.</description>
+ </option>
+ <option name = "digital">
+ <description>The best option if your hardware supports it. Sends audio directly to a reciever to be processed.</description>
+ </option>
+ </options>
+</tweak>
+<tweak name = "CPU">
+ <script>twk_cpu.pl</script>
+ <description>Configures MythTV to use CPU-appropriate features and themes.</description>
+ <options>
+ <option name = "low">
+ <description>Uses the least amount of CPU but enables the fewest extra options.</description>
+ </option>
+ <option name = "medium">
+ <description>Uses a moderate amount of CPU and enables typical extra options.</description>
+ </option>
+ <option name = "high">
+ <description>Uses the most amount of CPU of the above options but enables the most extra options.</description>
+ </option>
+ </options>
+</tweak>
+<tweak name = "RAM">
+ <script>twk_RAM.pl</script>
+ <description>Configures MythTV to use the right-sized RAM cache for various options.</description>
+ <options>
+ <option name = "low">
+ <description>Uses the least amount of RAM but may cause buffering delays.</description>
+ </option>
+ <option name = "medium">
+ <description>Uses a moderate amount of RAM as a tradeoff between buffering and RAM usage.</description>
+ </option>
+ <option name = "high">
+ <description>Uses the most amount of RAM to reduce buffering and improve performance.</description>
+ </option>
+ </options>
+</tweak>
+<tweak name = "graphics">
+ <script>twk_graphics.pl</script>
+ <description>Configures MythTV to use graphical options that are appropriate for your video card.</description>
+ <options>
+ <option name = "low">
+ <description>Puts little stress on the video card.</description>
+ </option>
+ <option name = "medium">
+ <description>Puts the video card to work a bit and enables some eye candy.</description>
+ </option>
+ <option name = "high">
+ <description>Puts the video card hardest to work and enables more eye candy.</description>
+ </option>
+ </options>
+</tweak>
+<tweak name = "localization">
+ <script>twk_localization.pl</script>
+ <description>Configures the system to use your native language, system of measurements, etc.</description>
+ <options>
+ <option name = "US_English">
+ <description>This is for most North Americans. Any units seen are in imperial units, such as Fahrenheit, pounds, feet, etc.</description>
+ </option>
+ <option name = "GB_English">
+ <description>This is for most UK residents. Any units seen are in metric, such as Celsius, kilograms, meters, etc.</description>
+ </option>
+ </options>
+</tweak>
+<tweak name = "Tuner Configuration">
+ <script>twk_tuners.pl</script>
+ <description>Recommended for everyone.</description>
+ <options>
+ <option name = "all">
+ <description>Detects and auto-configures many tuner devices.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ </options>
+</tweak>
+<tweak name = "KnoppMyth Customizations">
+ <script>twk_general.pl</script>
+ <description>Recommended for everyone.</description>
+ <options>
+ <option name = "all">
+ <description>Changes made to the MythTV and KnoppMyth baseline settings for integration and functionality.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ </options>
+</tweak>
+<tweak name = "SQL table protecter">
+ <script>twk_scrub_sql.pl</script>
+ <description>Protects the sections of mythconverg that KnoppMyth controls, keeping our changes separate from user-made changes.</description>
+ <options>
+ <option name = "protect">
+ <description>Everyone should run this, or user-made changes might get clobbered.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ </options>
+</tweak>
diff --git a/abs/not_built/core/tweaker/tcf/os.tcf b/abs/not_built/core/tweaker/tcf/os.tcf
new file mode 100644
index 0000000..e70f4ee
--- /dev/null
+++ b/abs/not_built/core/tweaker/tcf/os.tcf
@@ -0,0 +1,10 @@
+<tweak name = "Linux-related Customizations">
+ <script>twk_linux.pl</script>
+ <description>Recommended for everyone.</description>
+ <options>
+ <option name = "all">
+ <description>Changes made to the Linux baseline settings for integration and functionality.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ </options>
+</tweak>
diff --git a/abs/not_built/core/tweaker/tcf/tcf.dtd b/abs/not_built/core/tweaker/tcf/tcf.dtd
new file mode 100644
index 0000000..64ce67e
--- /dev/null
+++ b/abs/not_built/core/tweaker/tcf/tcf.dtd
@@ -0,0 +1,11 @@
+<!ELEMENT tcf (tweak+)>
+<!ELEMENT tweak (description?, complexity?, script, alwaysaskuser?, options)>
+ <!ATTLIST tweak name CDATA #REQUIRED>
+<!ELEMENT description (#PCDATA)>
+<!ELEMENT complexity (#PCDATA)>
+<!ELEMENT script (#PCDATA)>
+<!ELEMENT alwaysaskuser (#PCDATA)>
+<!ELEMENT options (option+)>
+<!ELEMENT option (description?, complexity?, recommendationlevel?)>
+ <!ATTLIST option name CDATA #REQUIRED>
+<!ELEMENT recommendationlevel (#PCDATA)>
diff --git a/abs/not_built/core/tweaker/tcf/tweaker-core.tcf b/abs/not_built/core/tweaker/tcf/tweaker-core.tcf
new file mode 100644
index 0000000..88d8608
--- /dev/null
+++ b/abs/not_built/core/tweaker/tcf/tweaker-core.tcf
@@ -0,0 +1,47 @@
+<?xml version="1.0" ?>
+<!DOCTYPE tcf SYSTEM "/usr/LH/tweaker/tcf/tcf.dtd" [
+<!-- <!ENTITY os SYSTEM "/usr/LH/tweaker/tcf/os.tcf"> //-->
+<!-- <!ENTITY distro SYSTEM "/usr/LH/tweaker/tcf/distro.tcf"> //-->
+ <!ENTITY focus SYSTEM "/usr/LH/tweaker/tcf/focus.tcf">
+ <!ENTITY userland SYSTEM "/usr/LH/tweaker/tcf/userland.tcf">
+ ]>
+<tcf>
+ <tweak name = "Complexity Level">
+ <description>Some configuration options require more understanding than others.</description>
+ <complexity>basic</complexity>
+ <script>null</script>
+ <options>
+ <option name = "Basic">
+ <description>Show only the most basic configuration options. This is best for new Users.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ <option name = "Intermediate">
+ <description>Show the basic configuration options as well as the options that veteran Users will understand.</description>
+ </option>
+ <option name = "Advanced">
+ <description>Show all configuration options, including those that only advanced Users will understand.</description>
+ <recommendationlevel>inadvisable</recommendationlevel>
+ </option>
+ </options>
+ </tweak>
+ <tweak name = "Interactivity">
+ <description>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.</description>
+ <complexity>basic</complexity>
+ <script>null</script>
+ <options>
+ <option name = "Minimal">
+ <description>Show only the most basic configuration options. This is best for new Users.</description>
+ <recommendationlevel>inadvisable</recommendationlevel>
+ </option>
+ <option name = "Guided">
+ <description>Show the basic configuration options as well as the options that veteran Users will understand.</description>
+ <recommendationlevel>recommended</recommendationlevel>
+ </option>
+ </options>
+ </tweak>
+ &os;
+ &distro;
+ &focus;
+ &userland;
+</tcf>
+
diff --git a/abs/not_built/core/tweaker/tcf/userland.tcf b/abs/not_built/core/tweaker/tcf/userland.tcf
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/abs/not_built/core/tweaker/tcf/userland.tcf
diff --git a/abs/not_built/core/tweaker/tweaker.install b/abs/not_built/core/tweaker/tweaker.install
new file mode 100644
index 0000000..fc4ba07
--- /dev/null
+++ b/abs/not_built/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/not_built/core/tweaker/tweaker.sh b/abs/not_built/core/tweaker/tweaker.sh
new file mode 100644
index 0000000..8cb36eb
--- /dev/null
+++ b/abs/not_built/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/not_built/core/v4l-dvb/PKGBUILD b/abs/not_built/core/v4l-dvb/PKGBUILD
new file mode 100644
index 0000000..f19c2fa
--- /dev/null
+++ b/abs/not_built/core/v4l-dvb/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer: Cecil Watson<knoppmyth@gmail.com>
+
+pkgname=v4l-dvb
+_kernver=`uname -r`
+pkgver=20120904
+pkgrel=1
+pkgdesc="V4L-DVB device drivers (newer than those included in kernel26)"
+arch=('i686' 'x86_64')
+url="http://linuxtv.org/"
+license=('GPL2')
+depends=('kernel26')
+makedepends=('git' 'kernel26-headers' 'perl-proc-processtable' 'patchutils')
+options=(!makeflags)
+install=v4l-dvb.install
+_gitroot="git://linuxtv.org/media_build.git"
+_gitname="media_build"
+
+build() {
+ cd "${srcdir}"
+ msg "Connecting to GIT server...."
+
+ if [ -d "${srcdir}/${_gitname}" ] ; then
+ cd ${_gitname} && git pull --rebase
+ else
+ git clone ${_gitroot}
+ fi
+
+ msg "GIT checkout done or server timeout"
+ msg "Starting make..."
+
+ cd "${srcdir}/${_gitname}/linux"
+ make download untar
+ cd ..
+
+# Build with 3.0-ARCH kernel
+# sed -i -e "s/KERNELRELEASE\ :=/KERNELRELEASE\ :=\ ${_kernver}/" \
+# -e "s/\$(KERNELRELEASE)/${_kernver}/" \
+# "${srcdir}/${_gitname}"/v4l/Makefile{,.sound}
+
+ make
+}
+
+package() {
+ cd "${srcdir}/${_gitname}"
+ make DESTDIR="${pkgdir}/lib/modules/$_kernver/updates" install
+ # compress new kernel modules
+ find ${pkgdir}/lib/modules/$_kernver/updates/ -not -name 'media.ko' -name '*.ko' -exec gzip '{}' \;
+}
+md5sums=()
diff --git a/abs/not_built/core/v4l-dvb/v4l-dvb.install b/abs/not_built/core/v4l-dvb/v4l-dvb.install
new file mode 100644
index 0000000..f7b7197
--- /dev/null
+++ b/abs/not_built/core/v4l-dvb/v4l-dvb.install
@@ -0,0 +1,12 @@
+post_install() {
+ echo ">>> Running depmod..."
+ depmod
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ echo ">>> v4l-dvb has been removed"
+}
diff --git a/abs/not_built/core/vbetool/PKGBUILD b/abs/not_built/core/vbetool/PKGBUILD
new file mode 100644
index 0000000..244babc
--- /dev/null
+++ b/abs/not_built/core/vbetool/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 19227 2008-11-17 22:22:42Z thayer $
+# Contributor: Christian Storm <Christian.Storm@gmx.DE>
+# Contributor: James Rayner <james@archlinux.org>
+# Maintainer: Thayer Williams <thayer@archlinux.org>
+
+pkgname=vbetool
+pkgver=1.1
+pkgrel=1
+pkgdesc="vbetool uses lrmi in order to run code from the video BIOS"
+url="http://www.srcf.ucam.org/~mjg59/vbetool/"
+license=('GPL2')
+arch=('i686' 'x86_64')
+depends=('zlib' 'libx86')
+makedepends=('pciutils')
+source=(http://www.codon.org.uk/~mjg59/vbetool/download/vbetool-${pkgver}.tar.gz)
+md5sums=('ffb03b118867a02296d7449019ad8846')
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+ if [ "${CARCH}" = "x86_64" ]; then
+ ./configure --prefix=/usr --without-x86emu || return 1
+ else
+ ./configure --prefix=/usr || return 1
+ fi
+ make LIBS=-lpci || return 1
+}
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install || return 1
+}
+
diff --git a/abs/not_built/core/vdpauinfo-legacy/PKGBUILD b/abs/not_built/core/vdpauinfo-legacy/PKGBUILD
new file mode 100644
index 0000000..d58c672
--- /dev/null
+++ b/abs/not_built/core/vdpauinfo-legacy/PKGBUILD
@@ -0,0 +1,26 @@
+# 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=vdpauinfo-legacy
+pkgver=1
+pkgrel=5
+pkgdesc="tells the user they can't handle vdpau"
+license=('GPLv2')
+arch=('i686' 'x86_64')
+#depends=('')
+# Just let the dependency on the right nvidia and nvidia-utils versions
+# handle conflicts via those packages conflicts.
+conflicts=(vdpauinfo)
+provides=('vpinfo' 'vdpauinfo')
+source=(vdpauinfo)
+md5sums=()
+
+build() {
+ LH_ROOT=/usr/LH
+ mkdir -p $startdir/pkg/$LH_ROOT/bin/
+
+ cd $startdir
+ install -m0755 -D vdpauinfo $startdir/pkg/$LH_ROOT/bin/
+}
+md5sums=('502f0a21bd1232e5a6bccb17cd63116d')
diff --git a/abs/not_built/core/vdpauinfo-legacy/vdpauinfo b/abs/not_built/core/vdpauinfo-legacy/vdpauinfo
new file mode 100755
index 0000000..9b237dc
--- /dev/null
+++ b/abs/not_built/core/vdpauinfo-legacy/vdpauinfo
@@ -0,0 +1,2 @@
+#!/bin/bash
+echo "vdpau is unsupported"
diff --git a/abs/not_built/core/xf86-input-acecad/LICENSE b/abs/not_built/core/xf86-input-acecad/LICENSE
new file mode 100644
index 0000000..cb245d3
--- /dev/null
+++ b/abs/not_built/core/xf86-input-acecad/LICENSE
@@ -0,0 +1,24 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright (c) 2001 Edouard TISSERANT <tissered@esstin.u-nancy.fr>
+Parts inspired from Shane Watts <shane@bofh.asn.au> XFree86 3 Acecad Driver
+Thanks to Emily, from AceCad, For giving me documents.
+
+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 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
+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 CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/abs/not_built/core/xf86-input-acecad/PKGBUILD b/abs/not_built/core/xf86-input-acecad/PKGBUILD
new file mode 100644
index 0000000..b95dbec
--- /dev/null
+++ b/abs/not_built/core/xf86-input-acecad/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88560 2010-08-24 08:42:15Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-acecad
+pkgver=1.4.0
+pkgrel=3
+pkgdesc="X.Org acecad tablet input driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('sysfsutils')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-input-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 LICENSE)
+md5sums=('51247dc0d73185e35bec326283bc49a5'
+ '6f401ccbe91e2938b01d5a85df350a7c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-input-aiptek/PKGBUILD b/abs/not_built/core/xf86-input-aiptek/PKGBUILD
new file mode 100644
index 0000000..70ba0ca
--- /dev/null
+++ b/abs/not_built/core/xf86-input-aiptek/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88563 2010-08-24 08:45:36Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-input-aiptek
+pkgver=1.3.1
+pkgrel=1
+pkgdesc="X.Org Aiptek USB Digital Tablet input driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-input-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('8466910dd3877502eb97468db4deab98d49125bb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-input-synaptics/10-synaptics.conf b/abs/not_built/core/xf86-input-synaptics/10-synaptics.conf
new file mode 100644
index 0000000..7e456ed
--- /dev/null
+++ b/abs/not_built/core/xf86-input-synaptics/10-synaptics.conf
@@ -0,0 +1,8 @@
+Section "InputClass"
+ Identifier "touchpad catchall"
+ Driver "synaptics"
+ MatchIsTouchpad "on"
+ Option "TapButton1" "1"
+ Option "TapButton2" "2"
+ Option "TapButton3" "3"
+EndSection
diff --git a/abs/not_built/core/xf86-input-synaptics/PKGBUILD b/abs/not_built/core/xf86-input-synaptics/PKGBUILD
new file mode 100644
index 0000000..670fd87
--- /dev/null
+++ b/abs/not_built/core/xf86-input-synaptics/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 89499 2010-09-01 12:06:39Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Tobias Powalowski <tpowa@archlinux.org>
+# Contributor: Thomas Bächler <thomas@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-input-synaptics
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="synaptics driver for notebook touchpads"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('libxtst')
+makedepends=('xorg-server-devel' 'libxi' 'libx11')
+conflicts=('xorg-server<1.9.0')
+replaces=('synaptics')
+provides=('synaptics')
+conflicts=('synaptics')
+groups=('xorg-input-drivers')
+options=(!libtool)
+backup=('etc/X11/xorg.conf.d/10-synaptics.conf')
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ 10-synaptics.conf)
+sha1sums=('132fff19a3a1768e7ab403f44ebc28e0480a4120'
+ '70ddc39abc03c3b5b8071b70b5553f84e01d78b2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/etc/X11/xorg.conf.d"
+ install -m644 "${srcdir}/10-synaptics.conf" "${pkgdir}/etc/X11/xorg.conf.d/"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ rm -rf "${pkgdir}/usr/share/X11"
+}
diff --git a/abs/not_built/core/xf86-input-wacom/70-wacom.rules b/abs/not_built/core/xf86-input-wacom/70-wacom.rules
new file mode 100644
index 0000000..67e5580
--- /dev/null
+++ b/abs/not_built/core/xf86-input-wacom/70-wacom.rules
@@ -0,0 +1,8 @@
+ACTION!="add|change", GOTO="wacom_end"
+
+# Match all wacom tablets with a serial ID starting with WACf
+ATTRS{id}=="WACf*" ENV{NAME}="Serial Wacom Tablet", ENV{SUBSYSTEM}="input", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
+ATTRS{id}=="FUJ*" ENV{NAME}="Serial Wacom Tablet", ENV{SUBSYSTEM}="input", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1"
+
+LABEL="wacom_end"
+
diff --git a/abs/not_built/core/xf86-input-wacom/PKGBUILD b/abs/not_built/core/xf86-input-wacom/PKGBUILD
new file mode 100644
index 0000000..5296159
--- /dev/null
+++ b/abs/not_built/core/xf86-input-wacom/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 88601 2010-08-24 09:13:17Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: M Rawash <mrawash@gmail.com>
+
+pkgname=xf86-input-wacom
+pkgver=0.10.8
+pkgrel=2
+pkgdesc="X.Org Wacom tablet driver"
+arch=('i686' 'x86_64')
+url="http://linuxwacom.sourceforge.net/"
+license=('GPL')
+backup=('etc/X11/xorg.conf.d/50-wacom.conf')
+depends=('libxi')
+makedepends=('xorg-server-devel' 'libxext' 'libxi')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool)
+source=(http://downloads.sourceforge.net/project/linuxwacom/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+ 70-wacom.rules)
+md5sums=('e2bcc125070a16a7e3608d074d5d27dc'
+ '4d3665bb2ef8a8190734640dffa4c6f7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --with-xorg-conf-dir=/etc/X11/xorg.conf.d
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/lib/udev/rules.d"
+ install -m644 "${srcdir}/70-wacom.rules" "${pkgdir}/lib/udev/rules.d/"
+}
diff --git a/abs/not_built/core/xf86-video-apm/PKGBUILD b/abs/not_built/core/xf86-video-apm/PKGBUILD
new file mode 100644
index 0000000..dc79a62
--- /dev/null
+++ b/abs/not_built/core/xf86-video-apm/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88609 2010-08-24 09:19:57Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-apm
+pkgver=1.2.3
+pkgrel=1
+pkgdesc="X.org Alliance ProMotion video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('1fa7180cf985a74132f8d5b39a0bf9df08713fac')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-ark/PKGBUILD b/abs/not_built/core/xf86-video-ark/PKGBUILD
new file mode 100644
index 0000000..03b715a
--- /dev/null
+++ b/abs/not_built/core/xf86-video-ark/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88612 2010-08-24 09:22:30Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-ark
+pkgver=0.7.3
+pkgrel=1
+pkgdesc="X.org ark video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('56901ec6097a83433689f208268281f9c98c238b')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-ast/PKGBUILD b/abs/not_built/core/xf86-video-ast/PKGBUILD
new file mode 100644
index 0000000..8cfbaa9
--- /dev/null
+++ b/abs/not_built/core/xf86-video-ast/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-ast
+pkgver=0.91.10
+pkgrel=1
+pkgdesc="X.org ASPEED AST Graphics video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('a90624e63f33fdcb50ccefcdeebb34052f341ef3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-ati/PKGBUILD b/abs/not_built/core/xf86-video-ati/PKGBUILD
new file mode 100644
index 0000000..a708fc3
--- /dev/null
+++ b/abs/not_built/core/xf86-video-ati/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id: PKGBUILD 92040 2010-09-28 17:24:55Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-ati
+pkgver=6.13.2
+pkgrel=1
+pkgdesc="X.org ati video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(libpciaccess libdrm udev pixman ati-dri)
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+md5sums=('a8f92fe3c458e511f4e2ead7f92c02b0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make "DESTDIR=${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-chips/PKGBUILD b/abs/not_built/core/xf86-video-chips/PKGBUILD
new file mode 100644
index 0000000..b0bab50
--- /dev/null
+++ b/abs/not_built/core/xf86-video-chips/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88618 2010-08-24 09:46:46Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-chips
+pkgver=1.2.3
+pkgrel=1
+pkgdesc="X.org Chips and Technologies video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(glibc)
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('79d1592dacbdd5ff0419dcb2fef2a2ca541dd329')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-cirrus/LICENSE b/abs/not_built/core/xf86-video-cirrus/LICENSE
new file mode 100644
index 0000000..bb283cf
--- /dev/null
+++ b/abs/not_built/core/xf86-video-cirrus/LICENSE
@@ -0,0 +1,22 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright 2000 by Egbert Eich
+
+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 Alan Hourihane not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Alan Hourihane makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+EGBERT EICH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xf86-video-cirrus/PKGBUILD b/abs/not_built/core/xf86-video-cirrus/PKGBUILD
new file mode 100644
index 0000000..06d6510
--- /dev/null
+++ b/abs/not_built/core/xf86-video-cirrus/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88621 2010-08-24 09:48:53Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-cirrus
+pkgver=1.3.2
+pkgrel=4
+pkgdesc="X.org Cirrus Logic video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('8195d03ed0be0975c03441e66a9f53b3'
+ 'b9b570ac5c03f1fbe3e0cee5fe884b82')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-dummy/PKGBUILD b/abs/not_built/core/xf86-video-dummy/PKGBUILD
new file mode 100644
index 0000000..06386c7
--- /dev/null
+++ b/abs/not_built/core/xf86-video-dummy/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88624 2010-08-24 09:52:29Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-dummy
+pkgver=0.3.4
+pkgrel=2
+pkgdesc="X.org dummy video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('876ed7165ea2821bbddd73232a1ce0b79c1f14ff')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-fbdev/PKGBUILD b/abs/not_built/core/xf86-video-fbdev/PKGBUILD
new file mode 100644
index 0000000..2208c59
--- /dev/null
+++ b/abs/not_built/core/xf86-video-fbdev/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88627 2010-08-24 09:55:20Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-fbdev
+pkgver=0.4.2
+pkgrel=2
+pkgdesc="X.org framebuffer video driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('c8562f997d56c9fec50df6ca9892f39f43ff4c2c')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-geode/PKGBUILD b/abs/not_built/core/xf86-video-geode/PKGBUILD
new file mode 100644
index 0000000..6763518
--- /dev/null
+++ b/abs/not_built/core/xf86-video-geode/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 99349 2010-11-14 16:06:37Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-geode
+pkgver=2.11.10
+pkgrel=1
+pkgdesc="X.org AMD/Geode LX & NX video driver"
+# there is no 64bit geode
+arch=(i686)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+conflicts=('xf86-video-amd')
+replaces=('xf86-video-amd')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('01d739983e1449bac89c2c1f639ad3d6562b4fa4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-glint/LICENSE b/abs/not_built/core/xf86-video-glint/LICENSE
new file mode 100644
index 0000000..b4ca2d4
--- /dev/null
+++ b/abs/not_built/core/xf86-video-glint/LICENSE
@@ -0,0 +1,84 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright 1998-2001 by Alan Hourihane, Wigan, England.
+
+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 Alan Hourihane not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Alan Hourihane makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 1998-1999 Precision Insight, 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, 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 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.
+
+Copyright (C) 1998-2000 Michael H. Schimek <m.schimek@netway.at>
+
+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 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 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
+
+Copyright 2000-2001 by Sven Luther <luther@dpt-info.u-strasbg.fr>.
+
+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 Sven Luther not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Sven Luther makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+SVEN LUTHER DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL SVEN LUTHER BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xf86-video-glint/PKGBUILD b/abs/not_built/core/xf86-video-glint/PKGBUILD
new file mode 100644
index 0000000..f622429
--- /dev/null
+++ b/abs/not_built/core/xf86-video-glint/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88630 2010-08-24 09:57:19Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-glint
+pkgver=1.2.4
+pkgrel=4
+pkgdesc="X.org GLINT/Permedia video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('960df34e129faa411e58c0d6b56d79a3'
+ '996937b1e1d13f721b0e467fb8824780')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --disable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-i128/PKGBUILD b/abs/not_built/core/xf86-video-i128/PKGBUILD
new file mode 100644
index 0000000..4f51b9d
--- /dev/null
+++ b/abs/not_built/core/xf86-video-i128/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88633 2010-08-24 10:05:56Z jgc $
+# Maintainer:Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-i128
+pkgver=1.3.4
+pkgrel=1
+pkgdesc="X.org Number 9 I128 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('d5f755dc964eaa067b4efcafafd00814a60df775')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-i740/LICENSE b/abs/not_built/core/xf86-video-i740/LICENSE
new file mode 100644
index 0000000..1aace06
--- /dev/null
+++ b/abs/not_built/core/xf86-video-i740/LICENSE
@@ -0,0 +1,47 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright 1998-1999 Precision Insight, 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, 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 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.
+
+
+Copyright 2001 by Patrick LERDA
+Portions Copyright by Stephen Blackheath
+
+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 Patrick LERDA not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Patrick LERDA makes no representations
+about the suitability of this software for any purpose. It is provided
+"as is" without express or implied warranty.
+
+PATRICK LERDA DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL PATRICK LERDA BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xf86-video-i740/PKGBUILD b/abs/not_built/core/xf86-video-i740/PKGBUILD
new file mode 100644
index 0000000..8e9be2d
--- /dev/null
+++ b/abs/not_built/core/xf86-video-i740/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88636 2010-08-24 10:10:42Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-i740
+pkgver=1.3.2
+pkgrel=4
+pkgdesc="X.org Intel i740 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('4ac1318788f62159965f15131c869e7a'
+ '23a6d421e7529393969df8b65e88d607')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-mach64/LICENSE b/abs/not_built/core/xf86-video-mach64/LICENSE
new file mode 100644
index 0000000..1aa2df6
--- /dev/null
+++ b/abs/not_built/core/xf86-video-mach64/LICENSE
@@ -0,0 +1,209 @@
+Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+
+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 Marc Aurele La France not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. Marc Aurele La France makes no representations
+about the suitability of this software for any purpose. It is provided
+"as-is" without express or implied warranty.
+
+MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 2000 Gareth Hughes
+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
+GARETH HUGHES 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.
+
+(c) 2004 Adam Jackson. Standard MIT license applies.
+
+Copyright 1999-2000 Precision Insight, 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 NON-INFRINGEMENT. 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.
+
+Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
+Precision Insight, Inc., Cedar Park, Texas, and
+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, PRECISION INSIGHT, 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.
+
+Copyright 2003 Alex Deucher.
+
+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 ALEX DEUCHER, OR ANY OTHER
+CONTRIBUTORS 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.
+
+/*
+ * Copyright 2000 Gareth Hughes
+ * 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
+ * GARETH HUGHES 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:
+ * Gareth Hughes <gareth@valinux.com>
+ * Leif Delgass <ldelgass@retinalburn.net>
+ * José Fonseca <j_r_fonseca@yahoo.co.uk>
+ */
+
+/*
+ * Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, 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
+ * on 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
+ * ATI, PRECISION INSIGHT 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:
+ * Gareth Hughes <gareth@valinux.com>
+ * Leif Delgass <ldelgass@retinalburn.net>
+ * Jose Fonseca <j_r_fonseca@yahoo.co.uk>
+ */
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 3.5
+ *
+ * Copyright (C) 1999-2001 Brian Paul 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 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
+ * BRIAN PAUL 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:
+ * Keith Whitwell <keithw@valinux.com>
+ *
+ * Modified for mach64 by:
+ * Leif Delgass <ldelgass@retinalburn.net>
+ * José Fonseca <j_r_fonseca@yahoo.co.uk>
+ */
diff --git a/abs/not_built/core/xf86-video-mach64/PKGBUILD b/abs/not_built/core/xf86-video-mach64/PKGBUILD
new file mode 100644
index 0000000..88b2c34
--- /dev/null
+++ b/abs/not_built/core/xf86-video-mach64/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88640 2010-08-24 10:35:32Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=xf86-video-mach64
+pkgver=6.8.2
+pkgrel=4
+pkgdesc="X.org mach64 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'mach64-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('6c0522b2b72a0a47c48d718443616651'
+ '901824dae8053c63ef9d313cdaa129a0')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-mga/PKGBUILD b/abs/not_built/core/xf86-video-mga/PKGBUILD
new file mode 100644
index 0000000..0170f6c
--- /dev/null
+++ b/abs/not_built/core/xf86-video-mga/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88643 2010-08-24 10:39:07Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-mga
+pkgver=1.4.13
+pkgrel=1
+pkgdesc="X.org mga video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'mga-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool' 'force')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('55aa185cf381def4b5905c8b93694b8dfbd5c378')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-neomagic/PKGBUILD b/abs/not_built/core/xf86-video-neomagic/PKGBUILD
new file mode 100644
index 0000000..5d5bd1f
--- /dev/null
+++ b/abs/not_built/core/xf86-video-neomagic/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88646 2010-08-24 12:07:27Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-neomagic
+pkgver=1.2.5
+pkgrel=2
+pkgdesc="X.org neomagic video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('02c994e2eae191b50a8cd556e5b52d82725073b3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-nouveau/PKGBUILD b/abs/not_built/core/xf86-video-nouveau/PKGBUILD
new file mode 100644
index 0000000..fb4c542
--- /dev/null
+++ b/abs/not_built/core/xf86-video-nouveau/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 88739 2010-08-24 17:39:17Z jgc $
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Contributor: buddabrod <buddabrod@gmail.com>
+
+pkgname=xf86-video-nouveau
+_gitdate=20100819
+pkgver=0.0.16_git${_gitdate} # see configure.ac
+pkgrel=1
+pkgdesc="Open Source 3D acceleration driver for nVidia cards (experimental)"
+arch=('i686' 'x86_64')
+url="http://nouveau.freedesktop.org/wiki/"
+license=('GPL') #and MIT, not yet a license file, see http://nouveau.freedesktop.org/wiki/FAQ#head-09f75d03eb30011c754038a3893119a70745de4e
+depends=('libdrm' 'udev')
+optdepends=('nouveau-dri: highly experimental gallium3d features')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+install=${pkgname}.install
+source=(ftp://ftp.archlinux.org/other/$pkgname/xf86-video-nouveau-${_gitdate}.tar.bz2)
+md5sums=('31672103e8275bb00df061f362c7f8bb')
+
+# source PKGBUILD && mksource
+mksource() {
+ mkdir /tmp/${pkgname}-${_gitdate}
+ pushd /tmp/${pkgname}-${_gitdate}
+ git clone -v --depth 1 git://anongit.freedesktop.org/nouveau/xf86-video-nouveau
+ cd xf86-video-nouveau
+ git archive --prefix=xf86-video-nouveau-${_gitdate}/ --format=tar HEAD | bzip2 > /tmp/${pkgname}-${_gitdate}/${pkgname}-${_gitdate}.tar.bz2
+ popd
+}
+
+build() {
+ cd ${srcdir}/xf86-video-nouveau-${_gitdate}
+ ./autogen.sh --prefix=/usr
+ make
+}
+
+package() {
+ cd ${srcdir}/xf86-video-nouveau-${_gitdate}
+ make DESTDIR=${pkgdir} install
+}
diff --git a/abs/not_built/core/xf86-video-nouveau/xf86-video-nouveau.install b/abs/not_built/core/xf86-video-nouveau/xf86-video-nouveau.install
new file mode 100644
index 0000000..027154f
--- /dev/null
+++ b/abs/not_built/core/xf86-video-nouveau/xf86-video-nouveau.install
@@ -0,0 +1,16 @@
+post_install () {
+ cat << _EOF
+ ==> make sure you use KernelModeSetting (KMS)
+ ==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more
+_EOF
+}
+
+post_upgrade() {
+ if [ "`vercmp $2 0.0.15_git20100117-1`" -lt 0 ]; then
+ cat << _EOF
+ ==> ATTENTION: Usermode support has been dropped
+ ==> make sure you use KernelModeSetting (KMS)
+ ==> see http://wiki.archlinux.org/index.php/Nouveau#KMS for more
+_EOF
+ fi
+}
diff --git a/abs/not_built/core/xf86-video-nv/PKGBUILD b/abs/not_built/core/xf86-video-nv/PKGBUILD
new file mode 100644
index 0000000..d9f6bfd
--- /dev/null
+++ b/abs/not_built/core/xf86-video-nv/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88649 2010-08-24 12:12:40Z jgc $
+# Maintainer:Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-nv
+pkgver=2.1.18
+pkgrel=1
+pkgdesc="X.org nv video driver"
+arch=(i686 x86_64)
+license=('custom')
+url="http://xorg.freedesktop.org/"
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('d35b2fa5a26a507a9cc95b69243d9fd0c0f32aa2')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-openchrome/LICENSE.txt b/abs/not_built/core/xf86-video-openchrome/LICENSE.txt
new file mode 100644
index 0000000..dff1dc3
--- /dev/null
+++ b/abs/not_built/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/not_built/core/xf86-video-openchrome/PKGBUILD b/abs/not_built/core/xf86-video-openchrome/PKGBUILD
new file mode 100644
index 0000000..7d009a9
--- /dev/null
+++ b/abs/not_built/core/xf86-video-openchrome/PKGBUILD
@@ -0,0 +1,35 @@
+# $Id: PKGBUILD 88694 2010-08-24 13:35:43Z jgc $
+# Contributor: Paul Mattal <paul@mattal.com>
+# Maintainer: Juergen Hoetzel <juergen@hoetzel.info>
+
+pkgname=xf86-video-openchrome
+pkgver=0.2.904
+pkgrel=4
+pkgdesc="X.Org Openchrome drivers"
+arch=(i686 x86_64)
+license=('custom')
+url="http://www.openchrome.org"
+depends=('libdrm' 'libxvmc' 'unichrome-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa' 'libxvmc')
+replaces=('openchrome' 'xf86-video-via')
+options=('!libtool' 'force' '!makeflags')
+conflicts=('xf86-video-via' 'xf86-video-unichrome' 'openchrome' 'xorg-server<1.9.0')
+source=(http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ drm_stdint.patch
+ svn-r839.patch
+ LICENSE.txt)
+md5sums=('f2481d98ef54febf5bffbb88a2a2426d'
+ 'bc516400ffc3df5d0dfe604f6245dd32'
+ '5aed4aa44dd5a6d3e2da9baad73ac0ab'
+ 'addb3cf2671f4cf7e91156952de1627f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/svn-r839.patch"
+ patch -Np0 -i "${srcdir}/drm_stdint.patch"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgname}/COPYING"
+}
diff --git a/abs/not_built/core/xf86-video-openchrome/drm_stdint.patch b/abs/not_built/core/xf86-video-openchrome/drm_stdint.patch
new file mode 100644
index 0000000..226a015
--- /dev/null
+++ b/abs/not_built/core/xf86-video-openchrome/drm_stdint.patch
@@ -0,0 +1,10 @@
+--- src/via_xvmc.h.orig 2010-03-07 01:46:34.000000000 +0100
++++ src/via_xvmc.h 2010-03-07 01:46:45.000000000 +0100
+@@ -26,6 +26,7 @@
+ #ifndef _VIA_XVMC_H
+ #define _VIA_XVMC_H 1
+
++#include <stdint.h>
+ #include "via_drm.h"
+
+ /*
diff --git a/abs/not_built/core/xf86-video-openchrome/svn-r839.patch b/abs/not_built/core/xf86-video-openchrome/svn-r839.patch
new file mode 100644
index 0000000..8e5f056
--- /dev/null
+++ b/abs/not_built/core/xf86-video-openchrome/svn-r839.patch
@@ -0,0 +1,1447 @@
+diff -ruN xf86-video-openchrome-0.2.904/ChangeLog ../openchrome/xf86-video-openchrome-0.2.904/ChangeLog
+--- xf86-video-openchrome-0.2.904/ChangeLog 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/ChangeLog 2010-03-07 01:09:00.000000000 +0100
+@@ -1,3 +1,52 @@
++2010-02-10 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Fix bug with suspend and VT switch on VX800 and 64bit systems
++
++ * src/via_driver.h:
++ * src/via_video.c: (viaResetVideo), (viaSaveVideo),
++ (viaRestoreVideo), (viaExitVideo):
++ * src/via_video.h:
++
++2010-01-24 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Fix starting address restore and save (initial 64-bit support)
++
++ * src/via_crtc.c: (ViaFirstCRTCSetMode),
++ (ViaFirstCRTCSetStartingAddress):
++ * src/via_dri.c: (VIADRIAgpInit):
++ * src/via_driver.c: (VIASave), (VIARestore):
++ * src/via_driver.h:
++
++2009-12-04 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Enable new mode switch for VM800 chipsets
++
++ * src/via_driver.c: (VIASetupDefaultOptions):
++
++2009-11-21 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Add option to enable unaccelerated RandR rotation ("SWRandR").
++ The accelerated option "HWRandR" is currently not implemented.
++
++ * src/openchrome.man:
++ * src/via_driver.c: (VIAPreInit):
++
++2009-11-20 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Enabled new mode switch for PM800 chipset,
++ to resolve many bugs with resolution detecting and changing
++ (eg. switching to console)
++
++ * src/via_driver.c: (VIASetupDefaultOptions), (VIAPreInit):
++
++2009-11-07 Bartosz Kosiorek <gang65@poczta.onet.pl>
++
++ Add more comments to ViaSetSecondaryFIFO, add panel scale support for
++ CLE266 and KM400, fix bug with malloc.
++
++ * src/via_bandwidth.c: (ViaSetSecondaryFIFO):
++ * src/via_panel.c: (ViaPanelScale), (ViaPanelGetNativeDisplayMode):
++
+ 2009-09-26 Bartosz Kosiorek <gang65@poczta.onet.pl>
+
+ Save/restore ECK Clock Synthesizer
+diff -ruN xf86-video-openchrome-0.2.904/man/openchrome.man ../openchrome/xf86-video-openchrome-0.2.904/man/openchrome.man
+--- xf86-video-openchrome-0.2.904/man/openchrome.man 2009-10-09 01:12:41.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/man/openchrome.man 2010-03-07 01:09:00.000000000 +0100
+@@ -59,7 +59,7 @@
+ .BI "Option \*qAccelMethod\*q \*q" string \*q
+ The driver supports "XAA" and "EXA" acceleration methods. The default
+ method is XAA, since EXA is still experimental. Contrary to XAA, EXA
+-implements acceleration for screen uploads and downlads (if DRI is
++implements acceleration for screen uploads and downloads (if DRI is
+ enabled) and for the Render/Composite extension.
+ .TP
+ .BI "Option \*qActiveDevice\*q \*q" string \*q
+@@ -81,7 +81,7 @@
+ no room for DRI textures, they will be allocated from the DRI part of
+ VRAM (see the option "MaxDRIMem"). The default amount of AGP is
+ 32768 kB. Note that the AGP aperture set in the BIOS must be able
+-to accomodate the amount of AGP memory specified here. Otherwise no
++to accommodate the amount of AGP memory specified here. Otherwise no
+ AGP memory will be available. It is safe to set a very large AGP
+ aperture in the BIOS.
+ .TP
+@@ -159,9 +159,16 @@
+ system. The sizes 640x480, 800x600, 1024x768, 1280x1024, and 1400x1050
+ are supported.
+ .TP
++.BI "Option \*qRotationType\*q \*q" string \*q
++Enabled rotation by using RandR. The driver only support unaccelerated
++RandR rotations "SWRandR". Hardware rotations "HWRandR" is currently
++unimplemented.
++.TP
+ .BI "Option \*qRotate\*q \*q" string \*q
+ Rotates the display either clockwise ("CW"), counterclockwise ("CCW") and
+-upside-down ("UD"). Rotation is only supported unaccelerated.
++upside-down ("UD"). Rotation is only supported unaccelerated. Adding
++option "Rotate", enables RandR rotation feature. The RandR allows
++clients to dynamically change X screens.
+ .TP
+ .BI "Option \*qShadowFB\*q \*q" boolean \*q
+ Enables the use of a shadow frame buffer. This is required when
+diff -ruN xf86-video-openchrome-0.2.904/src/svnversion.h ../openchrome/xf86-video-openchrome-0.2.904/src/svnversion.h
+--- xf86-video-openchrome-0.2.904/src/svnversion.h 2009-10-09 01:19:04.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/svnversion.h 2010-03-07 01:09:15.000000000 +0100
+@@ -1 +1 @@
+-#define BUILDCOMMENT "(openchrome 0.2.904 release)"
++#define BUILDCOMMENT "(development build, at svn revision 839)"
+diff -ruN xf86-video-openchrome-0.2.904/src/via_accel.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_accel.c
+--- xf86-video-openchrome-0.2.904/src/via_accel.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_accel.c 2010-03-07 01:09:00.000000000 +0100
+@@ -1210,7 +1210,8 @@
+
+ /* General acceleration flags. */
+ xaaptr->Flags = (PIXMAP_CACHE |
+- OFFSCREEN_PIXMAPS | LINEAR_FRAMEBUFFER |
++ OFFSCREEN_PIXMAPS |
++ LINEAR_FRAMEBUFFER |
+ MICROSOFT_ZERO_LINE_BIAS | 0);
+
+ if (pScrn->bitsPerPixel == 8)
+@@ -1228,14 +1229,17 @@
+
+ xaaptr->Sync = viaAccelSync;
+
++ /* ScreenToScreen copies */
+ xaaptr->SetupForScreenToScreenCopy = viaSetupForScreenToScreenCopy;
+ xaaptr->SubsequentScreenToScreenCopy = viaSubsequentScreenToScreenCopy;
+ xaaptr->ScreenToScreenCopyFlags = NO_PLANEMASK | ROP_NEEDS_SOURCE;
+
++ /* Solid filled rectangles */
+ xaaptr->SetupForSolidFill = viaSetupForSolidFill;
+ xaaptr->SubsequentSolidFillRect = viaSubsequentSolidFillRect;
+ xaaptr->SolidFillFlags = NO_PLANEMASK | ROP_NEEDS_SOURCE;
+
++ /* Mono 8x8 pattern fills */
+ xaaptr->SetupForMono8x8PatternFill = viaSetupForMono8x8PatternFill;
+ xaaptr->SubsequentMono8x8PatternFillRect =
+ viaSubsequentMono8x8PatternFillRect;
+@@ -1244,6 +1248,7 @@
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN |
+ BIT_ORDER_IN_BYTE_MSBFIRST | 0);
+
++ /* Color 8x8 pattern fills */
+ xaaptr->SetupForColor8x8PatternFill = viaSetupForColor8x8PatternFill;
+ xaaptr->SubsequentColor8x8PatternFillRect =
+ viaSubsequentColor8x8PatternFillRect;
+@@ -1252,12 +1257,14 @@
+ HARDWARE_PATTERN_PROGRAMMED_BITS |
+ HARDWARE_PATTERN_PROGRAMMED_ORIGIN | 0);
+
++ /* Solid lines */
+ xaaptr->SetupForSolidLine = viaSetupForSolidLine;
+ xaaptr->SubsequentSolidTwoPointLine = viaSubsequentSolidTwoPointLine;
+ xaaptr->SubsequentSolidHorVertLine = viaSubsequentSolidHorVertLine;
+ xaaptr->SolidBresenhamLineErrorTermBits = 14;
+ xaaptr->SolidLineFlags = NO_PLANEMASK | ROP_NEEDS_SOURCE;
+
++ /* Dashed line */
+ xaaptr->SetupForDashedLine = viaSetupForDashedLine;
+ xaaptr->SubsequentDashedTwoPointLine = viaSubsequentDashedTwoPointLine;
+ xaaptr->DashPatternMaxLength = 8;
+@@ -1266,35 +1273,42 @@
+ LINE_PATTERN_POWER_OF_2_ONLY |
+ LINE_PATTERN_MSBFIRST_LSBJUSTIFIED | 0);
+
++ /* CPU to Screen color expansion */
+ xaaptr->ScanlineCPUToScreenColorExpandFillFlags = NO_PLANEMASK |
+- CPU_TRANSFER_PAD_DWORD |
+- SCANLINE_PAD_DWORD |
+- BIT_ORDER_IN_BYTE_MSBFIRST |
+- LEFT_EDGE_CLIPPING | ROP_NEEDS_SOURCE | 0;
++ CPU_TRANSFER_PAD_DWORD |
++ SCANLINE_PAD_DWORD |
++ BIT_ORDER_IN_BYTE_MSBFIRST |
++ LEFT_EDGE_CLIPPING |
++ ROP_NEEDS_SOURCE | 0;
+
+ xaaptr->SetupForScanlineCPUToScreenColorExpandFill =
+ viaSetupForCPUToScreenColorExpandFill;
+ xaaptr->SubsequentScanlineCPUToScreenColorExpandFill =
+ viaSubsequentScanlineCPUToScreenColorExpandFill;
+ xaaptr->ColorExpandBase = pVia->BltBase;
+- xaaptr->ColorExpandRange = VIA_MMIO_BLTSIZE;
++ if (pVia->Chipset == VIA_VX800 || pVia->Chipset == VIA_VX855)
++ xaaptr->ColorExpandRange = VIA_MMIO_BLTSIZE;
++ else
++ xaaptr->ColorExpandRange = (64 * 1024);
+
++ /* ImageWrite */
+ xaaptr->ImageWriteFlags = (NO_PLANEMASK |
+ CPU_TRANSFER_PAD_DWORD |
+ SCANLINE_PAD_DWORD |
+ BIT_ORDER_IN_BYTE_MSBFIRST |
+- LEFT_EDGE_CLIPPING | ROP_NEEDS_SOURCE | 0);
++ LEFT_EDGE_CLIPPING |
++ ROP_NEEDS_SOURCE | 0);
+ // SYNC_AFTER_IMAGE_WRITE | 0);
+
+ /*
+ * Most Unichromes are much faster using processor-to-framebuffer writes
+ * than when using the 2D engine for this.
+- * test with x11perf -shmput500!
++ * test with "x11perf -shmput500"
++ * Example: K8M890 chipset; with GPU=86.3/sec; without GPU=132.0/sec
++ * TODO Check speed for other chipsets
+ */
+
+ switch (pVia->Chipset) {
+- case VIA_K8M800:
+- case VIA_K8M890:
+ case VIA_P4M900:
+ case VIA_VX800:
+ case VIA_VX855:
+diff -ruN xf86-video-openchrome-0.2.904/src/via_bandwidth.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_bandwidth.c
+--- xf86-video-openchrome-0.2.904/src/via_bandwidth.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_bandwidth.c 2010-03-07 01:09:00.000000000 +0100
+@@ -194,6 +194,7 @@
+ else
+ ViaSeqMask(hwp, 0x22, 0x00, 0x1F); /* 128/4 = overflow = 0 */
+ break;
++ /* PM800/PM880/CN400 */
+ case VIA_PM800:
+ hwp->writeSeq(hwp, 0x17, 0x5F); /* 95 */
+ ViaSeqMask(hwp, 0x16, 0x20, 0xBF); /* 32 */
+@@ -204,9 +205,10 @@
+ else
+ ViaSeqMask(hwp, 0x22, 0x1F, 0x1F); /* 31 */
+ break;
++ /* P4M800Pro/VN800/CN700 */
+ case VIA_VM800:
+ hwp->writeSeq(hwp, 0x17, 0x2F);
+- ViaSeqMask(hwp, 0x16, 0x14, 0xBF);
++ ViaSeqMask(hwp, 0x16, 0x14, 0xBF); /* 80/4 = 20 = 0x14 */
+ ViaSeqMask(hwp, 0x18, 0x08, 0xBF);
+
+ if ((mode->HDisplay >= 1400) && (pScrn->bitsPerPixel == 32))
+@@ -215,40 +217,51 @@
+ ViaSeqMask(hwp, 0x22, 0x00, 0x1F);
+ break;
+ case VIA_K8M890:
+- hwp->writeSeq(hwp, 0x16, 0x92);
+- hwp->writeSeq(hwp, 0x17, 0xB3);
+- hwp->writeSeq(hwp, 0x18, 0x8A);
++ /* depth location: {SR17,0,7} */
++ hwp->writeSeq(hwp, 0x17, 0xB3); /* 360/2-1 = 179 = 0xB3 */
++ /* Formula (x & 0x3F) | ((x & 0x40) << 1) */
++ /* threshold location: {SR16,0,5},{SR16,7,7} */
++ ViaSeqMask(hwp, 0x16, 0x92, 0xBF); /* 328/4 = 82 = 0x52 */
++ /* high threshold location: {SR18,0,5},{SR18,7,7} */
++ ViaSeqMask(hwp, 0x18, 0x8A, 0xBF); /* 296/4 = 74 = 0x4A */
++ /* display queue expire num location: {SR22,0,4}. */
++ ViaSeqMask(hwp, 0x22, 0x1F, 0x1F); /* 124/4 = 31 = 0x1F */
+ break;
+ case VIA_P4M900:
+- ViaSeqMask(hwp, 0x17, 0x2F, 0xFF);
+- ViaSeqMask(hwp, 0x16, 0x13, 0x3F);
+- ViaSeqMask(hwp, 0x16, 0x00, 0x80);
+- ViaSeqMask(hwp, 0x18, 0x13, 0x3F);
+- ViaSeqMask(hwp, 0x18, 0x00, 0x80);
++ /* location: {SR17,0,7} */
++ hwp->writeSeq(hwp, 0x17, 0x2F); /* 96/2-1 = 47 = 0x2F */
++ /* location: {SR16,0,5},{SR16,7,7} */
++ ViaSeqMask(hwp, 0x16, 0x13, 0xBF); /* 76/4 = 19 = 0x13 */
++ /* location: {SR18,0,5},{SR18,7,7} */
++ ViaSeqMask(hwp, 0x18, 0x13, 0xBF); /* 76/4 = 19 = 0x13 */
++ /* location: {SR22,0,4}. */
++ ViaSeqMask(hwp, 0x22, 0x08, 0x1F); /* 32/4 = 8 = 0x08 */
+ break;
+ case VIA_P4M890:
+- hwp->writeSeq(hwp, 0x16, 0x13);
+- hwp->writeSeq(hwp, 0x17, 0x2F);
+- hwp->writeSeq(hwp, 0x18, 0x53);
+- hwp->writeSeq(hwp, 0x22, 0x10);
++ hwp->writeSeq(hwp, 0x17, 0x2F); /* 96/2-1 = 47 = 0x2F */
++ ViaSeqMask(hwp, 0x16, 0x13, 0xBF); /* 76/4 = 19 = 0x13 */
++ ViaSeqMask(hwp, 0x18, 0x10, 0xBF); /* 64/4 = 16 = 0x10 */
++ ViaSeqMask(hwp, 0x22, 0x08, 0x1F); /* 32/4 = 8 = 0x08 */
+ break;
+ case VIA_CX700:
+- hwp->writeSeq(hwp, 0x16, 0x26);
+ hwp->writeSeq(hwp, 0x17, 0x5F);
+- hwp->writeSeq(hwp, 0x18, 0x66);
+- hwp->writeSeq(hwp, 0x22, 0x1F);
++ ViaSeqMask(hwp, 0x16, 0x20, 0xBF); /* 128/4 = 32 = 0x20 */
++ ViaSeqMask(hwp, 0x18, 0x20, 0xBF); /* 128/4 = 32 = 0x20 */
++ ViaSeqMask(hwp, 0x22, 0x1F, 0x1F); /* 124/4 = 31 = 0x1F */
+ break;
+ case VIA_VX800:
+- hwp->writeSeq(hwp, 0x16, 0x26); /* 152/4 = 38 */
+- hwp->writeSeq(hwp, 0x17, 0x5F); /* 192/2-1 = 95 */
++ hwp->writeSeq(hwp, 0x17, 0x5F); /* 192/2-1 = 95 = 0x5F */
++ hwp->writeSeq(hwp, 0x16, 0x26); /* 152/4 = 38 = 0x26 */
+ hwp->writeSeq(hwp, 0x18, 0x26); /* 152/4 = 38 */
+ hwp->writeSeq(hwp, 0x22, 0x10); /* 64/4 = 16 */
+ break;
+ case VIA_VX855:
+- hwp->writeSeq(hwp, 0x16, 0x50); /* 320/4 = 80 */
+- hwp->writeSeq(hwp, 0x17, 0xC7); /* 400/2-1 = 199 */
+- hwp->writeSeq(hwp, 0x18, 0x50); /* 320/4 = 80 */
+- hwp->writeSeq(hwp, 0x22, 0x28); /* 160/4 = 40 */
++ hwp->writeSeq(hwp, 0x17, 0xC7); /* 400/2-1 = 199 = 0xC7 */
++ /* TODO Formula for SR16 is: (0x50 & 0x3F) | ((0x50 & 0x40) << 1) = 0x90 */
++ hwp->writeSeq(hwp, 0x16, 0x50); /* 320/4 = 80 = 0x50 */
++ hwp->writeSeq(hwp, 0x18, 0x50); /* 320/4 = 80 = 0x50 */
++ hwp->writeSeq(hwp, 0x22, 0x28); /* 160/4 = 40 = 0x28 */
++ break;
+ default:
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "ViaSetPrimaryFIFO: "
+ "Chipset %d not implemented\n", pVia->Chipset);
+@@ -371,7 +384,38 @@
+ ViaCrtcMask(hwp, 0x94, 0x20, 0x7F);
+ break;
+ case VIA_P4M890:
++ /* depth location: {CR68,4,7},{CR94,7,7},{CR95,7,7} */
++ ViaCrtcMask(hwp, 0x68, 0xB0, 0xF0); /* 96/8-1 = 11 = 0x0B */
++ ViaCrtcMask(hwp, 0x94, 0x00, 0x80);
++ ViaCrtcMask(hwp, 0x95, 0x00, 0x80);
++
++ /* location: {CR68,0,3},{CR95,4,6} */
++ ViaCrtcMask(hwp, 0x68, 0x03, 0x0F); /* 76/4 = 19 = 0x13 */
++ ViaCrtcMask(hwp, 0x95, 0x10, 0x70);
++
++ /* location: {CR92,0,3},{CR95,0,2} */
++ ViaCrtcMask(hwp, 0x92, 0x00, 0x0F); /* 64/4 = 16 = 0x10 */
++ ViaCrtcMask(hwp, 0x95, 0x01, 0x07);
++
++ /* location: {CR94,0,6} */
++ ViaCrtcMask(hwp, 0x94, 0x08, 0x7F); /* 32/4 = 8 = 0x08 */
++ break;
+ case VIA_K8M890:
++ /* Display Queue Depth, location: {CR68,4,7},{CR94,7,7},{CR95,7,7} */
++ ViaCrtcMask(hwp, 0x68, 0xC0, 0xF0); /* 360/8-1 = 44 = 0x2C; 0x2C << 4 = 0xC0 */
++ ViaCrtcMask(hwp, 0x94, 0x00, 0x80); /* 0x2C << 3 = 0x00 */
++ ViaCrtcMask(hwp, 0x95, 0x80, 0x80); /* 0x2C << 2 = 0x80 */
++
++ /* Display Queue Read Threshold 1, location: {CR68,0,3},{CR95,4,6} */
++ ViaCrtcMask(hwp, 0x68, 0x02, 0x0F); /* 328/4 = 82 = 0x52 */
++ ViaCrtcMask(hwp, 0x95, 0x50, 0x70);
++
++ /* location: {CR92,0,3},{CR95,0,2} */
++ ViaCrtcMask(hwp, 0x92, 0x0A, 0x0F); /* 296/4 = 74 = 0x4A */
++ ViaCrtcMask(hwp, 0x95, 0x04, 0x07); /* 0x4A >> 4 = 0x04 */
++
++ /* Display Expire Number Bits, location: {CR94,0,6} */
++ ViaCrtcMask(hwp, 0x94, 0x1F, 0x7F); /* 124/4 = 31 = 0x1F */
+ break;
+ case VIA_P4M900:
+ ViaCrtcMask(hwp, 0x68, 0xB0, 0xF0);
+diff -ruN xf86-video-openchrome-0.2.904/src/via_crtc.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_crtc.c
+--- xf86-video-openchrome-0.2.904/src/via_crtc.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_crtc.c 2010-03-07 01:09:00.000000000 +0100
+@@ -234,8 +234,8 @@
+ /* Primary starting address -> 0x00, adjustframe does the rest */
+ hwp->writeCrtc(hwp, 0x0C, 0x00);
+ hwp->writeCrtc(hwp, 0x0D, 0x00);
+- hwp->writeCrtc(hwp, 0x34, 0x00);
+ ViaCrtcMask(hwp, 0x48, 0x00, 0x03); /* is this even possible on CLE266A ? */
++ hwp->writeCrtc(hwp, 0x34, 0x00);
+
+ /* vertical sync start : 2047 */
+ temp = mode->CrtcVSyncStart;
+@@ -331,15 +331,20 @@
+ CARD32 Base;
+ CARD32 tmp;
+
++ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "ViaFirstCRTCSetStartingAddress\n"));
++
+ Base = (y * pScrn->displayWidth + x) * (pScrn->bitsPerPixel / 8);
+ Base = Base >> 1;
+
+ hwp->writeCrtc(hwp, 0x0C, (Base & 0xFF00) >> 8);
+ hwp->writeCrtc(hwp, 0x0D, Base & 0xFF);
+- hwp->writeCrtc(hwp, 0x34, (Base & 0xFF0000) >> 16);
+-
++ /* FIXME The proper starting address for CR48 is 0x1F - Bits[28:24] */
+ if (!(pVia->Chipset == VIA_CLE266 && CLE266_REV_IS_AX(pVia->ChipRev)))
+ ViaCrtcMask(hwp, 0x48, Base >> 24, 0x0F);
++ /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */
++ hwp->writeCrtc(hwp, 0x34, (Base & 0xFF0000) >> 16);
++
++
+ }
+
+ void
+diff -ruN xf86-video-openchrome-0.2.904/src/via_cursor.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_cursor.c
+--- xf86-video-openchrome-0.2.904/src/via_cursor.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_cursor.c 2010-03-07 01:09:00.000000000 +0100
+@@ -145,9 +145,12 @@
+ infoPtr->ShowCursor = viaShowCursor;
+ infoPtr->UseHWCursor = viaUseHWCursor;
+
++ /* ARGB Cursor init */
+ infoPtr->UseHWCursorARGB = viaUseHWCursorARGB;
+- if (pVia->CursorARGBSupported)
++ if (pVia->CursorARGBSupported) {
++ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "HWCursor ARGB enabled\n"));
+ infoPtr->LoadCursorARGB = viaLoadCursorARGB;
++ }
+
+ /* Set cursor location in frame buffer. */
+ VIASETREG(VIA_REG_CURSOR_MODE, pVia->cursorOffset);
+@@ -284,7 +287,7 @@
+ }
+
+ /*
+- * ARGB Cursor
++ * display the current cursor
+ */
+
+ void
+@@ -319,13 +322,19 @@
+ */
+
+ /* Duoview */
+- if (pVia->CursorPipe)
++ if (pVia->CursorPipe) {
++ /* Mono Cursor Display Path [bit31]: Secondary */
++ /* FIXME For CLE266 nad KM400 try to enable 32x32 cursor size [bit1] */
+ VIASETREG(VIA_REG_ALPHA_CONTROL, 0xF6000005);
+- else
++ } else {
++ /* Mono Cursor Display Path [bit31]: Primary */
+ VIASETREG(VIA_REG_ALPHA_CONTROL, 0x76000005);
++ }
+ }
+ }
+
++
++/* hide the current cursor */
+ void
+ viaHideCursor(ScrnInfoPtr pScrn)
+ {
+@@ -350,10 +359,16 @@
+
+ default:
+ temp = VIAGETREG(VIA_REG_ALPHA_CONTROL);
++ /* Hardware cursor disable [bit0] */
+ VIASETREG(VIA_REG_ALPHA_CONTROL, temp & 0xFFFFFFFA);
+ }
+ }
+
++/*
++ Set the cursor position to (x,y). X and/or y may be negative
++ indicating that the cursor image is partially offscreen on
++ the left and/or top edges of the screen.
++*/
+ static void
+ viaSetCursorPosition(ScrnInfoPtr pScrn, int x, int y)
+ {
+@@ -409,6 +424,15 @@
+ && pCurs->bits->height <= pVia->CursorMaxHeight);
+ }
+
++/*
++ If the driver is unable to use a hardware cursor for reasons
++ other than the cursor being larger than the maximum specified
++ in the MaxWidth or MaxHeight field below, it can supply the
++ UseHWCursor function. If UseHWCursor is provided by the driver,
++ it will be called whenever the cursor shape changes or the video
++ mode changes. This is useful for when the hardware cursor cannot
++ be used in interlaced or doublescan modes.
++*/
+ static Bool
+ viaUseHWCursor(ScreenPtr pScreen, CursorPtr pCurs)
+ {
+@@ -423,8 +447,11 @@
+ && pCurs->bits->height <= pVia->CursorMaxHeight);
+ }
+
++/*
++ Load Mono Cursor Image
++*/
+ static void
+-viaLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *s)
++viaLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *src)
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+ CARD32 temp;
+@@ -439,7 +466,7 @@
+ if (pVia->CursorARGBSupported) {
+ #define ARGB_PER_CHUNK (8 * sizeof (chunk) / 2)
+ for (i = 0; i < (pVia->CursorMaxWidth * pVia->CursorMaxHeight / ARGB_PER_CHUNK); i++) {
+- chunk = *s++;
++ chunk = *src++;
+ for (j = 0; j < ARGB_PER_CHUNK; j++, chunk >>= 2)
+ *dst++ = mono_cursor_color[chunk & 3];
+ }
+@@ -447,7 +474,7 @@
+ pVia->CursorFG = mono_cursor_color[3];
+ pVia->CursorBG = mono_cursor_color[2];
+ } else {
+- memcpy(dst, (CARD8*)s, pVia->CursorSize);
++ memcpy(dst, (CARD8*)src, pVia->CursorSize);
+ }
+ switch(pVia->Chipset) {
+ case VIA_CX700:
+@@ -471,11 +498,17 @@
+ }
+ }
+
++/*
++ Set the cursor foreground and background colors. In 8bpp, fg and
++ bg are indicies into the current colormap unless the
++ HARDWARE_CURSOR_TRUECOLOR_AT_8BPP flag is set. In that case
++ and in all other bpps the fg and bg are in 8-8-8 RGB format.
++*/
++
+ static void
+ viaSetCursorColors(ScrnInfoPtr pScrn, int bg, int fg)
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+- CARD32 control = pVia->CursorRegControl;
+ CARD32 pixel;
+ CARD32 temp;
+ CARD32 *dst;
+@@ -487,12 +520,10 @@
+ fg |= 0xff000000;
+ bg |= 0xff000000;
+
++ /* Don't recolour the image if we don't have to. */
+ if (fg == pVia->CursorFG && bg == pVia->CursorBG)
+ return;
+
+- temp = VIAGETREG(control);
+- VIASETREG(control, temp & 0xFFFFFFFE);
+-
+ dst = (CARD32*)pVia->cursorMap;
+ for (i = 0; i < pVia->CursorMaxWidth * pVia->CursorMaxHeight; i++, dst++)
+ if ((pixel = *dst))
+@@ -517,7 +548,8 @@
+ }
+ break;
+ default:
+- VIASETREG(control, temp);
++ temp = VIAGETREG(VIA_REG_ALPHA_CONTROL);
++ VIASETREG(VIA_REG_ALPHA_CONTROL, temp & 0xFFFFFFFE);
+ }
+ }
+
+diff -ruN xf86-video-openchrome-0.2.904/src/via_dri.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_dri.c
+--- xf86-video-openchrome-0.2.904/src/via_dri.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_dri.c 2010-03-07 01:09:00.000000000 +0100
+@@ -267,6 +267,11 @@
+ pVIADRI = pDRIInfo->devPrivate;
+ pVia->agpSize = 0;
+
++/* For AMD64 */
++#ifdef __x86_64__
++ return FALSE;
++#endif
++
+ if (drmAgpAcquire(pVia->drmFD) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_ERROR, "[drm] drmAgpAcquire failed %d\n",
+ errno);
+diff -ruN xf86-video-openchrome-0.2.904/src/via_driver.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.c
+--- xf86-video-openchrome-0.2.904/src/via_driver.c 2009-10-09 00:46:15.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.c 2010-03-07 01:09:00.000000000 +0100
+@@ -178,8 +178,8 @@
+ {VIA_P4M900, "P4M900/VN896/CN896"},
+ {VIA_CX700, "CX700/VX700"},
+ {VIA_P4M890, "P4M890"},
+- {VIA_VX800, "VX800"},
+- {VIA_VX855, "VX855"},
++ {VIA_VX800, "VX800/VX820"},
++ {VIA_VX855, "VX855/VX875"},
+ {-1, NULL }
+ };
+
+@@ -215,6 +215,7 @@
+ OPTION_EXA_SCRATCH_SIZE,
+ OPTION_SWCURSOR,
+ OPTION_SHADOW_FB,
++ OPTION_ROTATION_TYPE,
+ OPTION_ROTATE,
+ OPTION_VIDEORAM,
+ OPTION_ACTIVEDEVICE,
+@@ -253,6 +254,7 @@
+ {OPTION_EXA_SCRATCH_SIZE, "ExaScratchSize", OPTV_INTEGER, {0}, FALSE},
+ {OPTION_SWCURSOR, "SWCursor", OPTV_BOOLEAN, {0}, FALSE},
+ {OPTION_SHADOW_FB, "ShadowFB", OPTV_BOOLEAN, {0}, FALSE},
++ {OPTION_ROTATION_TYPE, "RotationType", OPTV_ANYSTR, {0}, FALSE},
+ {OPTION_ROTATE, "Rotate", OPTV_ANYSTR, {0}, FALSE},
+ {OPTION_VIDEORAM, "VideoRAM", OPTV_INTEGER, {0}, FALSE},
+ {OPTION_ACTIVEDEVICE, "ActiveDevice", OPTV_ANYSTR, {0}, FALSE},
+@@ -307,6 +309,7 @@
+ {
+ static Bool setupDone = FALSE;
+
++ /* Only be loaded once */
+ if (!setupDone) {
+ setupDone = TRUE;
+ xf86AddDriver(&VIA, module,
+@@ -339,6 +342,7 @@
+ if (pScrn->driverPrivate)
+ return TRUE;
+
++ /* allocate VIARec */
+ pScrn->driverPrivate = xnfcalloc(sizeof(VIARec), 1);
+ VIAPtr pVia = ((VIARec *) (pScrn->driverPrivate));
+
+@@ -455,7 +459,6 @@
+ {
+ ScrnInfoPtr scrn = NULL;
+ EntityInfoPtr entity;
+- DevUnion *private;
+
+ scrn = xf86ConfigPciEntity(scrn, 0, entity_num, VIAPciChipsets,
+ NULL, NULL, NULL, NULL, NULL);
+@@ -652,6 +655,12 @@
+ vbeInfoPtr pVbe;
+
+ if (xf86LoadSubModule(pScrn, "vbe")) {
++ /* FIXME This line should be replaced to:
++
++ pVbe = VBEExtendedInit(NULL, index, 0);
++
++ for XF86 version > 4.2.99
++ */
+ pVbe = VBEInit(NULL, index);
+ ConfiguredMonitor = vbeDoEDID(pVbe, NULL);
+ vbeFree(pVbe);
+@@ -664,7 +673,7 @@
+ VIAPtr pVia = VIAPTR(pScrn);
+ VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+
+- DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIASetupDefaultOptions\n"));
++ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIASetupDefaultOptions - Setting up default chipset options.\n"));
+
+ pVia->shadowFB = FALSE;
+ pVia->NoAccel = FALSE;
+@@ -688,6 +697,9 @@
+ #ifdef HAVE_DEBUG
+ pVia->PrintVGARegs = FALSE;
+ #endif
++
++ /* Disable vertical interpolation because the size of */
++ /* line buffer (limited to 800) is too small to do interpolation. */
+ pVia->swov.maxWInterp = 800;
+ pVia->swov.maxHInterp = 600;
+ pVia->useLegacyVBE = TRUE;
+@@ -713,11 +725,14 @@
+ pVia->UseLegacyModeSwitch = TRUE;
+ break;
+ case VIA_PM800:
++ /* Use new mode switch to resolve many resolution and display bugs (switch to console) */
++ /* FIXME The video playing (XV) is not working correctly after turn on new mode switch */
+ pVia->VideoEngine = VIDEO_ENGINE_CME;
+- pVia->UseLegacyModeSwitch = TRUE;
+ break;
+ case VIA_VM800:
+- pVia->UseLegacyModeSwitch = TRUE;
++ /* New mode switch resolve bug with gamma set #282 */
++ /* and with Xv after hibernate #240 */
++ /* FIXME Add panel support for this chipset */
+ break;
+ case VIA_K8M890:
+ pVia->VideoEngine = VIDEO_ENGINE_CME;
+@@ -1050,19 +1065,13 @@
+ xf86DrvMsg(pScrn->scrnIndex, from,
+ "Probed amount of VideoRAM = %d kB\n", pScrn->videoRam);
+
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Setting up default chipset options.\n");
+ if (!VIASetupDefaultOptions(pScrn)) {
+ VIAFreeRec(pScrn);
+ return FALSE;
+ }
+
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Reading config file...\n");
+ xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, VIAOptions);
+
+- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Starting to parse config file options...\n");
+-
+ if (xf86GetOptValInteger(VIAOptions, OPTION_VIDEORAM, &pScrn->videoRam))
+ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
+ "Setting amount of VideoRAM to %d kB\n", pScrn->videoRam);
+@@ -1100,6 +1109,31 @@
+ }
+
+ /* When rotating, switch shadow framebuffer on and acceleration off. */
++ if ((s = xf86GetOptValString(VIAOptions, OPTION_ROTATION_TYPE))) {
++ if (!xf86NameCmp(s, "SWRandR")) {
++ pVia->shadowFB = TRUE;
++ pVia->NoAccel = TRUE;
++ pVia->RandRRotation = TRUE;
++ pVia->rotate = RR_Rotate_0;
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Rotating screen "
++ "RandR enabled, acceleration disabled\n");
++ } else if (!xf86NameCmp(s, "HWRandR")) {
++ pVia->shadowFB = TRUE;
++ pVia->NoAccel = TRUE;
++ pVia->RandRRotation = TRUE;
++ pVia->rotate = RR_Rotate_0;
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Hardware accelerated "
++ "rotating screen is not implemented. Using SW RandR.\n");
++ } else {
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "\"%s\" is not a valid"
++ "value for Option \"RotationType\".\n", s);
++ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
++ "Valid options are \"SWRandR\" and \"HWRandR\".\n");
++ }
++ }
++
++
++ /* When rotating, switch shadow framebuffer on and acceleration off. */
+ if ((s = xf86GetOptValString(VIAOptions, OPTION_ROTATE))) {
+ if (!xf86NameCmp(s, "CW")) {
+ pVia->shadowFB = TRUE;
+@@ -1498,6 +1532,7 @@
+ }
+ }
+
++ /* Initialize the colormap */
+ Gamma zeros = { 0.0, 0.0, 0.0 };
+ if (!xf86SetGamma(pScrn, zeros)) {
+ VIAFreeRec(pScrn);
+@@ -1561,9 +1596,8 @@
+
+ if (pBIOSInfo->Panel->IsActive &&
+ ((pVia->Chipset == VIA_K8M800) ||
+- (pVia->Chipset == VIA_PM800) ||
+ (pVia->Chipset == VIA_VM800))) {
+- xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Panel on K8M800, PM800 and "
++ xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Panel on K8M800 and "
+ "VM800 is currently not supported.\n");
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Using VBE to set modes to work around this.\n");
+@@ -1621,7 +1655,7 @@
+ *
+ * CLE266A: primary AdjustFrame can use only 24 bits, so we are limited
+ * to 12x11 bits; 4080x2048 (~2:1), 3344x2508 (4:3), or 2896x2896 (1:1).
+- * Test CLE266Cx, KM400, KM400A, K8M800, PM800, CN400 please.
++ * TODO Test CLE266Cx, KM400, KM400A, K8M800, CN400 please.
+ *
+ * We should be able to limit the memory available for a mode to 32 MB,
+ * but xf86ValidateModes (or miScanLineWidth) fails to catch this
+@@ -1629,13 +1663,14 @@
+ */
+
+ /* Select valid modes from those available. */
+- i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, /* availModes */
+- pScrn->display->modes, /* modeNames */
+- clockRanges, /* list of clock ranges */
++ i = xf86ValidateModes(pScrn,
++ pScrn->monitor->Modes, /* List of modes available for the monitor */
++ pScrn->display->modes, /* List of mode names that the screen is requesting */
++ clockRanges, /* list of clock ranges */
+ NULL, /* list of line pitches */
+ 256, /* minimum line pitch */
+ 3344, /* maximum line pitch */
+- 32 * 8, /* pitch inc (bits) */
++ 16 * 8, /* pitch increment (in bits), we just want 16 bytes alignment */
+ 128, /* min height */
+ 2508, /* max height */
+ pScrn->display->virtualX, /* virtual width */
+@@ -1650,6 +1685,7 @@
+ return FALSE;
+ }
+
++ /* This function deletes modes in the modes field of the ScrnInfoRec that have been marked as invalid. */
+ xf86PruneDriverModes(pScrn);
+
+ if (i == 0 || pScrn->modes == NULL) {
+@@ -1662,9 +1698,17 @@
+ /* Set up screen parameters. */
+ pVia->Bpp = pScrn->bitsPerPixel >> 3;
+ pVia->Bpl = pScrn->displayWidth * pVia->Bpp;
++
++ /* This function fills in the Crtc fields for all the modes in the modes field of the ScrnInfoRec. */
+ xf86SetCrtcForModes(pScrn, INTERLACE_HALVE_V);
++
++ /* Set the current mode to the first in the list */
+ pScrn->currentMode = pScrn->modes;
++
++ /* Print the list of modes being used */
+ xf86PrintModes(pScrn);
++
++ /* Set display resolution */
+ xf86SetDpi(pScrn, 0, 0);
+
+ #ifdef USE_FB
+@@ -1935,7 +1979,9 @@
+ Regs->SR17 = hwp->readSeq(hwp, 0x17);
+ Regs->SR18 = hwp->readSeq(hwp, 0x18);
+ Regs->SR19 = hwp->readSeq(hwp, 0x19);
++ /* PCI Bus Control */
+ Regs->SR1A = hwp->readSeq(hwp, 0x1A);
++
+ Regs->SR1B = hwp->readSeq(hwp, 0x1B);
+ Regs->SR1C = hwp->readSeq(hwp, 0x1C);
+ Regs->SR1D = hwp->readSeq(hwp, 0x1D);
+@@ -1977,40 +2023,56 @@
+ Regs->SR4C = hwp->readSeq(hwp, 0x4C);
+ break;
+ }
+- DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+- "Non-Primary Adapter! saving VGA_SR_MODE only !!\n"));
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Crtc...\n"));
+
+ Regs->CR13 = hwp->readCrtc(hwp, 0x13);
+
+ Regs->CR32 = hwp->readCrtc(hwp, 0x32);
+ Regs->CR33 = hwp->readCrtc(hwp, 0x33);
+- Regs->CR34 = hwp->readCrtc(hwp, 0x34);
++
+ Regs->CR35 = hwp->readCrtc(hwp, 0x35);
+ Regs->CR36 = hwp->readCrtc(hwp, 0x36);
+
++
++
++ /* Starting Address */
++ /* Start Address High */
++ Regs->CR0C = hwp->readCrtc(hwp, 0x0C);
++ /* Start Address Low */
++ Regs->CR0D = hwp->readCrtc(hwp, 0x0D);
++ /* Starting Address Overflow Bits[28:24] */
+ Regs->CR48 = hwp->readCrtc(hwp, 0x48);
++ /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */
++ /* Starting Address Overflow Bits[23:16] */
++ Regs->CR34 = hwp->readCrtc(hwp, 0x34);
++
++
+ Regs->CR49 = hwp->readCrtc(hwp, 0x49);
+
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "TVSave...\n"));
+ if (pBIOSInfo->TVI2CDev)
+ ViaTVSave(pScrn);
+
+- /* Save LCD control registers. */
++ /* Save LCD control registers (from CR 0x50 to 0x93). */
+ for (i = 0; i < 68; i++)
+ Regs->CRTCRegs[i] = hwp->readCrtc(hwp, i + 0x50);
+
+ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
+-
+- Regs->CRA0 = hwp->readCrtc(hwp, 0xA0);
+- Regs->CRA1 = hwp->readCrtc(hwp, 0xA1);
+- Regs->CRA2 = hwp->readCrtc(hwp, 0xA2);
+-
++ /* LVDS Channel 2 Function Select 0 / DVI Function Select */
+ Regs->CR97 = hwp->readCrtc(hwp, 0x97);
++ /* LVDS Channel 1 Function Select 0 */
+ Regs->CR99 = hwp->readCrtc(hwp, 0x99);
++ /* Digital Video Port 1 Function Select 0 */
+ Regs->CR9B = hwp->readCrtc(hwp, 0x9B);
++ /* Power Now Control 4 */
+ Regs->CR9F = hwp->readCrtc(hwp, 0x9F);
+
++ /* Horizontal Scaling Initial Value */
++ Regs->CRA0 = hwp->readCrtc(hwp, 0xA0);
++ /* Vertical Scaling Initial Value */
++ Regs->CRA1 = hwp->readCrtc(hwp, 0xA1);
++ /* Scaling Enable Bit */
++ Regs->CRA2 = hwp->readCrtc(hwp, 0xA2);
+ }
+
+ /* Save TMDS status */
+@@ -2098,11 +2160,19 @@
+ hwp->writeSeq(hwp, 0x45, Regs->SR45);
+ hwp->writeSeq(hwp, 0x46, Regs->SR46);
+
++ /* Reset VCK PLL */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) | 0x02); /* Set SR40[1] to 1 */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) & 0xFD); /* Set SR40[1] to 0 */
++
+ /* ECK Clock Synthesizer: */
+ hwp->writeSeq(hwp, 0x47, Regs->SR47);
+ hwp->writeSeq(hwp, 0x48, Regs->SR48);
+ hwp->writeSeq(hwp, 0x49, Regs->SR49);
+
++ /* Reset ECK PLL */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) | 0x01); /* Set SR40[0] to 1 */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) & 0xFE); /* Set SR40[0] to 0 */
++
+ switch (pVia->Chipset) {
+ case VIA_CLE266:
+ case VIA_KM400:
+@@ -2112,6 +2182,10 @@
+ hwp->writeSeq(hwp, 0x4A, Regs->SR4A);
+ hwp->writeSeq(hwp, 0x4B, Regs->SR4B);
+ hwp->writeSeq(hwp, 0x4C, Regs->SR4C);
++
++ /* Reset LCK PLL */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) | 0x04); /* Set SR40[2] to 1 */
++ hwp->writeSeq(hwp, 0x40, hwp->readSeq(hwp, 0x40) & 0xFB); /* Set SR40[2] to 0 */
+ break;
+ }
+
+@@ -2127,14 +2201,23 @@
+ hwp->writeCrtc(hwp, 0x32, Regs->CR32);
+ /* HSYNCH Adjuster */
+ hwp->writeCrtc(hwp, 0x33, Regs->CR33);
+- /* Starting Address Overflow */
+- hwp->writeCrtc(hwp, 0x34, Regs->CR34);
+ /* Extended Overflow */
+ hwp->writeCrtc(hwp, 0x35, Regs->CR35);
+ /*Power Management 3 (Monitor Control) */
+ hwp->writeCrtc(hwp, 0x36, Regs->CR36);
+
++ /* Starting Address */
++ /* Start Address High */
++ hwp->writeCrtc(hwp, 0x0C, Regs->CR0C);
++ /* Start Address Low */
++ hwp->writeCrtc(hwp, 0x0D, Regs->CR0D);
++ /* Starting Address Overflow Bits[28:24] */
+ hwp->writeCrtc(hwp, 0x48, Regs->CR48);
++ /* CR34 are fire bits. Must be writed after CR0C CR0D CR48. */
++ /* Starting Address Overflow Bits[23:16] */
++ hwp->writeCrtc(hwp, 0x34, Regs->CR34);
++
++
+ hwp->writeCrtc(hwp, 0x49, Regs->CR49);
+
+ /* Restore LCD control registers. */
+@@ -2453,7 +2536,6 @@
+ VIALoadRgbLut(ScrnInfoPtr pScrn, int numColors, int *indices, LOCO *colors,
+ VisualPtr pVisual)
+ {
+- VIAPtr pVia = VIAPTR(pScrn);
+ vgaHWPtr hwp = VGAHWPTR(pScrn);
+
+ int i, j, index;
+@@ -2880,7 +2962,6 @@
+ VIAWriteMode(ScrnInfoPtr pScrn, DisplayModePtr mode)
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+- VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAWriteMode\n"));
+
+@@ -3033,9 +3114,7 @@
+ VIAAdjustFrame(int scrnIndex, int x, int y, int flags)
+ {
+ ScrnInfoPtr pScrn = xf86Screens[scrnIndex];
+- vgaHWPtr hwp = VGAHWPTR(pScrn);
+ VIAPtr pVia = VIAPTR(pScrn);
+- CARD32 Base;
+
+ DEBUG(xf86DrvMsg(scrnIndex, X_INFO, "VIAAdjustFrame %dx%d\n", x, y));
+
+@@ -3173,7 +3252,6 @@
+ static void
+ VIADPMS(ScrnInfoPtr pScrn, int mode, int flags)
+ {
+- vgaHWPtr hwp = VGAHWPTR(pScrn);
+ VIAPtr pVia = VIAPTR(pScrn);
+ VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo;
+
+diff -ruN xf86-video-openchrome-0.2.904/src/via_driver.h ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.h
+--- xf86-video-openchrome-0.2.904/src/via_driver.h 2009-10-09 01:09:22.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_driver.h 2010-03-07 01:09:00.000000000 +0100
+@@ -130,6 +130,7 @@
+ CARD8 SR4A, SR4B, SR4C;
+
+ /* extended CRTC registers */
++ CARD8 CR0C, CR0D;
+ CARD8 CR13, CR30, CR31, CR32, CR33, CR34, CR35, CR36;
+ CARD8 CR37, CR38, CR39, CR3A, CR40, CR41, CR42, CR43;
+ CARD8 CR44, CR45, CR46, CR47, CR48, CR49, CR4A;
+@@ -418,10 +419,10 @@
+ Bool PrintVGARegs;
+ Bool PrintTVRegs;
+ Bool I2CScan;
++#endif /* HAVE_DEBUG */
+
+ Bool UseLegacyModeSwitch ;
+ video_via_regs* VideoRegs ;
+-#endif /* HAVE_DEBUG */
+ } VIARec, *VIAPtr;
+
+ #define VIAPTR(p) ((VIAPtr)((p)->driverPrivate))
+diff -ruN xf86-video-openchrome-0.2.904/src/via_id.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_id.c
+--- xf86-video-openchrome-0.2.904/src/via_id.c 2009-10-07 23:30:39.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_id.c 2010-03-07 01:09:00.000000000 +0100
+@@ -152,6 +152,7 @@
+ {"MSI PM8PM", VIA_VM800, 0x1462, 0x7222, VIA_DEVICE_CRT},
+ {"Twinhead M6", VIA_VM800, 0x14FF, 0xA007, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"RoverBook Partner W500", VIA_VM800, 0x1509, 0x4330, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
++ {"FIC PTM800Pro LF", VIA_VM800, 0x1509, 0x601A, VIA_DEVICE_CRT},
+ {"Clevo/RoverBook Voyager V511L", VIA_VM800, 0x1558, 0x0662, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Clevo M5xxS", VIA_VM800, 0x1558, 0x5406, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Biostar P4M80-M4 / P4VMA-M", VIA_VM800, 0x1565, 0x1202, VIA_DEVICE_CRT},
+@@ -170,6 +171,7 @@
+ {"Asustek M2V-MX SE", VIA_K8M890, 0x1043, 0x8297, VIA_DEVICE_CRT},
+ {"Foxconn K8M890M2MA-RS2H", VIA_K8M890, 0x105B, 0x0C84, VIA_DEVICE_CRT},
+ {"Shuttle FX22V1", VIA_K8M890, 0x1297, 0x3080, VIA_DEVICE_CRT},
++ {"MSI K8M890M2-V", VIA_K8M890, 0x1462, 0x7139, VIA_DEVICE_CRT},
+ {"MSI K9VGM-V", VIA_K8M890, 0x1462, 0x7253, VIA_DEVICE_CRT},
+ {"Averatec 226x", VIA_K8M890, 0x14FF, 0xA002, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Fujitsu/Siemens Amilo La 1703", VIA_K8M890, 0x1734, 0x10D9, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+@@ -189,6 +191,7 @@
+ {"MSI P4M900M / P4M900M2-F/L", VIA_P4M900, 0x1462, 0x7255, VIA_DEVICE_CRT},
+ {"MSI P4M900M3-L", VIA_P4M900, 0x1462, 0x7387, VIA_DEVICE_CRT},
+ {"Twinhead H12V", VIA_P4M900, 0x14FF, 0xA00F, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
++ {"Twinhead K15V", VIA_P4M900, 0x14FF, 0xA012, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Everex NC1501/NC1503", VIA_P4M900, 0x1509, 0x1E30, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Clevo M660SE", VIA_P4M900, 0x1558, 0x0664, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Clevo M660SR", VIA_P4M900, 0x1558, 0x0669, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+@@ -224,6 +227,7 @@
+
+ /*** VX800 ***/
+ {"VIA Epia M700", VIA_VX800, 0x1106, 0x1122, VIA_DEVICE_CRT},
++ {"Guillemot-Hercules ECafe EC900B", VIA_VX800, 0x1106, 0x3349, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"VIA OpenBook", VIA_VX800, 0x1170, 0x0311, VIA_DEVICE_CRT | VIA_DEVICE_LCD}, /* VIA OpenBook eNote VBE8910 */
+ {"Samsung NC20", VIA_VX800, 0x144d, 0xc04e, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+ {"Quanta DreamBook Light IL1", VIA_VX800, 0x152d, 0x0771, VIA_DEVICE_CRT | VIA_DEVICE_LCD},
+@@ -231,6 +235,7 @@
+
+ /*** VX855 ***/
+ {"VIA VT8562C", VIA_VX855, 0x1106, 0x5122, VIA_DEVICE_CRT},
++ {"OLPC XO 1.5", VIA_VX855, 0x152D, 0x0833, VIA_DEVICE_LCD},
+
+ /* keep this */
+ {NULL, VIA_UNKNOWN, 0x0000, 0x0000, VIA_DEVICE_NONE}
+diff -ruN xf86-video-openchrome-0.2.904/src/via_mode.h ../openchrome/xf86-video-openchrome-0.2.904/src/via_mode.h
+--- xf86-video-openchrome-0.2.904/src/via_mode.h 2009-10-07 23:31:47.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_mode.h 2010-03-07 01:09:00.000000000 +0100
+@@ -54,50 +54,50 @@
+ CARD16 UniChrome;
+ union pllparams UniChromePro;
+ } ViaDotClocks[] = {
+- { 25200, 0x513C, /* 0xa79004 */ { 1, 4, 6, 169 } },
+- { 25312, 0xC763, /* 0xc49005 */ { 1, 4, 7, 198 } },
+- { 26591, 0x471A, /* 0xce9005 */ { 1, 4, 7, 208 } },
+- { 31500, 0xC558, /* 0xae9003 */ { 1, 4, 5, 176 } },
+- { 31704, 0x471F, /* 0xaf9002 */ { 1, 4, 4, 177 } },
+- { 32663, 0xC449, /* 0x479000 */ { 1, 4, 2, 73 } },
+- { 33750, 0x4721, /* 0x959002 */ { 1, 4, 4, 151 } },
+- { 35500, 0x5877, /* 0x759001 */ { 1, 4, 3, 119 } },
+- { 36000, 0x5879, /* 0x9f9002 */ { 1, 4, 4, 161 } },
+- { 39822, 0xC459, /* 0x578c02 */ { 1, 3, 4, 89 } },
+- { 40000, 0x515F, /* 0x848c04 */ { 1, 3, 6, 134 } },
+- { 41164, 0x4417, /* 0x2c8c00 */ { 1, 3, 2, 46 } },
+- { 46981, 0x5069, /* 0x678c02 */ { 1, 3, 4, 105 } },
+- { 49500, 0xC353, /* 0xa48c04 */ { 3, 3, 5, 138 } },
+- { 50000, 0xC354, /* 0x368c00 */ { 1, 3, 2, 56 } },
+- { 56300, 0x4F76, /* 0x3d8c00 */ { 1, 3, 2, 63 } },
+- { 57275, 0, /* 0x3e8c00 */ { 1, 3, 5, 157 } }, /* For XO 1.5 no need for a unichrome clock */
+- { 57284, 0x4E70, /* 0x3e8c00 */ { 1, 3, 2, 64 } },
+- { 64995, 0x0D3B, /* 0x6b8c01 */ { 1, 3, 3, 109 } },
+- { 65000, 0x0D3B, /* 0x6b8c01 */ { 1, 3, 3, 109 } }, /* Slightly unstable on PM800 */
+- { 65028, 0x866D, /* 0x6b8c01 */ { 1, 3, 3, 109 } },
+- { 74480, 0x156E, /* 0x288800 */ { 1, 2, 2, 42 } },
+- { 75000, 0x156E, /* 0x288800 */ { 1, 2, 2, 42 } },
+- { 78800, 0x442C, /* 0x2a8800 */ { 1, 2, 2, 44 } },
+- { 81135, 0x0622, /* 0x428801 */ { 1, 2, 3, 68 } },
+- { 81613, 0x4539, /* 0x708803 */ { 1, 2, 5, 114 } },
+- { 94500, 0x4542, /* 0x4d8801 */ { 1, 2, 3, 79 } },
+- { 108000, 0x0B53, /* 0x778802 */ { 1, 2, 4, 121 } },
+- { 108280, 0x4879, /* 0x778802 */ { 1, 2, 4, 121 } },
+- { 122000, 0x0D6F, /* 0x428800 */ { 1, 2, 2, 68 } },
+- { 122726, 0x073C, /* 0x878802 */ { 1, 2, 4, 137 } },
+- { 135000, 0x0742, /* 0x6f8801 */ { 1, 2, 3, 113 } },
+- { 148500, 0x0853, /* 0x518800 */ { 1, 2, 2, 83 } },
+- { 155800, 0x0857, /* 0x558402 */ { 1, 1, 4, 87 } },
+- { 157500, 0x422C, /* 0x2a8400 */ { 1, 1, 2, 44 } },
+- { 161793, 0x4571, /* 0x6f8403 */ { 1, 1, 5, 113 } },
+- { 162000, 0x0A71, /* 0x6f8403 */ { 1, 1, 5, 113 } },
+- { 175500, 0x4231, /* 0x2f8400 */ { 1, 1, 2, 49 } },
+- { 189000, 0x0542, /* 0x4d8401 */ { 1, 1, 3, 79 } },
+- { 202500, 0x0763, /* 0x6F8402 */ { 1, 1, 4, 113 } },
+- { 204800, 0x0764, /* 0x548401 */ { 1, 1, 3, 86 } },
+- { 218300, 0x043D, /* 0x3b8400 */ { 1, 1, 2, 61 } },
+- { 229500, 0x0660, /* 0x3e8400 */ { 1, 1, 2, 64 } }, /* Not tested on Pro } */
+- { 0, 0, { 0, 0, 0, 0 } }
++ { 25200, 0x513C, /* 0xa79004 */ { { 1, 4, 6, 169 } } },
++ { 25312, 0xC763, /* 0xc49005 */ { { 1, 4, 7, 198 } } },
++ { 26591, 0x471A, /* 0xce9005 */ { { 1, 4, 7, 208 } } },
++ { 31500, 0xC558, /* 0xae9003 */ { { 1, 4, 5, 176 } } },
++ { 31704, 0x471F, /* 0xaf9002 */ { { 1, 4, 4, 177 } } },
++ { 32663, 0xC449, /* 0x479000 */ { { 1, 4, 2, 73 } } },
++ { 33750, 0x4721, /* 0x959002 */ { { 1, 4, 4, 151 } } },
++ { 35500, 0x5877, /* 0x759001 */ { { 1, 4, 3, 119 } } },
++ { 36000, 0x5879, /* 0x9f9002 */ { { 1, 4, 4, 161 } } },
++ { 39822, 0xC459, /* 0x578c02 */ { { 1, 3, 4, 89 } } },
++ { 40000, 0x515F, /* 0x848c04 */ { { 1, 3, 6, 134 } } },
++ { 41164, 0x4417, /* 0x2c8c00 */ { { 1, 3, 2, 46 } } },
++ { 46981, 0x5069, /* 0x678c02 */ { { 1, 3, 4, 105 } } },
++ { 49500, 0xC353, /* 0xa48c04 */ { { 3, 3, 5, 138 } } },
++ { 50000, 0xC354, /* 0x368c00 */ { { 1, 3, 2, 56 } } },
++ { 56300, 0x4F76, /* 0x3d8c00 */ { { 1, 3, 2, 63 } } },
++ { 57275, 0, /* 0x3e8c00 */ { { 1, 3, 5, 157 } } }, /* For XO 1.5 no need for a unichrome clock */
++ { 57284, 0x4E70, /* 0x3e8c00 */ { { 1, 3, 2, 64 } } },
++ { 64995, 0x0D3B, /* 0x6b8c01 */ { { 1, 3, 3, 109 } } },
++ { 65000, 0x0D3B, /* 0x6b8c01 */ { { 1, 3, 3, 109 } } }, /* Slightly unstable on PM800 */
++ { 65028, 0x866D, /* 0x6b8c01 */ { { 1, 3, 3, 109 } } },
++ { 74480, 0x156E, /* 0x288800 */ { { 1, 2, 2, 42 } } },
++ { 75000, 0x156E, /* 0x288800 */ { { 1, 2, 2, 42 } } },
++ { 78800, 0x442C, /* 0x2a8800 */ { { 1, 2, 2, 44 } } },
++ { 81135, 0x0622, /* 0x428801 */ { { 1, 2, 3, 68 } } },
++ { 81613, 0x4539, /* 0x708803 */ { { 1, 2, 5, 114 } } },
++ { 94500, 0x4542, /* 0x4d8801 */ { { 1, 2, 3, 79 } } },
++ { 108000, 0x0B53, /* 0x778802 */ { { 1, 2, 4, 121 } } },
++ { 108280, 0x4879, /* 0x778802 */ { { 1, 2, 4, 121 } } },
++ { 122000, 0x0D6F, /* 0x428800 */ { { 1, 2, 2, 68 } } },
++ { 122726, 0x073C, /* 0x878802 */ { { 1, 2, 4, 137 } } },
++ { 135000, 0x0742, /* 0x6f8801 */ { { 1, 2, 3, 113 } } },
++ { 148500, 0x0853, /* 0x518800 */ { { 1, 2, 2, 83 } } },
++ { 155800, 0x0857, /* 0x558402 */ { { 1, 1, 4, 87 } } },
++ { 157500, 0x422C, /* 0x2a8400 */ { { 1, 1, 2, 44 } } },
++ { 161793, 0x4571, /* 0x6f8403 */ { { 1, 1, 5, 113 } } },
++ { 162000, 0x0A71, /* 0x6f8403 */ { { 1, 1, 5, 113 } } },
++ { 175500, 0x4231, /* 0x2f8400 */ { { 1, 1, 2, 49 } } },
++ { 189000, 0x0542, /* 0x4d8401 */ { { 1, 1, 3, 79 } } },
++ { 202500, 0x0763, /* 0x6F8402 */ { { 1, 1, 4, 113 } } },
++ { 204800, 0x0764, /* 0x548401 */ { { 1, 1, 3, 86 } } },
++ { 218300, 0x043D, /* 0x3b8400 */ { { 1, 1, 2, 61 } } },
++ { 229500, 0x0660, /* 0x3e8400 */ { { 1, 1, 2, 64 } } }, /* Not tested on Pro } */
++ { 0, 0, { { 0, 0, 0, 0 } } }
+ };
+
+ /*
+diff -ruN xf86-video-openchrome-0.2.904/src/via_panel.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_panel.c
+--- xf86-video-openchrome-0.2.904/src/via_panel.c 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_panel.c 2010-03-07 01:09:00.000000000 +0100
+@@ -171,12 +171,18 @@
+ resWidth, resHeight, panelWidth, panelHeight));
+
+ if (resWidth < panelWidth) {
+- /* FIXME: It is different for chipset < K8M800 */
+- horScalingFactor = ((resWidth - 1) * 4096) / (panelWidth - 1);
++ /* Load Horizontal Scaling Factor */
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ horScalingFactor = ((resWidth - 1) * 4096) / (panelWidth - 1);
++
++ /* Horizontal scaling enabled */
++ cra2 = 0xC0;
++ cr9f = horScalingFactor & 0x0003; /* HSCaleFactor[1:0] at CR9F[1:0] */
++ } else {
++ /* TODO: Need testing */
++ horScalingFactor = ((resWidth - 1) * 1024) / (panelWidth - 1);
++ }
+
+- /* Horizontal scaling enabled */
+- cra2 = 0xC0;
+- cr9f = horScalingFactor & 0x0003; /* HSCaleFactor[1:0] at CR9F[1:0] */
+ cr77 = (horScalingFactor & 0x03FC) >> 2; /* HSCaleFactor[9:2] at CR77[7:0] */
+ cr79 = (horScalingFactor & 0x0C00) >> 10; /* HSCaleFactor[11:10] at CR79[5:4] */
+ cr79 <<= 4;
+@@ -184,11 +190,18 @@
+ }
+
+ if (resHeight < panelHeight) {
+- verScalingFactor = ((resHeight - 1) * 2048) / (panelHeight - 1);
++ /* Load Vertical Scaling Factor */
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ verScalingFactor = ((resHeight - 1) * 2048) / (panelHeight - 1);
++
++ /* Vertical scaling enabled */
++ cra2 |= 0x08;
++ cr79 |= ((verScalingFactor & 0x0001) << 3); /* VSCaleFactor[0] at CR79[3] */
++ } else {
++ /* TODO: Need testing */
++ verScalingFactor = ((resHeight - 1) * 1024) / (panelHeight - 1);
++ }
+
+- /* Vertical scaling enabled */
+- cra2 |= 0x08;
+- cr79 |= ((verScalingFactor & 0x0001) << 3); /* VSCaleFactor[0] at CR79[3] */
+ cr78 |= (verScalingFactor & 0x01FE) >> 1; /* VSCaleFactor[8:1] at CR78[7:0] */
+ cr79 |= ((verScalingFactor & 0x0600) >> 9) << 6; /* VSCaleFactor[10:9] at CR79[7:6] */
+ scaling = TRUE;
+@@ -203,12 +216,18 @@
+ ViaCrtcMask(hwp, 0x77, cr77, 0xFF);
+ ViaCrtcMask(hwp, 0x78, cr78, 0xFF);
+ ViaCrtcMask(hwp, 0x79, cr79, 0xF8);
+- ViaCrtcMask(hwp, 0x9F, cr9f, 0x03);
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ ViaCrtcMask(hwp, 0x9F, cr9f, 0x03);
++ }
+ ViaCrtcMask(hwp, 0x79, 0x03, 0x03);
+- } else
++ } else {
++ /* Disable panel scale */
+ ViaCrtcMask(hwp, 0x79, 0x00, 0x01);
+-
+- ViaCrtcMask(hwp, 0xA2, cra2, 0xC8);
++ }
++
++ if (pVia->Chipset != VIA_CLE266 && pVia->Chipset != VIA_KM400) {
++ ViaCrtcMask(hwp, 0xA2, cra2, 0xC8);
++ }
+
+ /* Horizontal scaling selection: interpolation */
+ // ViaCrtcMask(hwp, 0x79, 0x02, 0x02);
+@@ -233,14 +252,14 @@
+
+ if (panelMode->Width && panelMode->Height) {
+
+- /* TODO: fix refresh rate and check malloc */
++ /* TODO: fix refresh rate */
+ DisplayModePtr p = malloc( sizeof(DisplayModeRec) ) ;
+- memset(p, 0, sizeof(DisplayModeRec));
++ if (p) {
++ memset(p, 0, sizeof(DisplayModeRec));
+
+- float refresh = 60.0f ;
++ float refresh = 60.0f ;
+
+- /* The following code is borrowed from xf86SetModeCrtc. */
+- if (p) {
++ /* The following code is borrowed from xf86SetModeCrtc. */
+ viaTimingCvt(p, panelMode->Width, panelMode->Height, refresh, FALSE, TRUE);
+ p->CrtcHDisplay = p->HDisplay;
+ p->CrtcHSyncStart = p->HSyncStart;
+@@ -256,9 +275,13 @@
+ p->CrtcVBlankEnd = max(p->CrtcVSyncEnd, p->CrtcVTotal);
+ p->CrtcHBlankStart = min(p->CrtcHSyncStart, p->CrtcHDisplay);
+ p->CrtcHBlankEnd = max(p->CrtcHSyncEnd, p->CrtcHTotal);
+-
++
++ pVia->pBIOSInfo->Panel->NativeDisplayMode = p;
++ } else {
++ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
++ "Out of memory. Size: %d bytes\n", sizeof(DisplayModeRec));
+ }
+- pVia->pBIOSInfo->Panel->NativeDisplayMode = p;
++
+ } else {
+ xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+ "Invalid panel dimension (%dx%d)\n", panelMode->Width,
+@@ -339,22 +362,22 @@
+ ViaPanelGetSizeFromEDID(ScrnInfoPtr pScrn, xf86MonPtr pMon,
+ int *width, int *height)
+ {
+- int i, max = 0, vsize;
++ int i, max_hsize = 0, vsize = 0;
+
+ DEBUG(xf86DrvMsg(pScrn->scrnIndex, X_INFO, "VIAGetPanelSizeFromEDID\n"));
+
+ /* !!! Why are we not checking VESA modes? */
+
+ /* checking standard timings */
+- for (i = 0; i < 8; i++)
++ for (i = 0; i < STD_TIMINGS; i++)
+ if ((pMon->timings2[i].hsize > 256)
+- && (pMon->timings2[i].hsize > max)) {
+- max = pMon->timings2[i].hsize;
++ && (pMon->timings2[i].hsize > max_hsize)) {
++ max_hsize = pMon->timings2[i].hsize;
+ vsize = pMon->timings2[i].vsize;
+ }
+
+- if (max != 0) {
+- *width = max;
++ if (max_hsize != 0) {
++ *width = max_hsize;
+ *height = vsize;
+ return TRUE;
+ }
+@@ -369,14 +392,14 @@
+ struct detailed_timings timing = pMon->det_mon[i].section.d_timings;
+
+ /* ignore v_active for now */
+- if ((timing.clock > 15000000) && (timing.h_active > max)) {
+- max = timing.h_active;
++ if ((timing.clock > 15000000) && (timing.h_active > max_hsize)) {
++ max_hsize = timing.h_active;
+ vsize = timing.v_active;
+ }
+ }
+
+- if (max != 0) {
+- *width = max;
++ if (max_hsize != 0) {
++ *width = max_hsize;
+ *height = vsize;
+ return TRUE;
+ }
+diff -ruN xf86-video-openchrome-0.2.904/src/via_video.c ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.c
+--- xf86-video-openchrome-0.2.904/src/via_video.c 2009-10-08 01:39:13.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.c 2010-03-07 01:09:00.000000000 +0100
+@@ -466,8 +466,8 @@
+
+ viaVidEng->video1_ctl = 0;
+ viaVidEng->video3_ctl = 0;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+ viaVidEng->color_key = 0x821;
+ viaVidEng->snd_color_key = 0x821;
+
+@@ -479,16 +479,16 @@
+ VIAPtr pVia = VIAPTR(pScrn);
+ vmmtr viaVidEng = (vmmtr) pVia->VidMapBase;
+
++ DBG_DD(ErrorF(" via_video.c : viaSaveVideo : \n"));
+ /* Save video registers */
+- /* TODO: Identify which registers should be saved and restored */
+ memcpy(pVia->VideoRegs, (void*)viaVidEng, sizeof(video_via_regs));
+
+ pVia->dwV1 = ((vmmtr) viaVidEng)->video1_ctl;
+ pVia->dwV3 = ((vmmtr) viaVidEng)->video3_ctl;
+ viaVidEng->video1_ctl = 0;
+ viaVidEng->video3_ctl = 0;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+ }
+
+ void
+@@ -496,16 +496,65 @@
+ {
+ VIAPtr pVia = VIAPTR(pScrn);
+ vmmtr viaVidEng = (vmmtr) pVia->VidMapBase;
++ video_via_regs *localVidEng = pVia->VideoRegs;
++
+
++ DBG_DD(ErrorF(" via_video.c : viaRestoreVideo : \n"));
+ /* Restore video registers */
+- /* TODO: Identify which registers should be saved and restored */
+- memcpy((void*)viaVidEng, pVia->VideoRegs, sizeof(video_via_regs));
+-
++ /* flush restored video engines' setting to VidMapBase */
++
++ viaVidEng->alphawin_hvstart = localVidEng->alphawin_hvstart;
++ viaVidEng->alphawin_size = localVidEng->alphawin_size;
++ viaVidEng->alphawin_ctl = localVidEng->alphawin_ctl;
++ viaVidEng->alphafb_stride = localVidEng->alphafb_stride;
++ viaVidEng->color_key = localVidEng->color_key;
++ viaVidEng->alphafb_addr = localVidEng->alphafb_addr;
++ viaVidEng->chroma_low = localVidEng->chroma_low;
++ viaVidEng->chroma_up = localVidEng->chroma_up;
++
++ if (pVia->ChipId != PCI_CHIP_VT3314)
++ {
++ /*VT3314 only has V3*/
++ viaVidEng->video1_ctl = localVidEng->video1_ctl;
++ viaVidEng->video1_fetch = localVidEng->video1_fetch;
++ viaVidEng->video1y_addr1 = localVidEng->video1y_addr1;
++ viaVidEng->video1_stride = localVidEng->video1_stride;
++ viaVidEng->video1_hvstart = localVidEng->video1_hvstart;
++ viaVidEng->video1_size = localVidEng->video1_size;
++ viaVidEng->video1y_addr2 = localVidEng->video1y_addr2;
++ viaVidEng->video1_zoom = localVidEng->video1_zoom;
++ viaVidEng->video1_mictl = localVidEng->video1_mictl;
++ viaVidEng->video1y_addr0 = localVidEng->video1y_addr0;
++ viaVidEng->video1_fifo = localVidEng->video1_fifo;
++ viaVidEng->video1y_addr3 = localVidEng->video1y_addr3;
++ viaVidEng->v1_source_w_h = localVidEng->v1_source_w_h ;
++ viaVidEng->video1_CSC1 = localVidEng->video1_CSC1;
++ viaVidEng->video1_CSC2 = localVidEng->video1_CSC2;
++ }
++ viaVidEng->snd_color_key = localVidEng->snd_color_key;
++ viaVidEng->v3alpha_prefifo = localVidEng->v3alpha_prefifo;
++ viaVidEng->v3alpha_fifo = localVidEng->v3alpha_fifo;
++ viaVidEng->video3_CSC2 = localVidEng->video3_CSC2;
++ viaVidEng->video3_CSC2 = localVidEng->video3_CSC2;
++ viaVidEng->v3_source_width = localVidEng->v3_source_width;
++ viaVidEng->video3_ctl = localVidEng->video3_ctl;
++ viaVidEng->video3_addr0 = localVidEng->video3_addr0;
++ viaVidEng->video3_addr1 = localVidEng->video3_addr1;
++ viaVidEng->video3_stride = localVidEng->video3_stride;
++ viaVidEng->video3_hvstart = localVidEng->video3_hvstart;
++ viaVidEng->video3_size = localVidEng->video3_size;
++ viaVidEng->v3alpha_fetch = localVidEng->v3alpha_fetch;
++ viaVidEng->video3_zoom = localVidEng->video3_zoom;
++ viaVidEng->video3_mictl = localVidEng->video3_mictl;
++ viaVidEng->video3_CSC1 = localVidEng->video3_CSC1;
++ viaVidEng->video3_CSC2 = localVidEng->video3_CSC2;
++ viaVidEng->compose = localVidEng->compose;
++
+ viaVidEng->video1_ctl = pVia->dwV1;
+ viaVidEng->video3_ctl = pVia->dwV3;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
+-
++ if (pVia->ChipId != PCI_CHIP_VT3314)
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+ }
+
+ void
+@@ -524,8 +573,8 @@
+
+ viaVidEng->video1_ctl = 0;
+ viaVidEng->video3_ctl = 0;
+- viaVidEng->compose = 0x80000000;
+- viaVidEng->compose = 0x40000000;
++ viaVidEng->compose = V1_COMMAND_FIRE;
++ viaVidEng->compose = V3_COMMAND_FIRE;
+
+ /*
+ * Free all adaptor info allocated in viaInitVideo.
+@@ -561,7 +610,7 @@
+ XF86VideoAdaptorPtr *adaptors, *newAdaptors;
+ int num_adaptors, num_new;
+
+- DBG_DD(ErrorF(" via_video.c : viaInitVideo : \n"));
++ DBG_DD(ErrorF(" via_video.c : viaInitVideo, Screen[%d]\n", pScrn->scrnIndex));
+
+ allAdaptors = NULL;
+ newAdaptors = NULL;
+@@ -832,7 +881,7 @@
+ DevUnion *pdevUnion;
+ int i, j, usedPorts, numPorts;
+
+- DBG_DD(ErrorF(" via_video.c : viaSetupImageVideo: \n"));
++ DBG_DD(ErrorF(" via_video.c : viaSetupAdaptors (viaSetupImageVideo): \n"));
+
+ xvBrightness = MAKE_ATOM("XV_BRIGHTNESS");
+ xvContrast = MAKE_ATOM("XV_CONTRAST");
+@@ -1042,6 +1091,8 @@
+ }
+
+ } else {
++ DBG_DD(ErrorF(" via_video.c : viaGetPortAttribute : is not supported the attribute\n"));
++
+ /*return BadMatch */;
+ }
+ return Success;
+@@ -1498,6 +1549,7 @@
+
+ DBG_DD(ErrorF(" via_video.c : viaQueryImageAttributes : FourCC=0x%x, ",
+ id));
++ DBG_DD(ErrorF(" via_video.c : Screen[%d], w=%d, h=%d\n", pScrn->scrnIndex, *w, *h));
+
+ if ((!w) || (!h))
+ return 0;
+@@ -1513,6 +1565,7 @@
+
+ switch (id) {
+ case FOURCC_YV12: /*Planar format : YV12 -4:2:0 */
++ case FOURCC_I420:
+ *h = (*h + 1) & ~1;
+ size = *w;
+ if (pVia->useDmaBlit)
+diff -ruN xf86-video-openchrome-0.2.904/src/via_video.h ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.h
+--- xf86-video-openchrome-0.2.904/src/via_video.h 2009-10-03 22:48:55.000000000 +0200
++++ ../openchrome/xf86-video-openchrome-0.2.904/src/via_video.h 2010-03-07 01:09:00.000000000 +0100
+@@ -44,6 +44,10 @@
+
+ #define VIDEO_BPP 2
+
++
++#define V1_COMMAND_FIRE 0x80000000 /* V1 commands fire */
++#define V3_COMMAND_FIRE 0x40000000 /* V3 commands fire */
++
+ typedef struct
+ {
+ CARD32 interruptflag; /* 200 */
+@@ -89,7 +93,7 @@
+ CARD32 video3_ctl; /* 2a0 */
+ CARD32 video3_addr0; /* 2a4 */
+ CARD32 video3_addr1; /* 2a8 */
+- CARD32 video3_stribe; /* 2ac */
++ CARD32 video3_stride; /* 2ac */
+ CARD32 video3_hvstart; /* 2b0 */
+ CARD32 video3_size; /* 2b4 */
+ CARD32 v3alpha_fetch; /* 2b8 */
diff --git a/abs/not_built/core/xf86-video-r128/LICENSE b/abs/not_built/core/xf86-video-r128/LICENSE
new file mode 100644
index 0000000..229a261
--- /dev/null
+++ b/abs/not_built/core/xf86-video-r128/LICENSE
@@ -0,0 +1,219 @@
+
+Copyright 1997 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org
+
+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 Marc Aurele La France not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. Marc Aurele La France makes no representations
+about the suitability of this software for any purpose. It is provided
+"as-is" without express or implied warranty.
+
+MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 2000 Gareth Hughes
+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
+GARETH HUGHES 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.
+
+(c) 2004 Adam Jackson. Standard MIT license applies.
+
+Copyright 1999-2000 Precision Insight, 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 NON-INFRINGEMENT. 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.
+
+Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
+Precision Insight, Inc., Cedar Park, Texas, and
+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, PRECISION INSIGHT, 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.
+
+Copyright 2003 Alex Deucher.
+
+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 ALEX DEUCHER, OR ANY OTHER
+CONTRIBUTORS 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.
+
+
+/**************************************************************************
+
+Copyright 1999, 2000 ATI Technologies Inc. and Precision Insight, 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
+on 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
+ATI, PRECISION INSIGHT 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 <martin@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
+ *
+ */
+
+/**************************************************************************
+
+Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
+ 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, 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
+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.
+
+**************************************************************************/
+
+/*
+ * Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario,
+ * Precision Insight, Inc., Cedar Park, Texas, and
+ * 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, PRECISION INSIGHT, 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 <martin@valinux.com>
+ * Rickard E. Faith <faith@valinux.com>
+ * Daryll Strauss <daryll@valinux.com>
+ * Gareth Hughes <gareth@valinux.com>
+ *
+ */
+
diff --git a/abs/not_built/core/xf86-video-r128/PKGBUILD b/abs/not_built/core/xf86-video-r128/PKGBUILD
new file mode 100644
index 0000000..a50e88d
--- /dev/null
+++ b/abs/not_built/core/xf86-video-r128/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88652 2010-08-24 12:20:07Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=xf86-video-r128
+pkgver=6.8.1
+pkgrel=4
+pkgdesc="X.org ati Rage128 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'r128-dri')
+makedepends=('xorg-server-devel' 'xf86driproto' 'libdrm' 'mesa')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('2b90854a62a4d45d652062f582dc8d13'
+ '97ad034bea2a153f4418a6bb0c77acf4')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -D -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-rendition/PKGBUILD b/abs/not_built/core/xf86-video-rendition/PKGBUILD
new file mode 100644
index 0000000..fe6f54a
--- /dev/null
+++ b/abs/not_built/core/xf86-video-rendition/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88658 2010-08-24 12:33:11Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-rendition
+pkgver=4.2.4
+pkgrel=2
+pkgdesc="X.org Rendition video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool' '!strip')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('16148c25183f7829c22bc9dfdb588c1a16bf4565')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+
+ strip --strip-unneeded "${pkgdir}/usr/lib/xorg/modules/drivers/rendition_drv.so"
+}
diff --git a/abs/not_built/core/xf86-video-s3/LICENSE b/abs/not_built/core/xf86-video-s3/LICENSE
new file mode 100644
index 0000000..a4c8d5d
--- /dev/null
+++ b/abs/not_built/core/xf86-video-s3/LICENSE
@@ -0,0 +1,25 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+ Copyright 2001 Ani Joshi <ajoshi@unixbox.com>
+
+ XFree86 4.x driver for S3 chipsets
+
+
+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 Ani Joshi not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission. Ani Joshi makes no representations
+about the suitability of this software for any purpose. It is provided
+"as-is" without express or implied warranty.
+
+ANI JOSHI DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ANI JOSHI BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xf86-video-s3/PKGBUILD b/abs/not_built/core/xf86-video-s3/PKGBUILD
new file mode 100644
index 0000000..74ce9a2
--- /dev/null
+++ b/abs/not_built/core/xf86-video-s3/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 88661 2010-08-24 12:47:55Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-s3
+pkgver=0.6.3
+pkgrel=3
+pkgdesc="X.org S3 video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('5eb06d88533fb327d067928faeb20860'
+ '6b2bea29522da7cbb81cadde3235024d')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/abs/not_built/core/xf86-video-s3virge/LICENSE b/abs/not_built/core/xf86-video-s3virge/LICENSE
new file mode 100644
index 0000000..23c2aea
--- /dev/null
+++ b/abs/not_built/core/xf86-video-s3virge/LICENSE
@@ -0,0 +1,25 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+Copyright (C) 1994-2000 The XFree86 Project, 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, 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 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, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+XFREE86 PROJECT 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.
+
+Except as contained in this notice, the name of the XFree86 Project shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the XFree86 Project.
diff --git a/abs/not_built/core/xf86-video-s3virge/PKGBUILD b/abs/not_built/core/xf86-video-s3virge/PKGBUILD
new file mode 100644
index 0000000..c500c2c
--- /dev/null
+++ b/abs/not_built/core/xf86-video-s3virge/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88664 2010-08-24 12:56:04Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+pkgname=xf86-video-s3virge
+pkgver=1.10.4
+pkgrel=3
+pkgdesc="X.org S3 Virge video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('pkgconfig' 'xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool)
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('6517bbbf808c700502d51acdc44662f8' 'c0a38dfcd6288eff39322f7c584b8d1e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-savage/LICENSE b/abs/not_built/core/xf86-video-savage/LICENSE
new file mode 100644
index 0000000..72598e8
--- /dev/null
+++ b/abs/not_built/core/xf86-video-savage/LICENSE
@@ -0,0 +1,97 @@
+Copyright (C) 1994-2000 The XFree86 Project, 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, 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 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, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+XFREE86 PROJECT 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.
+
+Except as contained in this notice, the name of the XFree86 Project shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from the XFree86 Project.
+
+
+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
+VIA, S3 GRAPHICS, 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.
+
+/*
+ * Copyright 2005 Felix Kuehling
+ * 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 FELIX KUEHLING 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.
+ */
+
+/**************************************************************************
+
+Copyright 2000, 2001 ATI Technologies Inc., Ontario, Canada, and
+ 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, 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
+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.
+
+**************************************************************************/
diff --git a/abs/not_built/core/xf86-video-savage/PKGBUILD b/abs/not_built/core/xf86-video-savage/PKGBUILD
new file mode 100644
index 0000000..0450131
--- /dev/null
+++ b/abs/not_built/core/xf86-video-savage/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 88667 2010-08-24 13:00:40Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-savage
+pkgver=2.3.1
+pkgrel=4
+pkgdesc="X.org savage video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'savage-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool !makeflags)
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('66c319f610e3699c3de0f3ef630abb32'
+ '0f485840d3cee0a8d9952c0cd34f64c3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -d -m755 "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-siliconmotion/PKGBUILD b/abs/not_built/core/xf86-video-siliconmotion/PKGBUILD
new file mode 100644
index 0000000..63900c6
--- /dev/null
+++ b/abs/not_built/core/xf86-video-siliconmotion/PKGBUILD
@@ -0,0 +1,28 @@
+# $Id: PKGBUILD 88670 2010-08-24 13:02:33Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: Alexander Baldeck <alexander@archlinux.org>
+
+pkgname=xf86-video-siliconmotion
+pkgver=1.7.4
+pkgrel=2
+pkgdesc="X.org siliconmotion video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('3c0fd42fbd301e66104e4b9190796d102a034787')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-sis/PKGBUILD b/abs/not_built/core/xf86-video-sis/PKGBUILD
new file mode 100644
index 0000000..ef457ec
--- /dev/null
+++ b/abs/not_built/core/xf86-video-sis/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88682 2010-08-24 13:15:49Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-sis
+pkgver=0.10.3
+pkgrel=2
+pkgdesc="X.org SiS video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'sis-dri')
+makedepends=('xorg-server-devel' 'xf86dgaproto' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('158673747e240b0c33499685a32d46bdaead7cd5')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-sisusb/PKGBUILD b/abs/not_built/core/xf86-video-sisusb/PKGBUILD
new file mode 100644
index 0000000..3146df0
--- /dev/null
+++ b/abs/not_built/core/xf86-video-sisusb/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88685 2010-08-24 13:17:12Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-sisusb
+pkgver=0.9.4
+pkgrel=2
+pkgdesc="X.org SiS USB video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('600fd49dffe00121f9042555fea55948653d1a7e')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-tdfx/LICENSE b/abs/not_built/core/xf86-video-tdfx/LICENSE
new file mode 100644
index 0000000..08b1add
--- /dev/null
+++ b/abs/not_built/core/xf86-video-tdfx/LICENSE
@@ -0,0 +1,160 @@
+Copyright 1998-1999 Precision Insight, 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, 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 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.
+
+
+/*
+ * Copyright 2000 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
+ * 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
+ * VA LINUX SYSTEMS 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.
+ */
+
+
+/*
+ * GLX Hardware Device Driver for Intel i810
+ * Copyright (C) 1999 Keith Whitwell
+ *
+ * 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 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
+ * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS 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.
+ *
+ *
+ */
+
+
+/*
+ * GLX Hardware Device Driver for Intel tdfx
+ * Copyright (C) 1999 Keith Whitwell
+ *
+ * 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 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
+ * KEITH WHITWELL, OR ANY OTHER CONTRIBUTORS 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.
+ *
+ *
+ */
+
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 4.1
+ *
+ * Copyright (C) 1999-2002 Brian Paul 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 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
+ * BRIAN PAUL 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:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ * Daniel Borca <dborca@users.sourceforge.net>
+ */
+
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 5.1
+ *
+ * Copyright (C) 1999-2003 Brian Paul 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 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
+ * BRIAN PAUL 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:
+ * Keith Whitwell
+ * Daniel Borca
+ */
diff --git a/abs/not_built/core/xf86-video-tdfx/PKGBUILD b/abs/not_built/core/xf86-video-tdfx/PKGBUILD
new file mode 100644
index 0000000..88a96fc
--- /dev/null
+++ b/abs/not_built/core/xf86-video-tdfx/PKGBUILD
@@ -0,0 +1,29 @@
+# $Id: PKGBUILD 88679 2010-08-24 13:12:20Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-tdfx
+pkgver=1.4.3
+pkgrel=4
+pkgdesc="X.org tdfx video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc' 'tdfx-dri')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+conflicts=('xorg-server<1.9.0')
+options=(!libtool)
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2
+ LICENSE)
+md5sums=('8161bbf2b100c21b609163f0010766b3'
+ '978e9486ffd4e4164c12dc68c84186e1')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-trident/PKGBUILD b/abs/not_built/core/xf86-video-trident/PKGBUILD
new file mode 100644
index 0000000..80aa2e6
--- /dev/null
+++ b/abs/not_built/core/xf86-video-trident/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88676 2010-08-24 13:07:06Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-trident
+pkgver=1.3.4
+pkgrel=2
+pkgdesc="X.org Trident video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=(!libtool)
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('7c40f5c02bddf399862782b708941e79302318af')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/abs/not_built/core/xf86-video-tseng/PKGBUILD b/abs/not_built/core/xf86-video-tseng/PKGBUILD
new file mode 100644
index 0000000..4fbcf23
--- /dev/null
+++ b/abs/not_built/core/xf86-video-tseng/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88673 2010-08-24 13:04:05Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-tseng
+pkgver=1.2.4
+pkgrel=2
+pkgdesc="X.org tseng video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('1b45f55657b2c92f30abb0769cae57fca98d93b7')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-unichrome/LICENSE b/abs/not_built/core/xf86-video-unichrome/LICENSE
new file mode 100644
index 0000000..f400766
--- /dev/null
+++ b/abs/not_built/core/xf86-video-unichrome/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2004-2007 Luc Verhaegen. All Rights Reserved.
+Copyright (c) 2004-2005 The Unichrome Project. All Rights Reserved.
+Copyright (c) 1998-2003 VIA Technologies, Inc. All Rights Reserved.
+Copyright (c) 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/not_built/core/xf86-video-unichrome/PKGBUILD b/abs/not_built/core/xf86-video-unichrome/PKGBUILD
new file mode 100644
index 0000000..b2aa60e
--- /dev/null
+++ b/abs/not_built/core/xf86-video-unichrome/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 88691 2010-08-24 13:31:22Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+pkgname=xf86-video-unichrome
+pkgver=0.2.7
+pkgrel=4
+_gitversion=cd12cce88ff886031c23c743569fba97eccace4e
+pkgdesc="Unichrome video drivers for X.Org"
+arch=(i686 x86_64)
+url="http://unichrome.sf.net/"
+license=('custom')
+depends=('glibc' 'unichrome-dri')
+makedepends=('xorg-server-devel' 'libx11' 'libdrm' 'xf86driproto' 'mesa' 'libxvmc')
+options=('!libtool')
+conflicts=('xf86-video-via' 'openchrome' 'xf86-video-openchrome' 'xorg-server<1.9.0')
+source=(http://cgit.freedesktop.org/~libv/${pkgname}/snapshot/${pkgname}-${_gitversion}.tar.bz2
+ drm-include.patch
+ LICENSE)
+md5sums=('c64332e6c386ed9a580116e131f288f4'
+ '4a9bf2e3ef338c170a2f58988ebb97dc'
+ '6ea7d64c87c5c32201a1e38e3336e44a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${_gitversion}"
+ patch -Np0 -i "${srcdir}/drm-include.patch"
+ ./autogen.sh --prefix=/usr --enable-dri
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-unichrome/drm-include.patch b/abs/not_built/core/xf86-video-unichrome/drm-include.patch
new file mode 100644
index 0000000..edfe9a8
--- /dev/null
+++ b/abs/not_built/core/xf86-video-unichrome/drm-include.patch
@@ -0,0 +1,11 @@
+--- src/via_memory.h.orig 2010-05-09 16:17:00.143352805 +0200
++++ src/via_memory.h 2010-05-09 16:17:14.433351301 +0200
+@@ -30,7 +30,7 @@
+
+ /* don't include local via_drm.h when using modular */
+ #ifdef HAVE_CONFIG_H
+-#include "drm/via_drm.h"
++#include <via_drm.h>
+ #else
+ #include "via_drm.h"
+ #endif
diff --git a/abs/not_built/core/xf86-video-v4l/LICENSE b/abs/not_built/core/xf86-video-v4l/LICENSE
new file mode 100644
index 0000000..535595b
--- /dev/null
+++ b/abs/not_built/core/xf86-video-v4l/LICENSE
@@ -0,0 +1,826 @@
+This package was downloaded from
+http://xorg.freedesktop.org/releases/individual/driver/
+
+ Licenses
+
+ The X.Org Foundation
+
+ March 2004
+
+1. Introduction
+
+The X.org Foundation X Window System distribution is a compilation of code
+and documentation from many sources. This document is intended primarily as
+a guide to the licenses used in the distribution: you must check each file
+and/or package for precise redistribution terms. None-the-less, this summary
+may be useful to many users. No software incorporating the XFree86 1.1
+license has been incorporated.
+
+This document is based on the compilation from XFree86.
+
+2. XFree86 License
+
+XFree86 code without an explicit copyright is covered by the following copy-
+right/license:
+
+Copyright (C) 1994-2003 The XFree86 Project, 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, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice 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, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the XFree86 Project 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 XFree86
+Project.
+
+3. Other Licenses
+
+Portions of code are covered by the following licenses/copyrights. See indi-
+vidual files for the copyright dates.
+
+3.1 X/MIT Copyrights
+
+3.1.1 X Consortium
+
+Copyright (C) <date> 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 fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice 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, FIT-
+NESS 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 CONNECTION
+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 dealings
+in this Software without prior written authorization from the X Consortium.
+
+X Window System is a trademark of X Consortium, Inc.
+
+3.1.2 The Open Group
+
+Copyright <date> The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+3.2 Berkeley-based copyrights:
+
+o
+
+3.2.1 General
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, 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. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, 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 OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.2 UCB/LBL
+
+Copyright (c) 1993 The Regents of the University of California. All rights
+reserved.
+
+This software was developed by the Computer Systems Engineering group at
+Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and contributed to
+Berkeley.
+
+All advertising materials mentioning features or use of this software must
+display the following acknowledgement: This product includes software devel-
+oped by the University of California, Lawrence Berkeley Laboratory.
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, 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 soft-
+ ware developed by the University of California, Berkeley and its con-
+ tributors.
+
+ 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 DIS-
+CLAIMED. 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.
+
+3.2.3 The NetBSD Foundation, Inc.
+
+Copyright (c) 2003 The NetBSD Foundation, Inc. All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation by
+Ben Collver <collver1@attbi.com>
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, 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 soft-
+ ware developed by the NetBSD Foundation, Inc. and its contributors.
+
+ 4. Neither the name of The NetBSD Foundation nor the names of its con-
+ tributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. 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 FOUNDATION OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSE-
+QUENTIAL 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 DAM-
+AGE.
+
+3.2.4 Theodore Ts'o.
+
+Copyright Theodore Ts'o, 1994, 1995, 1996, 1997, 1998, 1999. All rights
+reserved.
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ and the entire permission notice in its entirety, including the dis-
+ claimer of warranties.
+
+ 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. he name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE, ALL OF WHICH ARE HEREBY DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, 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 OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF NOT
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.5 Theo de Raadt and Damien Miller
+
+Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. Copyright (c)
+2001-2002 Damien Miller. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, 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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, 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 OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.2.6 Todd C. Miller
+
+Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE FOR ANY
+SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CON-
+TRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
+WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+3.2.7 Thomas Winischhofer
+
+Copyright (C) 2001-2004 Thomas Winischhofer
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, 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. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESSED 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 AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, 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 OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+3.3 NVIDIA Corp
+
+Copyright (c) 1996 NVIDIA, Corp. All rights reserved.
+
+NOTICE TO USER: The source code is copyrighted under U.S. and international
+laws. NVIDIA, Corp. of Sunnyvale, California owns the copyright and as
+design patents pending on the design and interface of the NV chips. Users
+and possessors of this source code are hereby granted a nonexclusive, roy-
+alty-free copyright and design patent license to use this code in individual
+and commercial software.
+
+Any use of this source code must include, in the user documentation and
+internal comments to the code, notices to the end user as follows:
+
+Copyright (c) 1996 NVIDIA, Corp. NVIDIA design patents pending in the U.S.
+and foreign countries.
+
+NVIDIA, CORP. MAKES NO REPRESENTATION ABOUT THE SUITABILITY OF THIS SOURCE
+CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WAR-
+RANTY OF ANY KIND. NVIDIA, CORP. DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOURCE CODE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL NVIDIA, CORP. BE LIABLE
+FOR ANY SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAM-
+AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE.
+
+3.4 GLX Public License
+
+GLX PUBLIC LICENSE (Version 1.0 (2/11/99)) ("License")
+
+Subject to any third party claims, Silicon Graphics, Inc. ("SGI") hereby
+grants permission to Recipient (defined below), under Recipient's copyrights
+in the Original Software (defined below), to use, copy, modify, merge, pub-
+lish, distribute, sublicense and/or sell copies of Subject Software (defined
+below), and to permit persons to whom the Subject Software is furnished in
+accordance with this License to do the same, subject to all of the following
+terms and conditions, which Recipient accepts by engaging in any such use,
+copying, modifying, merging, publishing, distributing, sublicensing or sell-
+ing:
+
+1. Definitions.
+
+ (a) "Original Software" means source code of computer software code
+ which is described in Exhibit A as Original Software.
+
+ (b) "Modifications" means any addition to or deletion from the sub-
+ stance or structure of either the Original Software or any previous
+ Modifications. When Subject Software is released as a series of
+ files, a Modification means (i) any addition to or deletion from
+ the contents of a file containing Original Software or previous
+ Modifications and (ii) any new file that contains any part of the
+ Original Code or previous Modifications.
+
+ (c) "Subject Software" means the Original Software or Modifications
+ or the combination of the Original Software and Modifications, or
+ portions of any of the foregoing.
+
+ (d) "Recipient" means an individual or a legal entity exercising
+ rights under, and complying with all of the terms of, this License.
+ For legal entities, "Recipient" includes any entity which controls,
+ is controlled by, or is under common control with Recipient. For
+ purposes of this definition, "control" of an entity means (a) the
+ power, direct or indirect, to direct or manage such entity, or (b)
+ ownership of fifty percent (50%) or more of the outstanding shares
+ or beneficial ownership of such entity.
+
+2. Redistribution of Source Code Subject to These Terms. Redistributions of
+Subject Software in source code form must retain the notice set forth in
+Exhibit A, below, in every file. A copy of this License must be included in
+any documentation for such Subject Software where the recipients' rights
+relating to Subject Software are described. Recipient may distribute the
+source code version of Subject Software under a license of Recipient's
+choice, which may contain terms different from this License, provided that
+(i) Recipient is in compliance with the terms of this License, and (ii) the
+license terms include this Section 2 and Sections 3, 4, 7, 8, 10, 12 and 13
+of this License, which terms may not be modified or superseded by any other
+terms of such license. If Recipient distributes the source code version under
+a different license Recipient must make it absolutely clear that any terms
+which differ from this License are offered by Recipient alone, not by SGI.
+Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as
+a result of any such terms Recipient offers.
+
+3. Redistribution in Executable Form. The notice set forth in Exhibit A must
+be conspicuously included in any notice in an executable version of Subject
+Software, related documentation or collateral in which Recipient describes
+the user's rights relating to the Subject Software. Recipient may distribute
+the executable version of Subject Software under a license of Recipient's
+choice, which may contain terms different from this License, provided that
+(i) Recipient is in compliance with the terms of this License, and (ii) the
+license terms include this Section 3 and Sections 4, 7, 8, 10, 12 and 13 of
+this License, which terms may not be modified or superseded by any other
+terms of such license. If Recipient distributes the executable version under
+a different license Recipient must make it absolutely clear that any terms
+which differ from this License are offered by Recipient alone, not by SGI.
+Recipient hereby agrees to indemnify SGI for any liability incurred by SGI as
+a result of any such terms Recipient offers.
+
+4. Termination. This License and the rights granted hereunder will terminate
+automatically if Recipient fails to comply with terms herein and fails to
+cure such breach within 30 days of the breach. Any sublicense to the Subject
+Software which is properly granted shall survive any termination of this
+License absent termination by the terms of such sublicense. Provisions which,
+by their nature, must remain in effect beyond the termination of this License
+shall survive.
+
+5. No Trademark Rights. This License does not grant any rights to use any
+trade name, trademark or service mark whatsoever. No trade name, trademark or
+service mark of SGI may be used to endorse or promote products derived from
+the Subject Software without prior written permission of SGI.
+
+6. No Other Rights. This License does not grant any rights with respect to
+the OpenGL API or to any software or hardware implementation thereof or to
+any other software whatsoever, nor shall any other rights or licenses not
+expressly granted hereunder arise by implication, estoppel or otherwise with
+respect to the Subject Software. Title to and ownership of the Original Soft-
+ware at all times remains with SGI. All rights in the Original Software not
+expressly granted under this License are reserved.
+
+7. Compliance with Laws; Non-Infringement. Recipient shall comply with all
+applicable laws and regulations in connection with use and distribution of
+the Subject Software, including but not limited to, all export and import
+control laws and regulations of the U.S. government and other countries.
+Recipient may not distribute Subject Software that (i) in any way infringes
+(directly or contributorily) the rights (including patent, copyright, trade
+secret, trademark or other intellectual property rights of any kind) of any
+other person or entity or (ii) breaches any representation or warranty,
+express, implied or statutory, which under any applicable law it might be
+deemed to have been distributed.
+
+8. Claims of Infringement. If Recipient at any time has knowledge of any one
+or more third party claims that reproduction, modification, use, distribu-
+tion, import or sale of Subject Software (including particular functionality
+or code incorporated in Subject Software) infringes the third party's intel-
+lectual property rights, Recipient must place in a well-identified web page
+bearing the title "LEGAL" a description of each such claim and a description
+of the party making each such claim in sufficient detail that a user of the
+Subject Software will know whom to contact regarding the claim. Also, upon
+gaining such knowledge of any such claim, Recipient must conspicuously
+include the URL for such web page in the Exhibit A notice required under Sec-
+tions 2 and 3, above, and in the text of any related documentation, license
+agreement or collateral in which Recipient describes end user's rights relat-
+ing to the Subject Software. If Recipient obtains such knowledge after it
+makes Subject Software available to any other person or entity, Recipient
+shall take other steps (such as notifying appropriate mailing lists or news-
+groups) reasonably calculated to inform those who received the Subject Soft-
+ware that new knowledge has been obtained.
+
+9. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER-
+CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON- INFRINGING. SGI ASSUMES NO
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
+PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER-
+VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
+HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+10. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THE-
+ORY, WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIA-
+BILITY), CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR BE LIABLE FOR
+ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK
+STOPPAGE, LOSS OF DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF
+THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY
+TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SGI's NEGLIGENCE TO
+THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO
+NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES,
+SO THAT EXCLUSION AND LIMITATION MAY NOT APPLY TO RECIPIENT.
+
+11. Indemnity. Recipient shall be solely responsible for damages arising,
+directly or indirectly, out of its utilization of rights under this License.
+Recipient will defend, indemnify and hold harmless Silicon Graphics, Inc.
+from and against any loss, liability, damages, costs or expenses (including
+the payment of reasonable attorneys fees) arising out of Recipient's use,
+modification, reproduction and distribution of the Subject Software or out of
+any representation or warranty made by Recipient.
+
+12. U.S. Government End Users. The Subject Software is a "commercial item"
+consisting of "commercial computer software" as such terms are defined in
+title 48 of the Code of Federal Regulations and all U.S. Government End
+Users acquire only the rights set forth in this License and are subject to
+the terms of this License.
+
+13. Miscellaneous. This License represents the complete agreement concerning
+subject matter hereof. If any provision of this License is held to be unen-
+forceable, such provision shall be reformed so as to achieve as nearly as
+possible the same economic effect as the original provision and the remainder
+of this License will remain in effect. This License shall be governed by and
+construed in accordance with the laws of the United States and the State of
+California as applied to agreements entered into and to be performed entirely
+within California between California residents. Any litigation relating to
+this License shall be subject to the exclusive jurisdiction of the Federal
+Courts of the Northern District of California (or, absent subject matter
+jurisdiction in such courts, the courts of the State of California), with
+venue lying exclusively in Santa Clara County, California, with the losing
+party responsible for costs, including without limitation, court costs and
+reasonable attorneys fees and expenses. The application of the United Nations
+Convention on Contracts for the International Sale of Goods is expressly
+excluded. Any law or regulation which provides that the language of a con-
+tract shall be construed against the drafter shall not apply to this License.
+
+Exhibit A
+
+The contents of this file are subject to Sections 2, 3, 4, 7, 8, 10, 12 and
+13 of the GLX Public License Version 1.0 (the "License"). You may not use
+this file except in compliance with those sections of the License. You may
+obtain a copy of the License at Silicon Graphics, Inc., attn: Legal Services,
+2011 N. Shoreline Blvd., Mountain View, CA 94043 or at
+http://www.sgi.com/software/opensource/glx/license.html.
+
+Software distributed under the License is distributed on an "AS IS" basis.
+ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
+WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON-
+INFRINGEMENT. See the License for the specific language governing rights and
+limitations under the License.
+
+The Original Software is GLX version 1.2 source code, released February,
+1999. The developer of the Original Software is Silicon Graphics, Inc. Those
+portions of the Subject Software created by Silicon Graphics, Inc. are Copy-
+right (c) 1991-9 Silicon Graphics, Inc. All Rights Reserved.
+
+3.5 CID Font Code Public License
+
+CID FONT CODE PUBLIC LICENSE (Version 1.0 (3/31/99))("License")
+
+Subject to any applicable third party claims, Silicon Graphics, Inc. ("SGI")
+hereby grants permission to Recipient (defined below), under SGI's copyrights
+in the Original Software (defined below), to use, copy, modify, merge, pub-
+lish, distribute, sublicense and/or sell copies of Subject Software (defined
+below) in both source code and executable form, and to permit persons to whom
+the Subject Software is furnished in accordance with this License to do the
+same, subject to all of the following terms and conditions, which Recipient
+accepts by engaging in any such use, copying, modifying, merging, publica-
+tion, distributing, sublicensing or selling:
+
+1. Definitions.
+
+ a. "Original Software" means source code of computer software code
+ that is described in Exhibit A as Original Software.
+
+ b. "Modifications" means any addition to or deletion from the sub-
+ stance or structure of either the Original Software or any previous
+ Modifications. When Subject Software is released as a series of
+ files, a Modification means (i) any addition to or deletion from
+ the contents of a file containing Original Software or previous
+ Modifications and (ii) any new file that contains any part of the
+ Original Code or previous Modifications.
+
+ c. "Subject Software" means the Original Software or Modifications
+ or the combination of the Original Software and Modifications, or
+ portions of any of the foregoing.
+
+ d. "Recipient" means an individual or a legal entity exercising
+ rights under the terms of this License. For legal entities, "Recip-
+ ient" includes any entity that controls, is controlled by, or is
+ under common control with Recipient. For purposes of this defini-
+ tion, "control" of an entity means (i) the power, direct or indi-
+ rect, to direct or manage such entity, or (ii) ownership of fifty
+ percent (50%) or more of the outstanding shares or beneficial own-
+ ership of such entity.
+
+ e. "Required Notice" means the notice set forth in Exhibit A to
+ this License.
+
+ f. "Accompanying Technology" means any software or other technology
+ that is not a Modification and that is distributed or made publicly
+ available by Recipient with the Subject Software. Separate soft-
+ ware files that do not contain any Original Software or any previ-
+ ous Modification shall not be deemed a Modification, even if such
+ software files are aggregated as part of a product, or in any
+ medium of storage, with any file that does contain Original Soft-
+ ware or any previous Modification.
+
+2. License Terms. All distribution of the Subject Software must be made sub-
+ject to the terms of this License. A copy of this License and the Required
+Notice must be included in any documentation for Subject Software where
+Recipient's rights relating to Subject Software and/or any Accompanying Tech-
+nology are described. Distributions of Subject Software in source code form
+must also include the Required Notice in every file distributed. In addition,
+a ReadMe file entitled "Important Legal Notice" must be distributed with each
+distribution of one or more files that incorporate Subject Software. That
+file must be included with distributions made in both source code and exe-
+cutable form. A copy of the License and the Required Notice must be included
+in that file. Recipient may distribute Accompanying Technology under a
+license of Recipient's choice, which may contain terms different from this
+License, provided that (i) Recipient is in compliance with the terms of this
+License, (ii) such other license terms do not modify or supersede the terms
+of this License as applicable to the Subject Software, (iii) Recipient hereby
+indemnifies SGI for any liability incurred by SGI as a result of the distri-
+bution of Accompanying Technology or the use of other license terms.
+
+3. Termination. This License and the rights granted hereunder will terminate
+automatically if Recipient fails to comply with terms herein and fails to
+cure such breach within 30 days of the breach. Any sublicense to the Subject
+Software that is properly granted shall survive any termination of this
+License absent termination by the terms of such sublicense. Provisions which,
+by their nature, must remain in effect beyond the termination of this License
+shall survive.
+
+4. Trademark Rights. This License does not grant any rights to use any trade
+name, trademark or service mark whatsoever. No trade name, trademark or ser-
+vice mark of SGI may be used to endorse or promote products derived from or
+incorporating any Subject Software without prior written permission of SGI.
+
+5. No Other Rights. No rights or licenses not expressly granted hereunder
+shall arise by implication, estoppel or otherwise. Title to and ownership of
+the Original Software at all times remains with SGI. All rights in the Origi-
+nal Software not expressly granted under this License are reserved.
+
+6. Compliance with Laws; Non-Infringement. Recipient shall comply with all
+applicable laws and regulations in connection with use and distribution of
+the Subject Software, including but not limited to, all export and import
+control laws and regulations of the U.S. government and other countries.
+Recipient may not distribute Subject Software that (i) in any way infringes
+(directly or contributorily) the rights (including patent, copyright, trade
+secret, trademark or other intellectual property rights of any kind) of any
+other person or entity, or (ii) breaches any representation or warranty,
+express, implied or statutory, which under any applicable law it might be
+deemed to have been distributed.
+
+7. Claims of Infringement. If Recipient at any time has knowledge of any one
+or more third party claims that reproduction, modification, use, distribu-
+tion, import or sale of Subject Software (including particular functionality
+or code incorporated in Subject Software) infringes the third party's intel-
+lectual property rights, Recipient must place in a well-identified web page
+bearing the title "LEGAL" a description of each such claim and a description
+of the party making each such claim in sufficient detail that a user of the
+Subject Software will know whom to contact regarding the claim. Also, upon
+gaining such knowledge of any such claim, Recipient must conspicuously
+include the URL for such web page in the Required Notice, and in the text of
+any related documentation, license agreement or collateral in which Recipient
+describes end user's rights relating to the Subject Software. If Recipient
+obtains such knowledge after it makes Subject Software available to any other
+person or entity, Recipient shall take other steps (such as notifying appro-
+priate mailing lists or newsgroups) reasonably calculated to provide such
+knowledge to those who received the Subject Software.
+
+8. DISCLAIMER OF WARRANTY. SUBJECT SOFTWARE IS PROVIDED ON AN "AS IS" BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE SUBJECT SOFTWARE IS FREE OF DEFECTS, MER-
+CHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. SGI ASSUMES NO
+RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE. SHOULD ANY SOFTWARE
+PROVE DEFECTIVE IN ANY RESPECT, SGI ASSUMES NO COST OR LIABILITY FOR ANY SER-
+VICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY SUBJECT SOFTWARE IS AUTHORIZED
+HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY,
+WHETHER TORT (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE OR STRICT LIABILITY),
+CONTRACT, OR OTHERWISE, SHALL SGI OR ANY SGI LICENSOR 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 SUBJECT SOFTWARE OR
+THE USE OR OTHER DEALINGS IN THE SUBJECT SOFTWARE. SOME JURISDICTIONS DO NOT
+ALLOW THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES, SO THIS EXCLUSION AND
+LIMITATION MAY NOT APPLY TO RECIPIENT TO THE EXTENT SO DISALLOWED.
+
+10. Indemnity. Recipient shall be solely responsible for damages arising,
+directly or indirectly, out of its utilization of rights under this License.
+Recipient will defend, indemnify and hold SGI and its successors and assigns
+harmless from and against any loss, liability, damages, costs or expenses
+(including the payment of reasonable attorneys fees) arising out of (Recipi-
+ent's use, modification, reproduction and distribution of the Subject Soft-
+ware or out of any representation or warranty made by Recipient.
+
+11. U.S. Government End Users. The Subject Software is a "commercial item"
+consisting of "commercial computer software" as such terms are defined in
+title 48 of the Code of Federal Regulations and all U.S. Government End Users
+acquire only the rights set forth in this License and are subject to the
+terms of this License.
+
+12. Miscellaneous. This License represents the complete agreement concerning
+subject matter hereof. If any provision of this License is held to be unen-
+forceable by any judicial or administrative authority having proper jurisdic-
+tion with respect thereto, such provision shall be reformed so as to achieve
+as nearly as possible the same economic effect as the original provision and
+the remainder of this License will remain in effect. This License shall be
+governed by and construed in accordance with the laws of the United States
+and the State of California as applied to agreements entered into and to be
+performed entirely within California between California residents. Any liti-
+gation relating to this License shall be subject to the exclusive jurisdic-
+tion of the Federal Courts of the Northern District of California (or, absent
+subject matter jurisdiction in such courts, the courts of the State of Cali-
+fornia), with venue lying exclusively in Santa Clara County, California, with
+the losing party responsible for costs, including without limitation, court
+costs and reasonable attorneys fees and expenses. The application of the
+United Nations Convention on Contracts for the International Sale of Goods is
+expressly excluded. Any law or regulation that provides that the language of
+a contract shall be construed against the drafter shall not apply to this
+License.
+
+Exhibit A
+
+Copyright (c) 1994-1999 Silicon Graphics, Inc.
+
+The contents of this file are subject to the CID Font Code Public License
+Version 1.0 (the "License"). You may not use this file except in compliance
+with the License. You may obtain a copy of the License at Silicon Graphics,
+Inc., attn: Legal Services, 2011 N. Shoreline Blvd., Mountain View, CA 94043
+or at http://www.sgi.com/software/opensource/cid/license.html
+
+Software distributed under the License is distributed on an "AS IS" basis.
+ALL WARRANTIES ARE DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
+WARRANTIES OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE OR OF NON-
+INFRINGEMENT. See the License for the specific language governing rights and
+limitations under the License.
+
+The Original Software (as defined in the License) is CID font code that was
+developed by Silicon Graphics, Inc. Those portions of the Subject Software
+(as defined in the License) that were created by Silicon Graphics, Inc. are
+Copyright (c) 1994-1999 Silicon Graphics, Inc. All Rights Reserved.
+
+[NOTE: When using this text in connection with Subject Software delivered
+solely in object code form, Recipient may replace the words "this file" with
+"this software" in both the first and second sentences.]
+
+3.6 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 (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, dis-
+tribute, 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 condi-
+tions:
+
+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 addi-
+tional 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 FOUNDA-
+TION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GEN-
+ERAL, 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 SOFT-
+WARE.
+
+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.
+
+3.7 Bigelow & Holmes Inc and URW++ GmbH Luxi font license
+
+Luxi fonts copyright (c) 2001 by Bigelow & Holmes Inc. Luxi font instruction
+code copyright (c) 2001 by URW++ GmbH. All Rights Reserved. Luxi is a regis-
+tered trademark of Bigelow & Holmes Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of these Fonts and associated documentation files (the "Font Software"), to
+deal in the Font Software, including without limitation the rights to use,
+copy, merge, publish, distribute, sublicense, 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.
+
+The Font Software may not be modified, altered, or added to, and in particu-
+lar the designs of glyphs or characters in the Fonts may not be modified nor
+may additional glyphs or characters be added to the Fonts. This License
+becomes null and void when the Fonts or Font Software have been modified.
+
+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 BIGELOW & HOLMES INC. OR URW++
+GMBH. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GEN-
+ERAL, 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 SOFT-
+WARE.
+
+Except as contained in this notice, the names of Bigelow & Holmes Inc. and
+URW++ GmbH. 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 Bigelow & Holmes Inc. and URW++ GmbH.
+
+For further information, contact:
+
+info@urwpp.de or design@bigelowandholmes.com
+
+ $Id: LICENSE,v 1.3 2004/09/03 23:41:21 kem Exp $
diff --git a/abs/not_built/core/xf86-video-v4l/PKGBUILD b/abs/not_built/core/xf86-video-v4l/PKGBUILD
new file mode 100644
index 0000000..338e96a
--- /dev/null
+++ b/abs/not_built/core/xf86-video-v4l/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id: PKGBUILD 88557 2010-08-24 08:40:12Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-v4l
+pkgver=0.2.0
+pkgrel=6
+pkgdesc="X.org v4l video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 LICENSE)
+md5sums=('2251ae2a0a905764941cd7b098e85ad1'
+ '7d4d018f6bbff7e42672d1aabc75c5cf')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 "${srcdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-voodoo/PKGBUILD b/abs/not_built/core/xf86-video-voodoo/PKGBUILD
new file mode 100644
index 0000000..c0520d8
--- /dev/null
+++ b/abs/not_built/core/xf86-video-voodoo/PKGBUILD
@@ -0,0 +1,26 @@
+# $Id: PKGBUILD 88548 2010-08-24 08:33:41Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-voodoo
+pkgver=1.2.4
+pkgrel=2
+pkgdesc="X.org 3dfx Voodoo1/Voodoo2 2D video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'xf86dgaproto')
+conflicts=('xorg-server<1.9.0')
+groups=('xorg-video-drivers')
+options=('!libtool')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('7ecd232cc0b7fe507e18e08799791eefa9fdaf48')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
diff --git a/abs/not_built/core/xf86-video-xgi/PKGBUILD b/abs/not_built/core/xf86-video-xgi/PKGBUILD
new file mode 100644
index 0000000..a4de300
--- /dev/null
+++ b/abs/not_built/core/xf86-video-xgi/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-xgi
+pkgver=1.6.0
+pkgrel=1
+pkgdesc="X.org XGI video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'xf86dgaproto')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('826f14d6ba799cd2aae9f0c818f84cf8b75f1ddb')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86-video-xgixp/PKGBUILD b/abs/not_built/core/xf86-video-xgixp/PKGBUILD
new file mode 100644
index 0000000..56acbc5
--- /dev/null
+++ b/abs/not_built/core/xf86-video-xgixp/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86-video-xgixp
+pkgver=1.8.0
+pkgrel=1
+pkgdesc="X.org XGIXP video driver"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('glibc')
+makedepends=('xorg-server-devel' 'libdrm' 'xf86driproto' 'mesa')
+options=('!libtool')
+groups=('xorg-video-drivers')
+source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('67caeaa4c746572160208fe23c7257f62cb442a3')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
diff --git a/abs/not_built/core/xf86bigfontproto/PKGBUILD b/abs/not_built/core/xf86bigfontproto/PKGBUILD
new file mode 100644
index 0000000..ad7c8eb
--- /dev/null
+++ b/abs/not_built/core/xf86bigfontproto/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id: PKGBUILD 50992 2009-09-04 12:38:04Z jgc $
+#Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xf86bigfontproto
+pkgver=1.2.0
+pkgrel=1
+pkgdesc="X11 Big Fonts extension wire protocol"
+arch=(any)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+source=(${url}/releases/individual/proto/${pkgname}-${pkgver}.tar.bz2)
+sha1sums=('312a2ea708b257520c1af4393b69d73a393a478f')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ 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/not_built/core/xmlrpc-c/PKGBUILD b/abs/not_built/core/xmlrpc-c/PKGBUILD
new file mode 100644
index 0000000..02a386c
--- /dev/null
+++ b/abs/not_built/core/xmlrpc-c/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: $
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Contributor: Vitaliy Berdinskikh <skipper13@root.ua>
+# Maintainer: Daenyth <Daenyth+Arch [at] gmail [dot] com>
+
+pkgname=xmlrpc-c
+pkgver=1858
+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:xmlrpc-c')
+depends=('curl' 'libxml2' 'gcc-libs' 'zlib')
+makedepends=('libtool')
+options=('!makeflags' '!libtool')
+source=("ftp://ftp.archlinux.org/other/$pkgname/$pkgname-$pkgver.tar.bz2")
+md5sums=('2bd41d1827ebd12ca8f0b9ef0b015228')
+
+build() {
+ [ "${CARCH}" = "x86_64" ] && export CFLAGS="${CFLAGS} -fPIC"
+
+ cd $srcdir/$pkgname
+ ./configure --prefix=/usr \
+ --enable-libxml2-backend \
+ --disable-cgi-server \
+ --disable-abyss-server \
+ --disable-libwww-client \
+ --disable-wininet-client
+
+ make CFLAGS_PERSONAL="${CFLAGS}" || return 1
+}
+package() {
+ cd $srcdir/$pkgname
+ make DESTDIR=$pkgdir install
+
+ install -m 644 -D doc/COPYING $pkgdir/usr/share/licenses/${pkgname}/COPYING
+ mv $pkgdir/usr/man $pkgdir/usr/share/man
+}
+# vim:set ts=2 sw=2 et:
diff --git a/abs/not_built/core/xorg-apps/LICENSE b/abs/not_built/core/xorg-apps/LICENSE
new file mode 100644
index 0000000..e188a3b
--- /dev/null
+++ b/abs/not_built/core/xorg-apps/LICENSE
@@ -0,0 +1,1354 @@
+
+luit:
+
+Copyright (c) 2001 by Juliusz Chroboczek
+Copyright (c) 2002 by Tomohiro KUBOTA
+
+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 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 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.
+
+oclock:
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+x11perf:
+
+Copyright 1988, 1989 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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 Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+xbiff:
+
+Copyright (c) 1988 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+xcalc:
+Copyright (c) 1989, 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+------------------------------------------------------------------------------
+
+Copyright 2005 Red Hat, Inc.
+
+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 Red Hat not be used in
+advertising or publicity pertaining to distribution of the software
+without specific, written prior permission. Red Hat makes no
+representations about the suitability of this software for any
+purpose. It is provided "as is" without express or implied warranty.
+
+RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+
+xclipboard:
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+xclock:
+
+Copyright 1987, 1988, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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 Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+******************************************************************/
+/*
+ * Copyright 2004 Sun Microsystems, Inc.
+ * 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. Neither the name of Sun Microsystems, Inc. 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 "AS IS," without a warranty of any kind.
+ *
+ * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
+ * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
+ * SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR
+ * LIABILITIES SUFFERED BY LICENSEE AS A RESULT OF OR RELATING TO USE,
+ * MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES.
+ * IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE,
+ * PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
+ * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE
+ * THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE
+ * SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ *
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+xconsole:
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 1990, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+xcursorgen:
+Copyright (C) 2002 Manish Singh
+
+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 Manish Singh not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission. Manish Singh makes no
+representations about the suitability of this software for any purpose. It
+is provided "as is" without express or implied warranty.
+
+MANISH SINGH DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL MANISH SINGH BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+xedit:
+
+Copyright (c) 1987, 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.
+
+
+Copyright (c) 1994
+ The Regents of the University of California. All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Jan-Simon Pendry.
+
+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.
+
+
+
+ COPYRIGHT 1987
+ DIGITAL EQUIPMENT CORPORATION
+ MAYNARD, MASSACHUSETTS
+ ALL RIGHTS RESERVED.
+
+THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
+SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
+DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
+ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
+
+IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT RIGHTS,
+APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN ADDITION TO THAT
+SET FORTH ABOVE.
+
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, 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 Digital Equipment Corporation not be
+used in advertising or publicity pertaining to distribution of the software
+without specific, written prior permission.
+
+Copyright 2004 Roland Mainz <roland.mainz@nrubsig.org>
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+Copyright (c) 1999-2002 by The XFree86 Project, Inc.
+
+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 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
+THE XFREE86 PROJECT 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.
+
+Except as contained in this notice, the name of the XFree86 Project shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from the
+XFree86 Project.
+
+
+Copyright (c) 2007 Paulo Cesar Pereira de Andrade
+
+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
+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.
+
+
+xeyes:
+Copyright (c) 1991 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+xkill:
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 1988, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+xload:
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright (c) 1989 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+
+xlogo:
+
+Copyright 1988, 1994, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 2004 Roland Mainz <roland.mainz@nrubsig.org>
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+xmag:
+Copyright 1989, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+ * Copyright (C) 1999 The XFree86 Project, 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, 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 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 THE
+ * XFREE86 PROJECT 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.
+ *
+ * Except as contained in this notice, the name of the XFree86 Project shall
+ * not be used in advertising or otherwise to promote the sale, use or other
+ * dealings in this Software without prior written authorization from the
+ * XFree86 Project.
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+
+xman:
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright (c) 1987, 1988 X Consortium
+Copyright (c) 1991 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+Copyright 2004 Roland Mainz <roland.mainz@nrubsig.org>
+
+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.
+
+The above copyright notice and this permission notice 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 THE
+OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+
+xmessage:
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+ * Copyright (C) 2003 The XFree86 Project, 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, 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 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 THE XFREE86 PROJECT 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.
+ *
+ * Except as contained in this notice, the name of the XFree86 Project
+ * shall not be used in advertising or otherwise to promote the sale,
+ * use or other dealings in this Software without prior written
+ * authorization from the XFree86 Project.
+
+Copyright (c) 1988, 1991, 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+
+xmh:
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright (c) 1989 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:
+
+The above copyright notice and this permission notice 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 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
+CONNECTION 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 dealings
+in this Software without prior written authorization from the X Consortium.
+
+ *
+ * COPYRIGHT 1987, 1989
+ * DIGITAL EQUIPMENT CORPORATION
+ * MAYNARD, MASSACHUSETTS
+ * ALL RIGHTS RESERVED.
+ *
+ * THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE AND
+ * SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
+ * DIGITAL MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR
+ * ANY PURPOSE. IT IS SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
+ *
+ * IF THE SOFTWARE IS MODIFIED IN A MANNER CREATING DERIVATIVE COPYRIGHT
+ * RIGHTS, APPROPRIATE LEGENDS MAY BE PLACED ON THE DERIVATIVE WORK IN
+ * ADDITION TO THAT SET FORTH ABOVE.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose and without fee is hereby granted, 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 Digital Equipment Corporation not be
+ * used in advertising or publicity pertaining to distribution of the software
+ * without specific, written prior permission.
+
+Copyright (c) 1987, 1988 X Consortium
+Copyright (c) 1993 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:
+
+The above copyright notice and this permission notice 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 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
+CONNECTION 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 dealings
+in this Software without prior written authorization from the X Consortium.
+
+
+Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
+
+ All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+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 Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+
+xpr:
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright (c) 1985 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+Copyright (c) 1988 by Hewlett-Packard Company
+
+Permission to use, copy, modify, and distribute this software
+and its documentation for any purpose and without fee is hereby
+granted, 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
+Hewlett-Packard not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.
+
+Copyright (c) 1988 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:
+
+The above copyright notice and this permission notice 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 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 CONNECTION 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 dealings in this Software without prior written authorization
+from the X Consortium.
+
+
+xwd:
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+ * Copyright 2007 Kim woelders
+ *
+ * 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 the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. The copyright holders make no representations
+ * about the suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+
+Copyright 1993, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+Copyright 1994 Hewlett-Packard Co.
+Copyright 1996, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+
+xwud:
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+
+Copyright 1985, 1986, 1988, 1998 The Open Group
+
+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.
+
+The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
diff --git a/abs/not_built/core/xorg-apps/PKGBUILD b/abs/not_built/core/xorg-apps/PKGBUILD
new file mode 100644
index 0000000..a80ceb5
--- /dev/null
+++ b/abs/not_built/core/xorg-apps/PKGBUILD
@@ -0,0 +1,16 @@
+# $Id: PKGBUILD 96980 2010-10-25 20:36:12Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-apps
+pkgver=7.6
+pkgrel=1
+pkgdesc="Transition package depending on various X.Org applications"
+arch=(any)
+url="http://xorg.freedesktop.org/"
+license=('GPL')
+depends=('xorg-luit' 'xorg-xpr' 'xorg-xwd' 'xorg-xwud' 'xorg-x11perf' 'xorg-xcursorgen' 'xorg-xkill')
+#removed: oclock xclock xbiff xclipboard xconsole xeyes xload xlogo xmag xmessage xcalc xman xedit
+
+build() {
+ return 0
+}
diff --git a/abs/not_built/core/xorg-fonts-75dpi/PKGBUILD b/abs/not_built/core/xorg-fonts-75dpi/PKGBUILD
new file mode 100644
index 0000000..52954d7
--- /dev/null
+++ b/abs/not_built/core/xorg-fonts-75dpi/PKGBUILD
@@ -0,0 +1,41 @@
+# $Id: PKGBUILD 71681 2010-03-08 12:06:26Z jgc $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=xorg-fonts-75dpi
+pkgver=1.0.1
+pkgrel=4
+pkgdesc="X.org 75dpi fonts"
+arch=(any)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=(xorg-fonts-encodings xorg-fonts-alias xorg-font-utils fontconfig)
+groups=('xorg')
+install=xfonts.install
+source=(${url}/releases/individual/font/font-adobe-75dpi-1.0.1.tar.bz2
+ ${url}/releases/individual/font/font-adobe-utopia-75dpi-1.0.2.tar.bz2
+ ${url}/releases/individual/font/font-bh-75dpi-1.0.1.tar.bz2
+ ${url}/releases/individual/font/font-bh-lucidatypewriter-75dpi-1.0.1.tar.bz2
+ ${url}/releases/individual/font/font-bitstream-75dpi-1.0.1.tar.bz2)
+md5sums=('a47681c97bd012196691c95e34d400f1'
+ '71dffebeeb702d10876555c361fb69cf'
+ '53785d2688392aec5cba79fc0ddb23a2'
+ '6397062f2b346ce5bbe5472f3353a9a9'
+ 'aed54fb53d2d24aff10c92985286d1e5')
+
+build() {
+ cd "${srcdir}"
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ for dir in *; do
+ if [ -d "${dir}" ]; then
+ pushd "${dir}"
+ ./configure --prefix=/usr \
+ --with-fontdir=/usr/share/fonts/75dpi || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.${dir%-75dpi-*}" || return 1
+ popd
+ fi
+ done
+ rm -f "${pkgdir}"/usr/share/fonts/75dpi/fonts.*
+}
+
diff --git a/abs/not_built/core/xorg-fonts-75dpi/xfonts.install b/abs/not_built/core/xorg-fonts-75dpi/xfonts.install
new file mode 100644
index 0000000..997982b
--- /dev/null
+++ b/abs/not_built/core/xorg-fonts-75dpi/xfonts.install
@@ -0,0 +1,20 @@
+post_install() {
+ echo -n "Updating font cache... "
+ fc-cache -f > /dev/null
+ mkfontscale /usr/share/fonts/75dpi
+ mkfontdir /usr/share/fonts/75dpi
+ echo "done."
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ post_install $1
+}
+
+op=$1
+shift
+
+$op $*
diff --git a/abs/not_built/core/xorg-res-utils/LICENSE.listres b/abs/not_built/core/xorg-res-utils/LICENSE.listres
new file mode 100644
index 0000000..0c5bb16
--- /dev/null
+++ b/abs/not_built/core/xorg-res-utils/LICENSE.listres
@@ -0,0 +1,42 @@
+Copyright (c) 1989 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:
+
+The above copyright notice and this permission notice 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 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
+CONNECTION 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 dealings
+in this Software without prior written authorization from the X Consortium.
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xorg-res-utils/LICENSE.viewres b/abs/not_built/core/xorg-res-utils/LICENSE.viewres
new file mode 100644
index 0000000..0c5bb16
--- /dev/null
+++ b/abs/not_built/core/xorg-res-utils/LICENSE.viewres
@@ -0,0 +1,42 @@
+Copyright (c) 1989 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:
+
+The above copyright notice and this permission notice 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 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
+CONNECTION 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 dealings
+in this Software without prior written authorization from the X Consortium.
+
+ Copyright 2005 Red Hat, Inc.
+
+ 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 Red Hat not be used in
+ advertising or publicity pertaining to distribution of the software without
+ specific, written prior permission. Red Hat makes no
+ representations about the suitability of this software for any purpose. It
+ is provided "as is" without express or implied warranty.
+
+ RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xorg-res-utils/PKGBUILD b/abs/not_built/core/xorg-res-utils/PKGBUILD
new file mode 100644
index 0000000..33966f5
--- /dev/null
+++ b/abs/not_built/core/xorg-res-utils/PKGBUILD
@@ -0,0 +1,38 @@
+# $Id: PKGBUILD 36734 2009-04-27 03:02:17Z eric $
+# Maintainer: Alexander Baldeck <alexander@archlinux.org>
+# Contributor: Jan de Groot <jgc@archlinux.org>
+pkgname=xorg-res-utils
+pkgver=1.0.3
+pkgrel=4
+pkgdesc="X.Org X11 resource utilities"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw')
+makedepends=('pkgconfig')
+groups=('xorg')
+source=(${url}/releases/individual/app/appres-1.0.1.tar.bz2
+ ${url}/releases/individual/app/editres-1.0.3.tar.bz2
+ ${url}/releases/individual/app/listres-1.0.1.tar.bz2
+ ${url}/releases/individual/app/viewres-1.0.1.tar.bz2
+ LICENSE.listres LICENSE.viewres)
+md5sums=('420e6cdf38bb771ec8b00228bf09e8ff' 'a25f931cc6c8d03daaed434f5db5df2d'\
+ '827a1ac5adf9aadd0c13b54a897e297b' 'cdbed540daf7975b56000420c9aa5bf9'\
+ '9c9b17ae5e9be0c570dabe9e54f54f6d' '9c9b17ae5e9be0c570dabe9e54f54f6d')
+
+build() {
+ cd ${srcdir}
+ for i in *; do
+ if [ -d "${i}" ]; then
+ pushd "${i}"
+ ./configure --prefix=/usr --mandir=/usr/share/man --disable-xprint
+ make || return 1
+ make DESTDIR=${pkgdir} install || return 1
+ install -D -m644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.${i%-*}
+ popd
+ fi
+ done
+#Replacing stub license files
+ install -D -m644 "${srcdir}/LICENSE.listres" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.listres"
+ install -D -m644 "${srcdir}/LICENSE.viewres" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.viewres"
+}
diff --git a/abs/not_built/core/xorg-utils/LICENSE.xdpyinfo b/abs/not_built/core/xorg-utils/LICENSE.xdpyinfo
new file mode 100644
index 0000000..495dd2b
--- /dev/null
+++ b/abs/not_built/core/xorg-utils/LICENSE.xdpyinfo
@@ -0,0 +1,26 @@
+ Copyright 1988, 1998 The Open Group
+ Copyright 2005 Hitachi, Ltd.
+
+ 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.
+
+ The above copyright notice and this permission notice 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 THE
+ OPEN GROUP 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.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+ *
+ * Author: Jim Fulton, MIT X Consortium
+ */
+
diff --git a/abs/not_built/core/xorg-utils/LICENSE.xfd b/abs/not_built/core/xorg-utils/LICENSE.xfd
new file mode 100644
index 0000000..2ac6c9d
--- /dev/null
+++ b/abs/not_built/core/xorg-utils/LICENSE.xfd
@@ -0,0 +1,25 @@
+ Copyright 1989, 1998 The Open Group
+
+ 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.
+
+ The above copyright notice and this permission notice 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 THE
+ OPEN GROUP 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.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+ * *
+ * Author: Jim Fulton, MIT X Consortium
+ */
+
diff --git a/abs/not_built/core/xorg-utils/LICENSE.xlsfonts b/abs/not_built/core/xorg-utils/LICENSE.xlsfonts
new file mode 100644
index 0000000..a9a4bd3
--- /dev/null
+++ b/abs/not_built/core/xorg-utils/LICENSE.xlsfonts
@@ -0,0 +1,22 @@
+ Copyright 1989, 1998 The Open Group
+
+ 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.
+
+ The above copyright notice and this permission notice 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 THE
+ OPEN GROUP 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.
+
+ Except as contained in this notice, the name of The Open Group shall not be
+ used in advertising or otherwise to promote the sale, use or other dealings
+ in this Software without prior written authorization from The Open Group.
+
diff --git a/abs/not_built/core/xorg-utils/LICENSE.xprop b/abs/not_built/core/xorg-utils/LICENSE.xprop
new file mode 100644
index 0000000..b94017f
--- /dev/null
+++ b/abs/not_built/core/xorg-utils/LICENSE.xprop
@@ -0,0 +1,45 @@
+ Copyright 1990, 1998 The Open Group
+ Copyright (c) 2000 The XFree86 Project, Inc.
+
+ 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.
+
+ The above copyright notice and this permission notice 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 THE OPEN GROUP 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.
+
+ Except as contained in this notice, the name of The Open Group shall
+ not be used in advertising or otherwise to promote the sale, use or
+ other dealings in this Software without prior written authorization
+ from The Open Group.
+
+ Copyright 2007 Kim woelders
+
+ 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 the copyright holders not be used in advertising or
+ publicity pertaining to distribution of the software without specific,
+ written prior permission. The copyright holders make no representations
+ about the suitability of this software for any purpose. It is provided "as
+ is" without express or implied warranty.
+
+ THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ OF THIS SOFTWARE.
+
diff --git a/abs/not_built/core/xorg-utils/PKGBUILD b/abs/not_built/core/xorg-utils/PKGBUILD
new file mode 100644
index 0000000..8040687
--- /dev/null
+++ b/abs/not_built/core/xorg-utils/PKGBUILD
@@ -0,0 +1,56 @@
+# $Id: PKGBUILD 96495 2010-10-21 21:13:19Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-utils
+pkgver=7.6
+pkgrel=6
+pkgdesc="Collection of client utilities used to query the X server"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxxf86dga' 'libxi' 'libxtst' 'libxinerama' 'libxv'
+ 'libdmx' 'libxft' 'libxaw>=1.0.6' 'libgl' 'libxcomposite' 'xcb-util')
+makedepends=('pkgconfig' 'mesa' 'glproto' 'xorg-util-macros')
+groups=('xorg')
+source=(${url}/releases/individual/app/xdpyinfo-1.2.0.tar.bz2
+ ${url}/releases/individual/app/xdriinfo-1.0.3.tar.bz2
+ ${url}/releases/individual/app/xev-1.0.4.tar.bz2
+ ${url}/releases/individual/app/xfd-1.1.0.tar.bz2
+ ${url}/releases/individual/app/xfontsel-1.0.3.tar.bz2
+ ${url}/releases/individual/app/xlsatoms-1.1.0.tar.bz2
+ ${url}/releases/individual/app/xlsclients-1.1.1.tar.bz2
+ ${url}/releases/individual/app/xlsfonts-1.0.3.tar.bz2
+ ${url}/releases/individual/app/xprop-1.1.0.tar.bz2
+ ${url}/releases/individual/app/xvinfo-1.1.0.tar.bz2
+ ${url}/releases/individual/app/xwininfo-1.1.0.tar.bz2
+ LICENSE.xprop
+ LICENSE.xlsfonts)
+md5sums=('c52fda7bbc80e74b7839f29298cb1d77'
+ 'cb304d1ce562ac48b68eedeba38c662f'
+ '5f98c0a2725a33d60ef4956befe078fb'
+ '17d8ef0d490301158f8abf7641cca243'
+ '299fabe7d7be92b6572d814895ce3bb1'
+ 'c543ccb6489b629d427810d9a57d0724'
+ '6d42621616da0c720f640d23873604ce'
+ 'bf6f3e7074479839d5182ffed735d2be'
+ 'f0bacbd30f0dd1c1e9ccafe97687b7a4'
+ '8cc299b2cb636b5f7fe672610789d3d4'
+ '932cb1393dee3caaf26f3515f640d783'
+ '801f9850b29dad506e995d011efe2914'
+ '345d6e65d71fdde292cc27f93c15e4a1')
+
+build() {
+ cd "${srcdir}"
+ for i in *; do
+ if [ -d "${i}" ]; then
+ pushd "${i}"
+ ./configure --prefix=/usr --mandir=/usr/share/man --without-xprint || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE.${i%-*} || return 1
+ popd
+ fi
+ done
+# Replacing stub license files
+ install -D -m644 "${srcdir}"/LICENSE.* "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/abs/not_built/core/xorg-xkb-utils/LICENSE.setxkbmap b/abs/not_built/core/xorg-xkb-utils/LICENSE.setxkbmap
new file mode 100644
index 0000000..78f516a
--- /dev/null
+++ b/abs/not_built/core/xorg-xkb-utils/LICENSE.setxkbmap
@@ -0,0 +1,22 @@
+ Copyright (c) 1996 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, 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 Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xorg-xkb-utils/LICENSE.xkbevd b/abs/not_built/core/xorg-xkb-utils/LICENSE.xkbevd
new file mode 100644
index 0000000..a43337e
--- /dev/null
+++ b/abs/not_built/core/xorg-xkb-utils/LICENSE.xkbevd
@@ -0,0 +1,22 @@
+ Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, 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 Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xorg-xkb-utils/LICENSE.xkbutils b/abs/not_built/core/xorg-xkb-utils/LICENSE.xkbutils
new file mode 100644
index 0000000..a43337e
--- /dev/null
+++ b/abs/not_built/core/xorg-xkb-utils/LICENSE.xkbutils
@@ -0,0 +1,22 @@
+ Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, 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 Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/abs/not_built/core/xorg-xkb-utils/PKGBUILD b/abs/not_built/core/xorg-xkb-utils/PKGBUILD
new file mode 100644
index 0000000..e6a1e09
--- /dev/null
+++ b/abs/not_built/core/xorg-xkb-utils/PKGBUILD
@@ -0,0 +1,42 @@
+# $Id: PKGBUILD 61601 2009-12-19 21:31:47Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xkb-utils
+pkgver=7.5
+pkgrel=3
+pkgdesc="X.org keyboard utilities"
+arch=('i686' 'x86_64')
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw>=1.0.5' 'libxkbfile')
+makedepends=(pkgconfig inputproto)
+source=(${url}/releases/individual/app/xkbutils-1.0.2.tar.bz2
+ ${url}/releases/individual/app/xkbcomp-1.1.1.tar.bz2
+ ${url}/releases/individual/app/xkbevd-1.1.0.tar.bz2
+ ${url}/releases/individual/app/setxkbmap-1.1.0.tar.bz2
+ ${url}/releases/individual/app/xkbprint-1.0.2.tar.bz2
+ LICENSE.setxkbmap LICENSE.xkbevd LICENSE.xkbutils)
+md5sums=('369a21641b7ca983d6641298e51d97f8'
+ '38c387bacdc01038c8ac280588792bcf'
+ '8d3c1485c2dd62ea7395a37377958a39'
+ '2f902e0a89aaf2b19e06e7f26c6efb3a'
+ '3d3eb10466442354d6b73b503b9829db'
+ '7c20baa6a26c32a04b1b1d6cbaa626a7'
+ '7b1fc39455375a25afe6f9594ff979ac'
+ '7b1fc39455375a25afe6f9594ff979ac')
+
+build() {
+ cd "${srcdir}"
+ for i in *; do
+ if [ -d "${i}" ]; then
+ pushd "${i}"
+ ./configure --prefix=/usr --mandir=/usr/share/man || return 1
+ make || return 1
+ make DESTDIR="${pkgdir}" install || return 1
+ install -D -m644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE.${i%-*} || return 1
+ popd
+ fi
+ done
+# Replacing stub license files
+ install -D -m644 "${srcdir}"/LICENSE.* "${pkgdir}/usr/share/licenses/${pkgname}/" || return 1
+}
diff --git a/abs/not_built/core/xorg-xmessage/PKGBUILD b/abs/not_built/core/xorg-xmessage/PKGBUILD
new file mode 100644
index 0000000..ca10a8d
--- /dev/null
+++ b/abs/not_built/core/xorg-xmessage/PKGBUILD
@@ -0,0 +1,23 @@
+# $Id: $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xmessage
+pkgver=1.0.3
+pkgrel=1
+pkgdesc="Display a message or query in a window"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libxaw')
+makedepends=('xorg-util-macros')
+source=(http://xorg.freedesktop.org/archive/individual/app/xmessage-${pkgver}.tar.bz2)
+sha1sums=('a8bfefbbe7785fa0e58ed4f596f4d79ba0b4d9b2')
+
+build() {
+ cd "${srcdir}/xmessage-${pkgver}"
+ ./configure --prefix=/usr
+ make
+ make DESTDIR="${pkgdir}" install
+ install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+ install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}