summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testing/acf-fetch-crl/APKBUILD21
-rw-r--r--testing/alsa-utils/APKBUILD39
-rw-r--r--testing/alsa-utils/alsa.confd31
-rw-r--r--testing/alsa-utils/alsa.initd218
-rw-r--r--testing/alsa-utils/alsaconf.patch12
-rw-r--r--testing/antiword/APKBUILD25
-rw-r--r--testing/atomic-ops/APKBUILD27
-rw-r--r--testing/attr/APKBUILD50
-rw-r--r--testing/bacula-client/APKBUILD70
-rw-r--r--testing/bacula-client/bacula-client.post-install2
-rw-r--r--testing/bacula-client/bacula-client.pre-install3
-rw-r--r--testing/bacula-client/bacula-fd-conf4
-rw-r--r--testing/bacula-client/bacula-fd-init22
-rw-r--r--testing/bacula-client/configure.in.patch23
-rw-r--r--testing/bacula-client/os.m4.patch12
-rw-r--r--testing/bacula/APKBUILD86
-rw-r--r--testing/bacula/bacula-dir-conf7
-rw-r--r--testing/bacula/bacula-dir-init23
-rw-r--r--testing/bacula/bacula-fd-conf4
-rw-r--r--testing/bacula/bacula-fd-init22
-rw-r--r--testing/bacula/bacula-sd-conf7
-rw-r--r--testing/bacula/bacula-sd-init22
-rw-r--r--testing/bacula/bacula.post-install2
-rw-r--r--testing/bacula/bacula.pre-install4
-rw-r--r--testing/bacula/configure.in.patch23
-rw-r--r--testing/bacula/os.m4.patch12
-rw-r--r--testing/cdparanoia/APKBUILD51
-rw-r--r--testing/cherokee/APKBUILD38
-rw-r--r--testing/cherokee/cherokee.confd10
-rwxr-xr-xtesting/cherokee/cherokee.initd41
-rw-r--r--testing/collectd/APKBUILD79
-rw-r--r--testing/coova-chilli/APKBUILD38
-rw-r--r--testing/coova-chilli/coova-chilli-ssl.patch17
-rw-r--r--testing/cryptsetup/APKBUILD24
-rw-r--r--testing/daemontools/0.76-errno.patch11
-rw-r--r--testing/daemontools/0.76-warnings.patch74
-rw-r--r--testing/daemontools/APKBUILD48
-rw-r--r--testing/daemontools/svscan.initd33
-rw-r--r--testing/dspam/0001-Support-for-parallell-builds.patch77
-rw-r--r--testing/dspam/APKBUILD78
-rw-r--r--testing/dspam/dspam.initd46
-rw-r--r--testing/dspam/dspam.logrotate6
-rw-r--r--testing/dspam/dspam.pre-install6
-rw-r--r--testing/ebtables/0001-link-with-gcc.patch25
-rw-r--r--testing/ebtables/APKBUILD58
-rw-r--r--testing/ebtables/ebtables.confd15
-rw-r--r--testing/ebtables/ebtables.initd97
-rw-r--r--testing/ferm/APKBUILD22
-rw-r--r--testing/fetch-crl/APKBUILD35
-rw-r--r--testing/fetch-crl/fetch-crl-2.7.0-bb-wget.patch41
-rw-r--r--testing/fprobe/APKBUILD32
-rw-r--r--testing/fprobe/fprobe.confd70
-rw-r--r--testing/fprobe/fprobe.initd40
-rw-r--r--testing/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch33
-rw-r--r--testing/freeradius/APKBUILD68
-rw-r--r--testing/freeradius/freeradius-2.1.6-nothreads.patch13
-rw-r--r--testing/freeradius/freeradius-2.1.7-pkglibdir.patch63
-rw-r--r--testing/freeradius/freeradius.confd5
-rw-r--r--testing/freeradius/freeradius.initd70
-rw-r--r--testing/freeradius/freeradius.pre-install3
-rw-r--r--testing/freeswitch/APKBUILD53
-rw-r--r--testing/freeswitch/freeswitch.initd19
-rwxr-xr-xtesting/freeswitch/freeswitch.install15
-rw-r--r--testing/freeswitch/modules.conf75
-rw-r--r--testing/fuse/APKBUILD62
-rw-r--r--testing/fuse/fuse-iconv.patch24
-rw-r--r--testing/fuse/fuse.initd35
-rw-r--r--testing/gnump3d/APKBUILD29
-rw-r--r--testing/gnump3d/gnump3d.confd6
-rw-r--r--testing/gnump3d/gnump3d.initd37
-rw-r--r--testing/gross-svn/APKBUILD34
-rw-r--r--testing/gross-svn/gross-svn.confd6
-rw-r--r--testing/gross-svn/gross-svn.initd36
-rw-r--r--testing/gross-svn/gross-svn.post-install2
-rw-r--r--testing/gross-svn/gross-svn.pre-install3
-rw-r--r--testing/haproxy/APKBUILD27
-rw-r--r--testing/haproxy/haproxy.initd45
-rw-r--r--testing/hping3/APKBUILD36
-rw-r--r--testing/html2ps/APKBUILD31
-rw-r--r--testing/html2ps/html2ps-conf.patch11
-rw-r--r--testing/icecast/APKBUILD32
-rw-r--r--testing/icecast/icecast.initd18
-rw-r--r--testing/ircii/APKBUILD30
-rw-r--r--testing/ircservices/APKBUILD78
-rw-r--r--testing/ircservices/ircservices.confd6
-rw-r--r--testing/ircservices/ircservices.initd29
-rw-r--r--testing/ircservices/ircservices.pre-install5
-rw-r--r--testing/ivtv-utils/APKBUILD28
-rw-r--r--testing/kamailio/APKBUILD149
-rw-r--r--testing/kamailio/kamailio-backslash.patch15
-rw-r--r--testing/kamailio/kamailio.cfg107
-rw-r--r--testing/kamailio/kamailio.initd26
-rw-r--r--testing/kamailio/kamailio.post-install5
-rw-r--r--testing/kamailio/kamailio.pre-install5
-rw-r--r--testing/knock/APKBUILD33
-rw-r--r--testing/knock/knock.confd6
-rw-r--r--testing/knock/knock.initd21
-rw-r--r--testing/kqemu-grsec/APKBUILD44
-rw-r--r--testing/libaio/APKBUILD25
-rw-r--r--testing/libnetfilter_log/APKBUILD26
-rw-r--r--testing/libnl/APKBUILD44
-rw-r--r--testing/libnl/libnl-1.1-flags.patch11
-rw-r--r--testing/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch13
-rw-r--r--testing/libnl/libnl-1.1-minor-leaks.patch40
-rw-r--r--testing/libnl/libnl-1.1-vlan-header.patch80
-rw-r--r--testing/madplay/APKBUILD28
-rw-r--r--testing/madwimax/APKBUILD30
-rw-r--r--testing/mediaproxy/APKBUILD45
-rw-r--r--testing/mediaproxy/config.ini19
-rw-r--r--testing/mediaproxy/mediaproxy-dispatcher.initd22
-rw-r--r--testing/mediaproxy/mediaproxy-relay.initd22
-rw-r--r--testing/minicom/APKBUILD28
-rw-r--r--testing/mp3info/APKBUILD27
-rw-r--r--testing/mp3info/escape_chars.patch138
-rw-r--r--testing/mtx/APKBUILD23
-rw-r--r--testing/multipath-tools/APKBUILD31
-rw-r--r--testing/multipath-tools/Makefile.patch11
-rw-r--r--testing/nagios/APKBUILD55
-rw-r--r--testing/nagios/lighttpd-nagios.conf29
-rw-r--r--testing/nagios/nagios.confd9
-rw-r--r--testing/nagios/nagios.initd39
-rw-r--r--testing/opensips-cp/APKBUILD21
-rw-r--r--testing/opensips/APKBUILD37
-rw-r--r--testing/opensips/opensips.initd26
-rw-r--r--testing/opensips/opensips.post-install5
-rw-r--r--testing/opensips/opensips.pre-install5
-rw-r--r--testing/openvpn/APKBUILD57
-rw-r--r--testing/openvpn/openvpn.initd63
-rw-r--r--testing/perl-io-multiplex/APKBUILD26
-rw-r--r--testing/perl-net-rblcient/APKBUILD26
-rw-r--r--testing/perl-parse-syslog/APKBUILD26
-rw-r--r--testing/pllua/APKBUILD36
-rw-r--r--testing/pllua/pllua-01-0.3.1-include.patch14
-rw-r--r--testing/postgrey/APKBUILD33
-rw-r--r--testing/postgrey/postgrey.confd55
-rw-r--r--testing/postgrey/postgrey.initd102
-rw-r--r--testing/postgrey/postgrey.pre-install6
-rw-r--r--testing/pptpclient/APKBUILD31
-rw-r--r--testing/pptpclient/pptpclient-uclibc.patch21
-rw-r--r--testing/prosody/APKBUILD43
-rw-r--r--testing/prosody/Makefile-0.4.2.patch13
-rw-r--r--testing/prosody/prosody.cfg.lua107
-rw-r--r--testing/prosody/prosody.initd44
-rw-r--r--testing/prosody/prosody.post-install6
-rw-r--r--testing/prosody/prosody.pre-install9
-rw-r--r--testing/pycrypto/APKBUILD17
-rw-r--r--testing/python-application/APKBUILD23
-rw-r--r--testing/python-cjson/APKBUILD23
-rw-r--r--testing/python-gnutls/APKBUILD23
-rw-r--r--testing/python26-buildutils/APKBUILD23
-rw-r--r--testing/python26-setuptools/APKBUILD27
-rw-r--r--testing/qemu/APKBUILD48
-rw-r--r--testing/qemu/kqemu.c997
-rw-r--r--testing/qemu/kqemu.patch32
-rw-r--r--testing/qemu/qemu-0.10.3-nopl-fix.patch32
-rw-r--r--testing/qemu/qemu.pre-install6
-rw-r--r--testing/rrdbot/APKBUILD46
-rw-r--r--testing/rrdbot/rrdbot.post-install4
-rw-r--r--testing/rrdbot/rrdbot.pre-install7
-rw-r--r--testing/rrdbot/rrdbotd.confd7
-rw-r--r--testing/rrdbot/rrdbotd.initd28
-rw-r--r--testing/rrdcollect/APKBUILD27
-rw-r--r--testing/sems/0001-makefile-fail-on-errors.patch170
-rw-r--r--testing/sems/0002-include-headers.patch116
-rw-r--r--testing/sems/0003-cc-and-cflags.patch45
-rw-r--r--testing/sems/APKBUILD61
-rw-r--r--testing/smartmontools/APKBUILD31
-rw-r--r--testing/smartmontools/smartd.confd4
-rw-r--r--testing/smartmontools/smartd.initd43
-rw-r--r--testing/spandsp/APKBUILD28
-rw-r--r--testing/tcpflow/APKBUILD27
-rw-r--r--testing/twisted/APKBUILD18
-rw-r--r--testing/ucspi-tcp/APKBUILD48
-rw-r--r--testing/ucspi-tcp/ucspi-tcp-0.88.a_record.patch64
-rw-r--r--testing/ucspi-tcp/ucspi-tcp-0.88.errno.patch12
-rw-r--r--testing/udev/APKBUILD41
-rwxr-xr-xtesting/udev/move_tmp_persistent_rules.sh25
-rwxr-xr-xtesting/udev/udev-mount.initd83
-rwxr-xr-xtesting/udev/udev-postmount.initd31
-rw-r--r--testing/udev/udev-start.sh51
-rwxr-xr-xtesting/udev/udev.initd239
-rwxr-xr-xtesting/udev/write_root_link_rule29
-rw-r--r--testing/ulogd/APKBUILD49
-rw-r--r--testing/ulogd/ulogd.initd38
-rw-r--r--testing/umix/APKBUILD30
-rw-r--r--testing/vlc/APKBUILD90
-rw-r--r--testing/vlc/uclibc.patch65
-rw-r--r--testing/wine/0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch39
-rw-r--r--testing/wine/APKBUILD29
-rw-r--r--testing/wzdftpd/APKBUILD46
-rw-r--r--testing/wzdftpd/wzdftpd-svn.initd32
-rw-r--r--testing/xf86-video-openchrome-svn/APKBUILD33
-rw-r--r--testing/zope-interface/APKBUILD18
193 files changed, 7973 insertions, 0 deletions
diff --git a/testing/acf-fetch-crl/APKBUILD b/testing/acf-fetch-crl/APKBUILD
new file mode 100644
index 00000000..3728292f
--- /dev/null
+++ b/testing/acf-fetch-crl/APKBUILD
@@ -0,0 +1,21 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+pkgname=acf-fetch-crl
+pkgver=0.2.0
+pkgrel=0
+pkgdesc="A web-based system administration interface for fetch-crl"
+url="http://git.alpinelinux.org/cgit/$pkgname"
+license="GPL-2"
+depends="acf-core lua fetch-crl"
+makedepends=""
+install=
+subpackages=""
+source="http://git.alpinelinux.org/cgit/$pkgname/snapshot/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+
+}
+
+md5sums="d8789ef066ac41abd0db69a8ec470540 acf-fetch-crl-0.2.0.tar.bz2"
diff --git a/testing/alsa-utils/APKBUILD b/testing/alsa-utils/APKBUILD
new file mode 100644
index 00000000..ffa91217
--- /dev/null
+++ b/testing/alsa-utils/APKBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=alsa-utils
+pkgver=1.0.22
+pkgrel=0
+pkgdesc="Advanced Linux Sound Architecture Utils (alsactl, alsamixer, etc.)"
+url="http://www.alsa-project.org"
+license="GPL"
+makedepends="alsa-lib-dev pciutils-dev ncurses-dev"
+depends="dialog"
+subpackages="$pkgname-doc"
+source="ftp://ftp.alsa-project.org/pub/utils/$pkgname-$pkgver.tar.bz2
+ alsaconf.patch
+ alsa.initd
+ alsa.confd
+ "
+
+prepare() {
+ cd "$srcdir"/$pkgname-$pkgver
+ patch -Np1 -i ../alsaconf.patch || return 1
+}
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --disable-xmlto \
+ || return 1
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+ install -D -m755 ../alsa.initd "$pkgdir"/etc/init.d/alsa
+ install -D -m644 ../alsa.confd "$pkgdir"/etc/conf.d/alsa
+}
+md5sums="f7180316188552ee1e6759a03f1fe98d alsa-utils-1.0.22.tar.bz2
+5e65f278b5a77e3ee2821ad955c4cd91 alsaconf.patch
+4a66dad46d5366e05098cde97f3d37b5 alsa.initd
+85b1f1e759fe5953eca329237f4ac256 alsa.confd"
diff --git a/testing/alsa-utils/alsa.confd b/testing/alsa-utils/alsa.confd
new file mode 100644
index 00000000..0a5d58fc
--- /dev/null
+++ b/testing/alsa-utils/alsa.confd
@@ -0,0 +1,31 @@
+# ENABLE_OSS_EMUL:
+# Do you want to enable in-kernel oss emulation?
+# no - Do not load oss emul drivers
+# yes - Load oss emul drivers if they're found
+
+ENABLE_OSS_EMUL="yes"
+
+# RESTORE_ON_START:
+# Do you want to restore your mixer settings? If not, your cards will be
+# muted.
+# no - Do not restore state
+# yes - Restore state
+
+RESTORE_ON_START="yes"
+
+# SAVE_ON_STOP:
+# Do you want to save changes made to your mixer volumes when alsasound
+# stops?
+# no - Do not save state
+# yes - Save state
+
+SAVE_ON_STOP="yes"
+
+# LOAD_ON_START:
+# Do you want to load sound modules when alsasound starts?
+# Note: The Gentoo ALSA developers encourage you to build your sound
+# drivers into the kernel unless the device is hotpluggable or
+# you need to supply specific options (such as model= to HD-Audio).
+# no - Do not load modules
+# yes - Load modules
+LOAD_ON_START="yes"
diff --git a/testing/alsa-utils/alsa.initd b/testing/alsa-utils/alsa.initd
new file mode 100644
index 00000000..c1186189
--- /dev/null
+++ b/testing/alsa-utils/alsa.initd
@@ -0,0 +1,218 @@
+#!/sbin/runscript
+# $Header: /var/cvsroot/gentoo-x86/media-sound/alsa-utils/files/alsasound.initd-r4,v 1.1 2009/08/02 11:27:26 ssuominen Exp $
+# Copyright 2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+alsastatedir=/var/lib/alsa
+alsascrdir=/etc/alsa.d
+
+opts="save restore"
+
+depend() {
+ need localmount
+ after bootmisc modules isapnp coldplug hotplug hwdrivers
+}
+
+load_modules() {
+ # List of drivers for each card.
+ local DRIVERS="$(modprobe -c | sed -n -e 's/^alias \(snd-card-[[:digit:]]\+\) .*/\1/p')"
+
+ # Fall back on the automated aliases if we don't have ALSA configured properly...
+ if [ -z "${DRIVERS}" ] && \
+ ( [ ! -r /proc/asound/cards ] || grep -q ' no soundcards ' /proc/asound/cards 2>/dev/null ) ; then
+ ewarn "Could not detect custom ALSA settings. Loading all detected alsa drivers."
+ DRIVERS="$(modprobe -c | sed -n -e '/^alias pci:.* snd.*/ s/^alias pci:[^ ]* \(.*\)/\1/p' | sort | uniq)"
+ if [ -z "${DRIVERS}" ] ; then
+ eerror "Unable to find any ALSA drivers. Have you compiled alsa-drivers correctly?"
+ fi
+ fi
+
+ if [ "${ENABLE_OSS_EMUL}" = "yes" ] ; then
+ DRIVERS="${DRIVERS} $(modprobe -l | sed -n -e '/snd.*oss/ s:.*\/\([[:alnum:]_-]\+\).ko:\1:p')"
+ fi
+
+ # We want to ensure snd-seq is loaded as it is needed for things like
+ # timidity even if we don't use a real sequencer.
+ DRIVERS="${DRIVERS} $(modprobe -l | sed -n -e '/snd.seq\./ s:.*\/\([[:alnum:]_-]\+\).ko:\1:p')"
+
+ # We want to ensure snd-ioctl32 is loaded as it is needed for 32bit
+ # compatibility
+ DRIVERS="${DRIVERS} $(modprobe -l | sed -n -e '/snd.ioctl32\./ s:.*\/\([[:alnum:]_-]\+\).ko:\1:p')"
+
+ local DRIVER= DMOD=
+ for DRIVER in ${DRIVERS} ; do
+ [ "${DRIVER}" = "off" ] && continue
+ DMOD="$(echo "${DRIVER}" | sed -e 's/-/_/g')"
+ if ! grep -q "^${DMOD} " /proc/modules ; then
+ ebegin "Loading: ${DRIVER}"
+ modprobe ${DRIVER}
+ eend $?
+ fi
+ done
+
+ if [ -f /proc/asound/seq/drivers ] ; then
+ local SEQUENCERS="$(sed -n -e 's/\([^,]*\),empty,.*/\1/p' /proc/asound/seq/drivers)"
+ local SEQUENCER
+ for SEQUENCER in ${SEQUENCERS} ; do
+ DMOD="$(echo "${SEQUENCER}" | sed -e 's/-/_/g')"
+ if ! grep -q "^${DMOD} " /proc/modules ; then
+ ebegin "Loading: ${SEQUENCER}"
+ modprobe ${SEQUENCER}
+ eend $?
+ fi
+ done
+ fi
+
+ for DRIVER in ${DRIVERS}
+ do
+ local TMP=${DRIVER##snd-}
+ TMP=${TMP##snd_}
+ if [ -x "${alsascrdir}/${TMP}" ] ; then
+ ebegin "Running: ${alsascrdir}/${TMP}"
+ "${alsascrdir}/${TMP}"
+ eend $?
+ fi
+ done
+
+ if [ ! -d /proc/asound ] || grep -q ' no soundcards ' /proc/asound/cards ; then
+ eerror "ERROR: Failed to load necessary drivers"
+ return 1
+ fi
+}
+
+unload_modules_24() {
+ local LOADED_MODULES="$(lsmod | sed -n -e 's/^\(snd[^ ]*\) .*/\1/p')"
+ local MODULE
+ for MODULE in ${LOADED_MODULES} ; do
+ rmmod "${MODULE}"
+ done
+ rmmod soundcore 2>/dev/null
+ rmmod gameport 2>/dev/null
+
+ lsmod | grep -vq '^snd'
+}
+
+unload_modules_recursive() {
+ local revdeps="$(lsmod | sed -n -e "s/,/ /g" -e "s/^$1 *[0-9]* *[0-9]* \(.*\)/\1/p")"
+
+ for module in ${revdeps} ; do
+ unload_modules_recursive "${module}"
+ done
+
+ vebegin "Unloading: $1"
+ rmmod --wait "$1"
+ veend $?
+}
+
+unload_modules_26() {
+ # First of all, remove the snd module and all the modules depending
+ # on it, this should remove already most of ALSA modules.
+ lsmod | grep -q "^snd[[:space:]]" && unload_modules_recursive snd
+
+ # Then find the remaining ones, and handle them too.
+ for module in $(lsmod | sed -n -e 's/^\(snd[^ ]*\) .*/\1/p'); do
+ unload_modules_recursive "${module}"
+ done
+
+ lsmod | grep -vq "^snd"
+}
+
+terminate() {
+ #
+ # Kill processes holding open sound devices
+ #
+ # DEVS=`find /dev/ -follow -type c -maxdepth 1 -print 2>/dev/null | xargs ls -dils | grep "1*1[46]," | cut -d: -f2 | cut -d" " -f2; echo /proc/asound/dev/*`
+ local ossdevs="/dev/admmidi* /dev/adsp* /dev/amidi* /dev/audio* /dev/dmfm* \
+ /dev/dmmidi* /dev/dsp* /dev/dspW* /dev/midi0* /dev/mixer* /dev/music \
+ /dev/patmgr* /dev/sequencer* /dev/sndstat"
+ local alsadevs="/proc/asound/dev/* /dev/sound/* /dev/snd/*"
+ fuser -k ${ossdevs} ${alsadevs} >/dev/null 2>/dev/null
+
+ # remove all sequencer connections if any
+ [ -f /proc/asound/seq/clients ] && type aconnect >/dev/null 2>/dev/null && aconnect --removeall
+}
+
+restore() {
+ ebegin "Restoring Mixer Levels"
+
+ if [ ! -r "${alsastatedir}/asound.state" ] ; then
+ ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!"
+ eend 0
+ return 0
+ fi
+
+ local cards="$(sed -n -e 's/ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)"
+ local CARDNUM
+ for cardnum in ${cards}; do
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ [ -e /dev/snd/controlC${cardnum} ] || sleep 2
+ alsactl -f "${alsastatedir}/asound.state" restore ${cardnum} \
+ || ewarn "Errors while restoring defaults, ignoring"
+ done
+
+ for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do
+ [ -e "${ossfile}" ] || continue
+ # We use cat because I'm not sure if cp works properly on /proc
+ local procfile=${ossfile##${alsastatedir}/oss}
+ procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
+ if [ -e /proc/asound/"${procfile}"/oss ] ; then
+ cat "${ossfile}" > /proc/asound/"${procfile}"/oss
+ fi
+ done
+
+ eend 0
+}
+
+save() {
+ ebegin "Storing ALSA Mixer Levels"
+
+ mkdir -p "${alsastatedir}"
+ if ! alsactl -f "${alsastatedir}/asound.state" store; then
+ eerror "Error saving levels."
+ eend 1
+ return 1
+ fi
+
+ for ossfile in /proc/asound/card*/pcm*/oss; do
+ [ -e "${ossfile}" ] || continue
+ local device=${ossfile##/proc/asound/} ; device=${device%%/oss}
+ device="$(echo "${device}" | sed -e 's,/,_,g')"
+ mkdir -p "${alsastatedir}/oss/"
+ cp "${ossfile}" "${alsastatedir}/oss/${device}"
+ done
+
+ eend 0
+}
+
+start() {
+ if [ -f /proc/modules ] && [ "${LOAD_ON_START}" = "yes" ]; then
+ ebegin "Loading ALSA modules"
+ eindent
+ load_modules
+ eoutdent
+ eend $? || return 1
+ fi
+
+ if [ ! -d /proc/asound ]; then
+ eerror "ALSA failed to load."
+ eend 1
+ return 1
+ elif [ "${RESTORE_ON_START}" = "yes" ]; then
+ restore
+ fi
+
+ return 0
+}
+
+stop() {
+ if [ ! -d /proc/asound ] ; then
+ eerror "ALSA is not loaded"
+ return 0
+ fi
+
+ [ "${SAVE_ON_STOP}" = "yes" ] && save
+
+ return 0
+}
diff --git a/testing/alsa-utils/alsaconf.patch b/testing/alsa-utils/alsaconf.patch
new file mode 100644
index 00000000..846cf984
--- /dev/null
+++ b/testing/alsa-utils/alsaconf.patch
@@ -0,0 +1,12 @@
+diff -Naur alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in alsa-utils-1.0.9a/alsaconf/alsaconf.in
+--- alsa-utils-1.0.9a-orig/alsaconf/alsaconf.in 2005-03-24 00:24:52.000000000 -0800
++++ alsa-utils-1.0.9a/alsaconf/alsaconf.in 2005-07-18 09:25:02.000000000 -0700
+@@ -58,6 +58,8 @@
+ distribution="redhat"
+ elif test -f /etc/fedora-release && grep -q "Fedora" /etc/fedora-release; then
+ distribution="fedora"
++elif test -f /etc/alpine-release; then
++ distribution="alpine"
+ elif [ -f /etc/slackware-version -o -f /etc/slamd64-version ]; then
+ distribution="slackware"
+ else
diff --git a/testing/antiword/APKBUILD b/testing/antiword/APKBUILD
new file mode 100644
index 00000000..75f5bf73
--- /dev/null
+++ b/testing/antiword/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=antiword
+pkgver=0.37
+pkgrel=0
+pkgdesc="free MS Word reader"
+url="http://www.winfield.demon.nl"
+license="GPL"
+depends=""
+makedepends=""
+install=
+subpackages=""
+source="http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ make || return 1
+
+ install -m755 -D "$srcdir"/"$pkgname-$pkgver"/$pkgname "$pkgdir"/usr/bin/$pkgname
+ mkdir -p "$pkgdir"/usr/share/antiword
+ install -m644 -D "$srcdir"/"$pkgname-$pkgver"/Resources/* "$pkgdir"/usr/share/antiword/
+}
+
+md5sums="f868e2a269edcbc06bf77e89a55898d1 antiword-0.37.tar.gz"
diff --git a/testing/atomic-ops/APKBUILD b/testing/atomic-ops/APKBUILD
new file mode 100644
index 00000000..aff442f5
--- /dev/null
+++ b/testing/atomic-ops/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=atomic-ops
+pkgver=1.2_p20080819
+_realver=1.2+cvs20080819
+pkgrel=0
+pkgdesc="A library for atomic operations"
+url="http://www.hpl.hp.com/research/linux/atomic_ops/download.php4"
+license="GPL"
+depends=""
+makedepends=""
+install=
+subpackages=
+source="http://ftp.de.debian.org/debian/pool/main/liba/libatomic-ops/libatomic-ops_$_realver.orig.tar.gz"
+
+build() {
+ cd "$srcdir"/libatomic_ops-${pkgver%_p*}
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="bf26c062f28796e3daaab586a38abec1 libatomic-ops_1.2+cvs20080819.orig.tar.gz"
diff --git a/testing/attr/APKBUILD b/testing/attr/APKBUILD
new file mode 100644
index 00000000..8f80a991
--- /dev/null
+++ b/testing/attr/APKBUILD
@@ -0,0 +1,50 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=attr
+pkgver=2.4.44
+_ver=2.4.44
+pkgrel=0
+pkgdesc="Extended attribute support library for ACL support"
+url="http://oss.sgi.com/projects/xfs/"
+license="LGPL"
+depends=
+makedepends="libtool autoconf automake bash gzip"
+subpackage="$pkgname-dev $pkgname-doc"
+source="ftp://ftp.archlinux.org/other/attr/attr-${pkgver}.src.tar.gz"
+
+prepare() {
+ cd "$srcdir"/attr-$pkgver
+ sed -i -e '/HAVE_ZIPPED_MANPAGES/s:=.*:=false:' \
+ include/builddefs.in
+
+ autoconf || return 1
+}
+
+build() {
+ cd "$srcdir"/attr-$pkgver
+
+ unset PLATFORM #184564
+ export OPTIMIZER="${CFLAGS}"
+ export DEBUG=-DNDEBUG
+
+ ./configure \
+ --prefix=/ \
+ --exec-prefix=/ \
+ --sbindir=/bin \
+ --bindir=/usr/bin \
+ --libdir=/lib \
+ --libexecdir=/usr/lib \
+ --enable-lib64=yes \
+ --includedir=/usr/include \
+ --mandir=/usr/share/man \
+ --datadir=/usr/share \
+ --disable-gettext || return 1
+ make LIBTOOL="libtool --tag=CC" || return 1
+}
+
+package() {
+ cd "$srcdir"/attr-$pkgver
+ make DIST_ROOT="$pkgdir" install install-lib install-dev
+ # provided by man-pages
+ rm -fr "$pkgdir"/usr/share/man/man2
+}
+md5sums="adeefe65c5ad1febe46da185c5bfd5d4 attr-2.4.44.src.tar.gz"
diff --git a/testing/bacula-client/APKBUILD b/testing/bacula-client/APKBUILD
new file mode 100644
index 00000000..3156c9dd
--- /dev/null
+++ b/testing/bacula-client/APKBUILD
@@ -0,0 +1,70 @@
+# Contributor: Leonardo Arena <rnalrd@gmail.com>
+# Maintainer: Leonardo Arena <rnalrd@gmail.com>
+pkgname="bacula-client"
+_realname="bacula"
+pkgver=3.0.3
+pkgrel=0
+pkgdesc="Client (File Daemon) of Bacula, a network based backup program"
+url="http://www.bacula.org"
+license="GPL2"
+depends="openssl ncurses"
+makedepends="openssl-dev autoconf ncurses-dev"
+install="$pkgname.pre-install $pkgname.post-install"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/project/$_realname/$_realname/$pkgver/$_realname-$pkgver.tar.gz
+bacula-fd-init
+bacula-fd-conf
+configure.in.patch
+os.m4.patch"
+
+prepare () {
+ cd "$srcdir/$_realname-$pkgver"
+ patch -p1 < ../../configure.in.patch
+ patch -p1 < ../../os.m4.patch
+}
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+ export LDFLAGS=
+ # Need to run configure at least once
+ # in order to do not go into an infinite loop
+ ./configure
+ make configure
+ make distclean
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/bacula \
+ --localstatedir=/var \
+ --mandir=/usr/share/man \
+ --docdir=/usr/share/doc \
+ --infodir=/usr/share/info \
+ --with-pid-dir=/var/run \
+ --with-subsys-dir=/var/lock/subsys \
+ --enable-largefile \
+ --enable-client-only \
+ --disable-nls \
+ --with-openssl=/usr/include/openssl \
+ --with-scriptdir=/etc/bacula/scripts \
+ --with-working-dir=/var/bacula \
+ --with-fd-user=root \
+ --with-fd-group=root \
+ --with-fd-password=ca4pheexie1aeC1hee3i \
+
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$_realname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ install -Dm755 $srcdir/bacula-fd-init \
+ $pkgdir/etc/init.d/bacula-fd
+ install -Dm644 $srcdir/bacula-fd-conf \
+ $pkgdir/etc/conf.d/bacula-fd
+}
+
+md5sums="feba58691b674b12056359d459ad6940 bacula-3.0.3.tar.gz
+38b0fe78acdc5e65aec3a59578e98a20 bacula-fd-init
+4500ce2d62bf9df33c07f70dc40f7b85 bacula-fd-conf
+ebc9c2bbc9be95c920723a3f142d8e19 configure.in.patch
+cf7a2a4e972697f54364654c4e282b8b os.m4.patch"
diff --git a/testing/bacula-client/bacula-client.post-install b/testing/bacula-client/bacula-client.post-install
new file mode 100644
index 00000000..51274b5c
--- /dev/null
+++ b/testing/bacula-client/bacula-client.post-install
@@ -0,0 +1,2 @@
+#!/bin/sh
+chown bacula.bacula /var/bacula
diff --git a/testing/bacula-client/bacula-client.pre-install b/testing/bacula-client/bacula-client.pre-install
new file mode 100644
index 00000000..54f40877
--- /dev/null
+++ b/testing/bacula-client/bacula-client.pre-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+addgroup -S bacula 2>/dev/null
+exit 0
diff --git a/testing/bacula-client/bacula-fd-conf b/testing/bacula-client/bacula-fd-conf
new file mode 100644
index 00000000..033ef74b
--- /dev/null
+++ b/testing/bacula-client/bacula-fd-conf
@@ -0,0 +1,4 @@
+# Config file for /etc/init.d/bacula-fd
+
+# Options for the file daemon.
+FD_OPTIONS="-u root -g bacula -c /etc/bacula/bacula-fd.conf"
diff --git a/testing/bacula-client/bacula-fd-init b/testing/bacula-client/bacula-fd-init
new file mode 100644
index 00000000..618b3508
--- /dev/null
+++ b/testing/bacula-client/bacula-fd-init
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/app-backup/bacula/files/3.0.3/bacula-fd-init,v 1.1 2009/11/08 17:14:46 wschlich Exp $
+
+depend() {
+ need net
+ use dns
+}
+
+start() {
+ ebegin "Starting bacula file daemon"
+ start-stop-daemon --start --quiet --exec /usr/sbin/bacula-fd \
+ -- ${FD_OPTIONS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping bacula file daemon"
+ start-stop-daemon --stop --quiet --pidfile /var/run/bacula-fd.*.pid
+ eend $?
+}
diff --git a/testing/bacula-client/configure.in.patch b/testing/bacula-client/configure.in.patch
new file mode 100644
index 00000000..cfe2a0b7
--- /dev/null
+++ b/testing/bacula-client/configure.in.patch
@@ -0,0 +1,23 @@
+--- bacula-3.0.3-orig/autoconf/configure.in Sun Oct 18 09:10:16 2009
++++ bacula-3.0.3/autoconf/configure.in Wed Dec 2 14:13:44 2009
+@@ -2576,6 +2576,20 @@
+ fi
+ TAPEDRIVE="/dev/nrmt0"
+ ;;
++alpine)
++ dnl Make sure hostname is resolved
++ ping -c 1 $hostname 2>&1 1>/dev/null
++ if test ! $? = 0; then
++ hostname="localhost"
++ fi
++ if `test -f /etc/alpine-release && grep -q alpine /etc/alpine-release`; then
++ DISTNAME="alpine"
++ fi
++ DISTVER=`cat /etc/alpine-release`
++ TAPEDRIVE="/dev/nst0"
++ PSCMD="ps -e -o pid,comm"
++ largefile_support="yes"
++ ;;
+ bsdi)
+ DISTVER=`uname -a |awk '{print $3}'`
+ TAPEDRIVE="/dev/nrmt0"
diff --git a/testing/bacula-client/os.m4.patch b/testing/bacula-client/os.m4.patch
new file mode 100644
index 00000000..95dc5666
--- /dev/null
+++ b/testing/bacula-client/os.m4.patch
@@ -0,0 +1,12 @@
+--- bacula-3.0.3-orig/autoconf/bacula-macros/os.m4 Sun Oct 18 09:10:16 2009
++++ bacula-3.0.3/autoconf/bacula-macros/os.m4 Wed Dec 2 13:48:30 2009
+@@ -201,6 +201,9 @@
+ elif test -f /etc/gentoo-release
+ then
+ DISTNAME=gentoo
++elif test -f /etc/alpine-release
++then
++ DISTNAME=alpine
+ elif test -f /etc/debian_version
+ then
+ DISTNAME=debian
diff --git a/testing/bacula/APKBUILD b/testing/bacula/APKBUILD
new file mode 100644
index 00000000..6adc4945
--- /dev/null
+++ b/testing/bacula/APKBUILD
@@ -0,0 +1,86 @@
+# Contributor: Leonardo Arena <rnalrd@gmail.com>
+# Maintainer: Leonardo Arena <rnalrd@gmail.com>
+pkgname="bacula"
+pkgver=3.0.3
+pkgrel=0
+pkgdesc="Enterprise ready, network based backup program"
+url="http://www.bacula.org"
+license="GPL2"
+depends="postgresql openssl ncurses"
+makedepends="postgresql-dev openssl-dev ncurses-dev autoconf"
+install="$pkgname.pre-install $pkgname.post-install"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgver/$pkgname-$pkgver.tar.gz
+bacula-dir-init
+bacula-dir-conf
+bacula-sd-init
+bacula-sd-conf
+bacula-fd-init
+bacula-fd-conf
+configure.in.patch
+os.m4.patch"
+
+prepare () {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 < ../../configure.in.patch
+ patch -p1 < ../../os.m4.patch
+}
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ export LDFLAGS=
+ # Need to run configure at least once
+ # in order to do not go into an infinite loop
+ ./configure
+ make configure
+ make distclean
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/bacula \
+ --localstatedir=/var \
+ --mandir=/usr/share/man \
+ --docdir=/usr/share/doc \
+ --infodir=/usr/share/info \
+ --with-pid-dir=/var/run \
+ --with-subsys-dir=/var/lock/subsys \
+ --enable-largefile \
+ --disable-nls \
+ --with-openssl=/usr/include/openssl \
+ --with-postgresql=/usr \
+ --with-scriptdir=/etc/bacula/scripts \
+ --with-working-dir=/var/bacula \
+ --with-dir-user=bacula \
+ --with-dir-group=bacula \
+ --with-sd-user=bacula \
+ --with-sd-group=bacula \
+ --with-fd-user=root \
+ --with-fd-group=root \
+ --with-dir-password=pie9Sah6aZo4aiS5te5e \
+ --with-fd-password=ca4pheexie1aeC1hee3i \
+ --with-sd-password=Saphaech3xohmuDaDaLi
+
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+
+ for DAEMON in dir sd fd
+ do
+ install -Dm755 $srcdir/bacula-${DAEMON}-init \
+ $pkgdir/etc/init.d/bacula-${DAEMON}
+ install -Dm644 $srcdir/bacula-${DAEMON}-conf \
+ $pkgdir/etc/conf.d/bacula-${DAEMON}
+ done
+}
+
+md5sums="feba58691b674b12056359d459ad6940 bacula-3.0.3.tar.gz
+2e11ca528feb60adc1bb09a6488eb654 bacula-dir-init
+20f28a16f34e3f20ed18ed81b010e765 bacula-dir-conf
+38603c86eae43e8a38962bb8590c41dd bacula-sd-init
+afe2f9a4d79d7d96eb9372d003d10f86 bacula-sd-conf
+38b0fe78acdc5e65aec3a59578e98a20 bacula-fd-init
+4500ce2d62bf9df33c07f70dc40f7b85 bacula-fd-conf
+ebc9c2bbc9be95c920723a3f142d8e19 configure.in.patch
+cf7a2a4e972697f54364654c4e282b8b os.m4.patch"
diff --git a/testing/bacula/bacula-dir-conf b/testing/bacula/bacula-dir-conf
new file mode 100644
index 00000000..17a56161
--- /dev/null
+++ b/testing/bacula/bacula-dir-conf
@@ -0,0 +1,7 @@
+# Config file for /etc/init.d/bacula-dir
+
+# Options for the director daemon.
+# The DIR can be run as a non-root user, however
+# please ensure that this user has proper permissions to
+# access your backup devices.
+DIR_OPTIONS="-u bacula -g bacula -c /etc/bacula/bacula-dir.conf"
diff --git a/testing/bacula/bacula-dir-init b/testing/bacula/bacula-dir-init
new file mode 100644
index 00000000..c14f5c87
--- /dev/null
+++ b/testing/bacula/bacula-dir-init
@@ -0,0 +1,23 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/app-backup/bacula/files/3.0.3/bacula-dir-init,v 1.1 2009/11/08 17:14:46 wschlich Exp $
+
+depend() {
+ need net postgresql
+ after firewall
+ use dns bacula-fd bacula-sd
+}
+
+start() {
+ ebegin "Starting bacula director"
+ start-stop-daemon --start --quiet --exec /usr/sbin/bacula-dir \
+ -- ${DIR_OPTIONS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping bacula director"
+ start-stop-daemon --stop --quiet --pidfile /var/run/bacula-dir.*.pid
+ eend $?
+}
diff --git a/testing/bacula/bacula-fd-conf b/testing/bacula/bacula-fd-conf
new file mode 100644
index 00000000..033ef74b
--- /dev/null
+++ b/testing/bacula/bacula-fd-conf
@@ -0,0 +1,4 @@
+# Config file for /etc/init.d/bacula-fd
+
+# Options for the file daemon.
+FD_OPTIONS="-u root -g bacula -c /etc/bacula/bacula-fd.conf"
diff --git a/testing/bacula/bacula-fd-init b/testing/bacula/bacula-fd-init
new file mode 100644
index 00000000..618b3508
--- /dev/null
+++ b/testing/bacula/bacula-fd-init
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/app-backup/bacula/files/3.0.3/bacula-fd-init,v 1.1 2009/11/08 17:14:46 wschlich Exp $
+
+depend() {
+ need net
+ use dns
+}
+
+start() {
+ ebegin "Starting bacula file daemon"
+ start-stop-daemon --start --quiet --exec /usr/sbin/bacula-fd \
+ -- ${FD_OPTIONS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping bacula file daemon"
+ start-stop-daemon --stop --quiet --pidfile /var/run/bacula-fd.*.pid
+ eend $?
+}
diff --git a/testing/bacula/bacula-sd-conf b/testing/bacula/bacula-sd-conf
new file mode 100644
index 00000000..88e13aa0
--- /dev/null
+++ b/testing/bacula/bacula-sd-conf
@@ -0,0 +1,7 @@
+# Config file for /etc/init.d/bacula-sd
+
+# Options for the storage daemon.
+# The SD can be run as a non-root user, however
+# please ensure that this user has proper permissions to
+# access your backup devices.
+SD_OPTIONS="-u bacula -g bacula -c /etc/bacula/bacula-sd.conf"
diff --git a/testing/bacula/bacula-sd-init b/testing/bacula/bacula-sd-init
new file mode 100644
index 00000000..38c9ea48
--- /dev/null
+++ b/testing/bacula/bacula-sd-init
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/app-backup/bacula/files/3.0.3/bacula-sd-init,v 1.1 2009/11/08 17:14:46 wschlich Exp $
+
+depend() {
+ need net
+ use dns
+}
+
+start() {
+ ebegin "Starting bacula storage daemon"
+ start-stop-daemon --start --quiet --exec /usr/sbin/bacula-sd \
+ -- ${SD_OPTIONS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping bacula storage daemon"
+ start-stop-daemon --stop --quiet --pidfile /var/run/bacula-sd.*.pid
+ eend $?
+}
diff --git a/testing/bacula/bacula.post-install b/testing/bacula/bacula.post-install
new file mode 100644
index 00000000..51274b5c
--- /dev/null
+++ b/testing/bacula/bacula.post-install
@@ -0,0 +1,2 @@
+#!/bin/sh
+chown bacula.bacula /var/bacula
diff --git a/testing/bacula/bacula.pre-install b/testing/bacula/bacula.pre-install
new file mode 100644
index 00000000..bfac8567
--- /dev/null
+++ b/testing/bacula/bacula.pre-install
@@ -0,0 +1,4 @@
+#!/bin/sh
+addgroup -S bacula 2>/dev/null
+adduser -h /var/bacula/ -s /bin/false -G bacula -S -H -D bacula 2>/dev/null
+exit 0
diff --git a/testing/bacula/configure.in.patch b/testing/bacula/configure.in.patch
new file mode 100644
index 00000000..cfe2a0b7
--- /dev/null
+++ b/testing/bacula/configure.in.patch
@@ -0,0 +1,23 @@
+--- bacula-3.0.3-orig/autoconf/configure.in Sun Oct 18 09:10:16 2009
++++ bacula-3.0.3/autoconf/configure.in Wed Dec 2 14:13:44 2009
+@@ -2576,6 +2576,20 @@
+ fi
+ TAPEDRIVE="/dev/nrmt0"
+ ;;
++alpine)
++ dnl Make sure hostname is resolved
++ ping -c 1 $hostname 2>&1 1>/dev/null
++ if test ! $? = 0; then
++ hostname="localhost"
++ fi
++ if `test -f /etc/alpine-release && grep -q alpine /etc/alpine-release`; then
++ DISTNAME="alpine"
++ fi
++ DISTVER=`cat /etc/alpine-release`
++ TAPEDRIVE="/dev/nst0"
++ PSCMD="ps -e -o pid,comm"
++ largefile_support="yes"
++ ;;
+ bsdi)
+ DISTVER=`uname -a |awk '{print $3}'`
+ TAPEDRIVE="/dev/nrmt0"
diff --git a/testing/bacula/os.m4.patch b/testing/bacula/os.m4.patch
new file mode 100644
index 00000000..95dc5666
--- /dev/null
+++ b/testing/bacula/os.m4.patch
@@ -0,0 +1,12 @@
+--- bacula-3.0.3-orig/autoconf/bacula-macros/os.m4 Sun Oct 18 09:10:16 2009
++++ bacula-3.0.3/autoconf/bacula-macros/os.m4 Wed Dec 2 13:48:30 2009
+@@ -201,6 +201,9 @@
+ elif test -f /etc/gentoo-release
+ then
+ DISTNAME=gentoo
++elif test -f /etc/alpine-release
++then
++ DISTNAME=alpine
+ elif test -f /etc/debian_version
+ then
+ DISTNAME=debian
diff --git a/testing/cdparanoia/APKBUILD b/testing/cdparanoia/APKBUILD
new file mode 100644
index 00000000..7080bfc8
--- /dev/null
+++ b/testing/cdparanoia/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=cdparanoia
+pkgver=10.2
+pkgrel=0
+pkgdesc="An audio CD extraction application"
+url="http://www.xiph.org/paranoia"
+license="GPL"
+depends="uclibc"
+makedepends="libtool autoconf automake"
+install=
+subpackages="$pkgname-dev"
+source="http://downloads.xiph.org/releases/cdparanoia/$pkgname-III-$pkgver.src.tgz"
+
+build() {
+ cd "$srcdir/$pkgname-III-$pkgver"
+ mv configure.guess config.guess
+ mv configure.sub config.sub
+ sed -i -e '/configure.\(guess\|sub\)/d' configure.in || return 1
+ aclocal && autoconf || return 1
+ libtoolize || return 1
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ #make DESTDIR="$pkgdir" install
+
+ install -m755 -D "$srcdir"/"$pkgname-III-$pkgver"/cdparanoia "$pkgdir"/usr/bin/cdparanoia
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/interface/libcdda_interface.a "$pkgdir"/usr/lib/libcdda_interface.a
+ install -m755 -D "$srcdir"/"$pkgname-III-$pkgver"/interface/libcdda_interface.so.0."$pkgver" "$pkgdir"/usr/lib/libcdda_interface.so.0."$pkgver"
+ install -m755 -D "$srcdir"/"$pkgname-III-$pkgver"/paranoia/libcdda_paranoia.so.0."$pkgver" "$pkgdir"/usr/lib/libcdda_paranoia.so.0."$pkgver"
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/interface/libcdda_interface.so.0 "$pkgdir"/usr/lib/libcdda_interface.so.0
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/interface/libcdda_interface.so "$pkgdir"/usr/lib/libcdda_interface.so
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/paranoia/libcdda_paranoia.so.0 "$pkgdir"/usr/lib/libcdda_paranoia.so.0
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/paranoia/libcdda_paranoia.so "$pkgdir"/usr/lib/libcdda_paranoia.so
+
+}
+
+dev () {
+ install=""
+ mkdir pkg-dev
+ cd "$srcdir/$pkgname-III-$pkgver"
+
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/interface/cdda_interface.h "$pkgdir"-dev/usr/include/cdda_interface.h
+ install -m644 -D "$srcdir"/"$pkgname-III-$pkgver"/paranoia/cdda_paranoia.h "$pkgdir"-dev/usr/include/cdda_paranoia.h
+
+}
+
+md5sums="b304bbe8ab63373924a744eac9ebc652 cdparanoia-III-10.2.src.tgz"
diff --git a/testing/cherokee/APKBUILD b/testing/cherokee/APKBUILD
new file mode 100644
index 00000000..47a7d43a
--- /dev/null
+++ b/testing/cherokee/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Mika Havela <mika.havela@gmail.com>
+# Maintainer: Mika Havela <mika.havela@gmail.com>
+pkgname=cherokee
+pkgver=0.99.41
+pkgrel=0
+pkgdesc="A very fast, flexible and easy to configure Web Server"
+url="http://www.cherokee-project.com/"
+license="GPL2"
+depends="pcre rrdtool"
+makedepends="openssl-dev gettext-dev ffmpeg-dev"
+install=
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://www.cherokee-project.com/download/0.99/${pkgver}/${pkgname}-${pkgver}.tar.gz
+ cherokee.initd
+ cherokee.confd
+ "
+
+_builddir="$srcdir"/$pkgname-$pkgver
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --with-wwwroot=/var/www
+ make || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="$pkgdir" install
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="388affc0636aca802ec46cea4ebb8d08 cherokee-0.99.41.tar.gz
+4180dbb6701f928054079aa1e3bd5ebc cherokee.initd
+bd6a840f72c630ce1eaabe058097584f cherokee.confd"
diff --git a/testing/cherokee/cherokee.confd b/testing/cherokee/cherokee.confd
new file mode 100644
index 00000000..8f719df3
--- /dev/null
+++ b/testing/cherokee/cherokee.confd
@@ -0,0 +1,10 @@
+# Sample conf.d file for alpine linux
+
+#
+# Specify daemon $OPTS here.
+#
+
+OPTS="-d"
+DAEMON_USER="root"
+DAEMON_GROUP="root"
+
diff --git a/testing/cherokee/cherokee.initd b/testing/cherokee/cherokee.initd
new file mode 100755
index 00000000..6aed337b
--- /dev/null
+++ b/testing/cherokee/cherokee.initd
@@ -0,0 +1,41 @@
+#!/sbin/runscript
+
+# Cherokee init.d file for alpine linux.
+
+NAME=cherokee
+DAEMON=/usr/sbin/$NAME
+DAEMON_USER=${DAEMON_USER:-root}
+DAEMON_GROUP=${DAEMON_GROUP:-root}
+
+depend() {
+ need net
+}
+
+start() {
+ ebegin "Starting ${NAME}"
+ start-stop-daemon --start --quiet \
+ --pidfile /var/run/${NAME}.pid \
+ --chuid ${DAEMON_USER}:${DAEMON_GROUP} \
+ --exec ${DAEMON} -- ${OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${NAME}"
+ start-stop-daemon --stop --quiet \
+ --exec ${DAEMON} \
+ --pidfile /var/run/${NAME}.pid
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading ${NAME}"
+ if ! service_started "${NAME}" ; then
+ eend 1 "${NAME} is not started"
+ return 1
+ fi
+ start-stop-daemon --stop --oknodo --signal HUP \
+ --exec ${DAEMON} --pidfile /var/run/${NAME}.pid
+ eend $?
+}
+
diff --git a/testing/collectd/APKBUILD b/testing/collectd/APKBUILD
new file mode 100644
index 00000000..e145a79f
--- /dev/null
+++ b/testing/collectd/APKBUILD
@@ -0,0 +1,79 @@
+# Contributor:
+# Maintainer:
+pkgname=collectd
+pkgver=4.9.1
+pkgrel=0
+pkgdesc="The system statistics collection daemon"
+url="http://collectd.org"
+license="GPL"
+depends=
+makedepends="pkgconfig curl-dev net-snmp-dev postgresql-dev perl-dev
+ libgcrypt-dev mysql-dev zlib-dev"
+install=
+subpackages="$pkgname-dev $pkgname-doc $pkgname-perl $pkgname-snmp $pkgname-curl
+ $pkgname-write_http $pkgname-nginx $pkgname-apache $pkgname-postgresql
+ $pkgname-mysql $pkgname-network"
+
+source="http://collectd.org/files/collectd-$pkgver.tar.bz2"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ cd "$_builddir"
+
+ # we need -lm
+ sed -i -e 's/^collectd_LDADD = \(.*\)/collectd_LDADD = -lm \1/' \
+ -e 's/^collectd_nagios_LDADD = \(.*\)/collectd_nagios_LDADD = -lm \1/' src/Makefile.in
+
+ # disable -Werror
+ sed -i -e 's/-Werror//' src/owniptc/Makefile.in
+
+}
+
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ || return 1
+ make || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="$pkgdir" install
+
+ find "$pkgdir" -name perllocal.pod -delete
+ # remove the 2 lines below (and this) if there is no init.d script
+ # install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ # install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+perl() {
+ pkgdesc="perl bindings to collectd"
+ depends="perl"
+ install -d "$subpkgdir"/usr/lib/ "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/lib/perl* "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/share/perl* "$subpkgdir"/usr/share/
+}
+
+_plugin() {
+ local mod=$1
+ local desc=${2:-$mod}
+ pkgdesc="$desc pluin for collectd"
+ depends="collectd"
+ install -d "$subpkgdir"/usr/lib/collectd
+ mv "$pkgdir"/usr/lib/collectd/$mod.so "$subpkgdir"/usr/lib/collectd/
+}
+
+snmp() { _plugin snmp; }
+curl() { _plugin curl; }
+write_http() { _plugin write_http; }
+nginx() { _plugin nginx; }
+apache() { _plugin apache; }
+postgresql() { _plugin postgresql; }
+mysql() { _plugin mysql; }
+network() { _plugin network; }
+
+md5sums="5753496651c8c84afaea1fe290876bfc collectd-4.9.1.tar.bz2"
diff --git a/testing/coova-chilli/APKBUILD b/testing/coova-chilli/APKBUILD
new file mode 100644
index 00000000..256475ba
--- /dev/null
+++ b/testing/coova-chilli/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: grharry
+# Maintainer:
+
+# TODO: fix init.d script
+
+pkgname=coova-chilli
+pkgver=1.0.14
+pkgrel=0
+pkgdesc="CoovaChilli is an open source access controller for wireless LAN"
+url="http://www.coova.org/"
+license="GPL"
+depends=
+makedepends="perl openssl-dev autoconf automake libtool"
+install= #"coova-chilli.install"
+subpackages="$pkgname-doc $pkgname-dev"
+source="http://ap.coova.org/chilli/coova-chilli-$pkgver.tar.gz
+ coova-chilli-ssl.patch
+ "
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ patch -p1 -i ../coova-chilli-ssl.patch || return 1
+ aclocal && autoconf && automake && libtoolize || return 1
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var/run \
+ --libdir=/usr/lib \
+ --sysconfdir=/etc \
+ --with-openssl
+ make -j1 || return 1
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="88774ec55f9943d174ea7dd26e85fd8a coova-chilli-1.0.14.tar.gz
+e4e94b06540c10caa750a590f3ec9ec6 coova-chilli-ssl.patch"
diff --git a/testing/coova-chilli/coova-chilli-ssl.patch b/testing/coova-chilli/coova-chilli-ssl.patch
new file mode 100644
index 00000000..618b90a6
--- /dev/null
+++ b/testing/coova-chilli/coova-chilli-ssl.patch
@@ -0,0 +1,17 @@
+diff -ru a/src/Makefile.am b/src/Makefile.am
+--- a/src/Makefile.am 2009-10-15 09:15:00.000000000 +0000
++++ b/src/Makefile.am 2009-10-15 09:17:20.000000000 +0000
+@@ -20,6 +20,7 @@
+ chilli.h options.h util.c garden.c garden.h \
+ dns.c dns.h session.c session.h limits.h pkt.h pkt.c \
+ chksum.c net.h net.c ms_chap.c options.c
++libchilli_la_LIBADD = $(LIBOPENSSL)
+
+ # AM_LDFLAGS = -lchilli
+
+@@ -32,4 +33,4 @@
+ chilli_dog_SOURCES = main-dog.c
+ #test_radius_SOURCES = test-radius.c
+
+-LDADD = libchilli.la $(top_builddir)/bstring/libbstring.la
++LDADD = libchilli.la $(top_builddir)/bstring/libbstring.la $(LIBOPENSSL)
diff --git a/testing/cryptsetup/APKBUILD b/testing/cryptsetup/APKBUILD
new file mode 100644
index 00000000..4d7d4c98
--- /dev/null
+++ b/testing/cryptsetup/APKBUILD
@@ -0,0 +1,24 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=cryptsetup
+pkgver=1.0.7
+pkgrel=0
+pkgdesc="Userspace setup tool for transparent encryption of block devices using the Linux 2.6 cryptoapi"
+url="http://code.google.com/p/cryptsetup/"
+license="GPL"
+depends=
+makedepends="lvm2-dev libgcrypt-dev popt-dev util-linux-ng-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://$pkgname.googlecode.com/files/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --disable-static
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install
+}
+md5sums="5eea2a77391a8a1a651b31cbaef59e22 cryptsetup-1.0.7.tar.bz2"
diff --git a/testing/daemontools/0.76-errno.patch b/testing/daemontools/0.76-errno.patch
new file mode 100644
index 00000000..3af157c4
--- /dev/null
+++ b/testing/daemontools/0.76-errno.patch
@@ -0,0 +1,11 @@
+--- src/error.h 2001-07-12 11:49:49.000000000 -0500
++++ src/error.h 2003-02-26 02:14:06.000000000 -0600
+@@ -3,7 +3,7 @@
+ #ifndef ERROR_H
+ #define ERROR_H
+
+-extern int errno;
++#include <errno.h>
+
+ extern int error_intr;
+ extern int error_nomem;
diff --git a/testing/daemontools/0.76-warnings.patch b/testing/daemontools/0.76-warnings.patch
new file mode 100644
index 00000000..f558bb18
--- /dev/null
+++ b/testing/daemontools/0.76-warnings.patch
@@ -0,0 +1,74 @@
+Fixup misc warnings
+
+Patch by RiverRat
+
+http://bugs.gentoo.org/124487
+
+--- src/chkshsgr.c
++++ src/chkshsgr.c
+@@ -1,10 +1,13 @@
+ /* Public domain. */
+
++#include <sys/types.h>
++#include <stdlib.h>
++#include <grp.h>
+ #include <unistd.h>
+
+ int main()
+ {
+- short x[4];
++ gid_t x[4];
+
+ x[0] = x[1] = 0;
+ if (getgroups(1,x) == 0) if (setgroups(1,x) == -1) _exit(1);
+--- src/matchtest.c
++++ src/matchtest.c
+@@ -1,3 +1,4 @@
++#include <unistd.h>
+ #include "match.h"
+ #include "buffer.h"
+ #include "str.h"
+--- src/multilog.c
++++ src/multilog.c
+@@ -1,3 +1,4 @@
++#include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+--- src/prot.c
++++ src/prot.c
+@@ -1,5 +1,8 @@
+ /* Public domain. */
+
++#include <sys/types.h>
++#include <unistd.h>
++#include <grp.h>
+ #include "hasshsgr.h"
+ #include "prot.h"
+
+--- src/seek_set.c
++++ src/seek_set.c
+@@ -1,6 +1,7 @@
+ /* Public domain. */
+
+ #include <sys/types.h>
++#include <unistd.h>
+ #include "seek.h"
+
+ #define SET 0 /* sigh */
+--- src/supervise.c
++++ src/supervise.c
+@@ -1,3 +1,4 @@
++#include <stdio.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+--- src/pathexec_run.c
++++ src/pathexec_run.c
+@@ -1,5 +1,6 @@
+ /* Public domain. */
+
++#include <unistd.h>
+ #include "error.h"
+ #include "stralloc.h"
+ #include "str.h"
diff --git a/testing/daemontools/APKBUILD b/testing/daemontools/APKBUILD
new file mode 100644
index 00000000..98bf9952
--- /dev/null
+++ b/testing/daemontools/APKBUILD
@@ -0,0 +1,48 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=daemontools
+pkgver=0.76
+pkgrel=0
+pkgdesc="Collection of tools for managing UNIX services"
+url="http://cr.yp.to/daemontools.html"
+license="public-domain"
+depends=
+# The makefile need GNU cat for 'cat -v'
+makedepends="coreutils"
+
+source="http://cr.yp.to/daemontools/$pkgname-$pkgver.tar.gz
+ 0.76-errno.patch
+ 0.76-warnings.patch
+ svscan.initd
+ "
+
+_builddir="$srcdir"/admin/$pkgname-$pkgver/src
+
+prepare() {
+ cd "$_builddir"
+ for i in "$srcdir"/*.patch; do
+ msg "Applying $i"
+ patch -p1 -i $i || return 1
+ done
+}
+
+build() {
+ cd "$_builddir"
+ echo "${CC:-"gcc"} ${CFLAGS}" > conf-cc
+ echo "${CC:-"gcc"} ${LDFLAGS}" > conf-ld
+ touch > home
+ make PATH="/usr/bin:/bin" || return 1
+}
+
+package() {
+ cd "$_builddir"
+ mkdir -p "$pkgdir"/usr/bin "$pkgdir"/service
+ for f in $(cat ../package/commands); do
+ cp $f "$pkgdir"/usr/bin/$f
+ done
+ install -Dm755 "$srcdir"/svscan.initd "$pkgdir"/etc/init.d/svscan
+}
+
+md5sums="1871af2453d6e464034968a0fbcb2bfc daemontools-0.76.tar.gz
+c75438b1c3b9d9f67691bd10cf3c8e52 0.76-errno.patch
+ad68177f50bfffb6a1cbf8c668de6a55 0.76-warnings.patch
+c6e4ace205400be062d3ba82315cbcd1 svscan.initd"
diff --git a/testing/daemontools/svscan.initd b/testing/daemontools/svscan.initd
new file mode 100644
index 00000000..bf7af28f
--- /dev/null
+++ b/testing/daemontools/svscan.initd
@@ -0,0 +1,33 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-process/daemontools/files/svscan.init-0.76-r7,v 1.1 2008/12/07 06:59:37 robbat2 Exp $
+
+depend() {
+ use net
+ before ntpd ntp-client spamd apache apache2
+ after firewall
+}
+
+start() {
+ ebegin "Starting service scan"
+ setsid start-stop-daemon --start --exec /usr/bin/svscan \
+ --background --make-pidfile \
+ --pidfile /var/run/svscan.pid -- /service
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping service scan"
+ start-stop-daemon --stop --exec /usr/bin/svscan \
+ --pidfile /var/run/svscan.pid
+ eend $?
+
+ ebegin "Stopping service scan services"
+ svc -dx /service/* 2>/dev/null
+ eend $?
+
+ ebegin "Stopping service scan logging"
+ svc -dx /service/*/log 2>/dev/null
+ eend $?
+}
diff --git a/testing/dspam/0001-Support-for-parallell-builds.patch b/testing/dspam/0001-Support-for-parallell-builds.patch
new file mode 100644
index 00000000..7044d5f6
--- /dev/null
+++ b/testing/dspam/0001-Support-for-parallell-builds.patch
@@ -0,0 +1,77 @@
+From 80f81670323a09025ffb7d030be56e47aec5492c Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Wed, 6 Jan 2010 12:34:15 +0000
+Subject: [PATCH] Support for parallell builds
+
+---
+ src/Makefile.am | 12 +++++++-----
+ 1 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 6e8a774..49d6b16 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -134,7 +134,7 @@ libmysql_drv_la_LIBADD = $(libmysql_drv_libs) -L. -ldspam
+ libmysql_drv_la_CPPFLAGS = $(libmysql_drv_cppflags)
+ libmysql_drv_la_LDFLAGS = $(libmysql_drv_ldflags)
+ libmysql_drv_la_LDFLAGS += -rpath '$(pkglibdir)' -version-info $(libversion)
+-libmysql_drv_la_DEPENDENCIES =
++libmysql_drv_la_DEPENDENCIES = libdspam.la
+
+ libpgsql_drv_la_SOURCES = \
+ pgsql_drv.c pgsql_drv.h
+@@ -142,7 +142,7 @@ libpgsql_drv_la_LIBADD = $(libpgsql_drv_libs) -L. -ldspam
+ libpgsql_drv_la_CPPFLAGS = $(libpgsql_drv_cppflags)
+ libpgsql_drv_la_LDFLAGS = $(libpgsql_drv_ldflags)
+ libpgsql_drv_la_LDFLAGS += -rpath '$(pkglibdir)' -version-info $(libversion)
+-libpgsql_drv_la_DEPENDENCIES =
++libpgsql_drv_la_DEPENDENCIES = libdspam.la
+
+ libsqlite_drv_la_SOURCES = \
+ sqlite_drv.c sqlite_drv.h
+@@ -150,7 +150,7 @@ libsqlite_drv_la_LIBADD = $(libsqlite_drv_libs) -L. -ldspam
+ libsqlite_drv_la_CPPFLAGS = $(libsqlite_drv_cppflags)
+ libsqlite_drv_la_LDFLAGS = $(libsqlite_drv_ldflags)
+ libsqlite_drv_la_LDFLAGS += -rpath '$(pkglibdir)' -version-info $(libversion)
+-libsqlite_drv_la_DEPENDENCIES =
++libsqlite_drv_la_DEPENDENCIES = libdspam.la
+
+ libsqlite3_drv_la_SOURCES = \
+ sqlite3_drv.c sqlite3_drv.h
+@@ -158,7 +158,7 @@ libsqlite3_drv_la_LIBADD = $(libsqlite3_drv_libs) -L. -ldspam
+ libsqlite3_drv_la_CPPFLAGS = $(libsqlite3_drv_cppflags)
+ libsqlite3_drv_la_LDFLAGS = $(libsqlite3_drv_ldflags)
+ libsqlite3_drv_la_LDFLAGS += -rpath '$(pkglibdir)' -version-info $(libversion)
+-libsqlite3_drv_la_DEPENDENCIES =
++libsqlite3_drv_la_DEPENDENCIES = libdspam.la
+
+ libhash_drv_la_SOURCES = \
+ hash_drv.c hash_drv.h
+@@ -166,7 +166,7 @@ libhash_drv_la_LIBADD = $(libhash_drv_libs) -L. -ldspam
+ libhash_drv_la_CPPFLAGS = $(libhash_drv_cppflags)
+ libhash_drv_la_LDFLAGS = $(libhash_drv_ldflags)
+ libhash_drv_la_LDFLAGS += -rpath '$(pkglibdir)' -version-info $(libversion)
+-libhash_drv_la_DEPENDENCIES =
++libhash_drv_la_DEPENDENCIES = libdspam.la
+
+ endif
+
+@@ -181,6 +181,7 @@ dspam_SOURCES = \
+ agent_shared.c agent_shared.h
+
+ dspam_LDADD = -lm pref.o libdspam.la
++dspam_DEPENDENCIES = pref.o libdspam.la
+
+ dspamc_SOURCES = \
+ config.h language.h \
+@@ -192,6 +193,7 @@ dspamc_SOURCES = \
+
+ dspamc_LDADD = -lm buffer.o config_shared.o error.o read_config.o pref.o nodetree.o util.o $(NETLIBS)
+ dspamc_LDFLAGS =
++dspamc_DEPENDENCIES = buffer.o config_shared.o error.o read_config.o pref.o nodetree.o util.o
+
+ # Failing of chgrp is expected and normal case when someone do
+ # make install DESTDIR=...
+--
+1.6.6
+
diff --git a/testing/dspam/APKBUILD b/testing/dspam/APKBUILD
new file mode 100644
index 00000000..1d049cfb
--- /dev/null
+++ b/testing/dspam/APKBUILD
@@ -0,0 +1,78 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=dspam
+pkgver=3.9.0_rc2
+_ver=3.9.0-RC2
+pkgrel=0
+pkgdesc="A statistical-algorithmic hybrid anti-spam filter"
+url="http://dspam.nuclearelephant.com/"
+pkgusers="dspam"
+pkggroups="dspam"
+license="GPL-2"
+depends=
+install="$pkgname.pre-install"
+makedepends="postgresql-dev sqlite-dev mysql-dev autoconf automake libtool"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-pgsql $pkgname-mysql
+ $pkgname-sqlite"
+
+install= #dspam.install
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$_ver.tar.gz
+ 0001-Support-for-parallell-builds.patch
+ dspam.logrotate
+ dspam.initd"
+
+
+prepare() {
+ cd "$srcdir"/$pkgname-$_ver
+ for i in "$srcdir"/*.patch; do
+ [ -f "$i" ] || continue
+ msg "Applying $i"
+ patch -p1 -i "$i" || return 1
+ done
+ aclocal -I m4 && libtoolize && autoconf && automake
+}
+
+build() {
+ cd "$srcdir"/$pkgname-$_ver
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/dspam \
+ --with-dspam-home=/var/lib/dspam \
+ --enable-virtual-users \
+ --enable-preferences-extension \
+ --enable-daemon \
+ --with-storage-driver="hash_drv,sqlite3_drv,pgsql_drv,mysql_drv" \
+ --with-mysql-includes=/usr/include/mysql \
+ --with-mysql-libraries=/usr/lib/mysql \
+ || return 1
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$_ver
+ make install DESTDIR="$pkgdir"
+ install -Dm755 "$srcdir"/dspam.initd "$pkgdir"/etc/init.d/dspam
+ install -Dm644 "$srcdir"/dspam.logrotate "$pkgdir"/etc/logrotate.d/dspam
+
+}
+
+pgsql() {
+ pkgdesc="dspam postgresql driver"
+ install -d "$subpkgdir"/usr/lib/dspam
+ mv "$pkgdir"/usr/lib/dspam/*pgsql* "$subpkgdir"/usr/lib/dspam/
+}
+
+mysql() {
+ pkgdesc="dspam mysql driver"
+ install -d "$subpkgdir"/usr/lib/dspam
+ mv "$pkgdir"/usr/lib/dspam/*mysql* "$subpkgdir"/usr/lib/dspam/
+}
+
+sqlite() {
+ pkgdesc="dspam sqlite driver"
+ install -d "$subpkgdir"/usr/lib/dspam
+ mv "$pkgdir"/usr/lib/dspam/*sqlite* "$subpkgdir"/usr/lib/dspam/
+}
+
+md5sums="013dc6700f7c5a757b7a656626b36248 dspam-3.9.0-RC2.tar.gz
+0f9f6b32cab7b8e3ad342daad119535d 0001-Support-for-parallell-builds.patch
+a798e9a6e2d5c30724f84d004bb96339 dspam.logrotate
+7d1fb0820f4a23f593f22186ef77d02a dspam.initd"
diff --git a/testing/dspam/dspam.initd b/testing/dspam/dspam.initd
new file mode 100644
index 00000000..d91fefeb
--- /dev/null
+++ b/testing/dspam/dspam.initd
@@ -0,0 +1,46 @@
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/mail-filter/dspam/files/dspam.rc,v 1.1 2005/03/21 00:10:30 st_lim Exp $
+
+conf=/etc/dspam/dspam.conf
+
+depend() {
+ use logger
+ need net
+ before mta
+ after pg_autovacuum postgresql mysql
+}
+
+checkconfig() {
+ if [ ! -f "$conf" ]
+ then
+ eerror "You need a DSPAM configuration in $conf"
+ return 1
+ fi
+ if (! grep -q "^ServerPID" $conf); then
+ eerror "ServerPID missing in DSPAM configuration $conf"
+ return 1
+ fi
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting DSPAM"
+ start-stop-daemon --start --quiet --background \
+ --exec /usr/bin/dspam -- --daemon
+ eend ${?}
+}
+
+stop() {
+ checkconfig || return 1
+
+ local DSPAM_PID="$(grep "^ServerPID" $conf)"
+ DSPAM_PID="${DSPAM_PID/ServerPID/}"
+
+ ebegin "Stopping DSPAM"
+ start-stop-daemon --stop --quiet --pidfile ${DSPAM_PID}
+ eend ${?}
+}
+
diff --git a/testing/dspam/dspam.logrotate b/testing/dspam/dspam.logrotate
new file mode 100644
index 00000000..1fb3e04c
--- /dev/null
+++ b/testing/dspam/dspam.logrotate
@@ -0,0 +1,6 @@
+/var/log/dspam/sql.errors /var/log/dspam/dspam.log /var/log/dspam/dspam.debug /var/log/dspam/dspam.messages {
+ weekly
+ compress
+ missingok
+ copytruncate
+}
diff --git a/testing/dspam/dspam.pre-install b/testing/dspam/dspam.pre-install
new file mode 100644
index 00000000..9a6cc6f1
--- /dev/null
+++ b/testing/dspam/dspam.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+adduser -h /var/lib/dspam -s /bin/false -D dspam 2>/dev/null
+chown dspam:dspam /var/lib/dspam
+exit 0
+
diff --git a/testing/ebtables/0001-link-with-gcc.patch b/testing/ebtables/0001-link-with-gcc.patch
new file mode 100644
index 00000000..88aba09f
--- /dev/null
+++ b/testing/ebtables/0001-link-with-gcc.patch
@@ -0,0 +1,25 @@
+--- a/Makefile Sun Jun 21 13:13:25 2009
++++ b/Makefile Wed Oct 28 02:42:43 2009
+@@ -85,7 +85,7 @@
+
+ .PHONY: libebtc
+ libebtc: $(OBJECTS2)
+- $(LD) -shared -soname libebtc.so -o libebtc.so -lc $(OBJECTS2)
++ $(CC) -shared -Wl,-soname,libebtc.so -o libebtc.so -lc $(OBJECTS2)
+
+ ebtables: $(OBJECTS) ebtables-standalone.o libebtc
+ $(CC) $(CFLAGS) $(CFLAGS_SH_LIB) -o $@ ebtables-standalone.o -I$(KERNEL_INCLUDES) -L. -Lextensions -lebtc $(EXT_LIBSI) \
+@@ -153,10 +153,13 @@
+ tmp3:=$(shell printf $(PIPE) | sed 's/\//\\\//g')
+ .PHONY: scripts
+ scripts: ebtables-save ebtables.sysv ebtables-config
++ mkdir -p $(DESTDIR)$(BINDIR)
+ cat ebtables-save | sed 's/__EXEC_PATH__/$(tmp1)/g' > ebtables-save_
+ install -m 0755 -o root -g root ebtables-save_ $(DESTDIR)$(BINDIR)/ebtables-save
++ mkdir -p $(DESTDIR)$(INITDIR)
+ cat ebtables.sysv | sed 's/__EXEC_PATH__/$(tmp1)/g' | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables.sysv_
+ install -m 0755 -o root -g root ebtables.sysv_ $(DESTDIR)$(INITDIR)/ebtables
++ mkdir -p $(DESTDIR)$(SYSCONFIGDIR)
+ cat ebtables-config | sed 's/__SYSCONFIG__/$(tmp2)/g' > ebtables-config_
+ install -m 0600 -o root -g root ebtables-config_ $(DESTDIR)$(SYSCONFIGDIR)/ebtables-config
+ rm -f ebtables-save_ ebtables.sysv_ ebtables-config_
diff --git a/testing/ebtables/APKBUILD b/testing/ebtables/APKBUILD
new file mode 100644
index 00000000..4bdc882e
--- /dev/null
+++ b/testing/ebtables/APKBUILD
@@ -0,0 +1,58 @@
+# Contributor: Andrew Manison <amanison@anselsystems.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=ebtables
+pkgver=2.0.9.1
+_realver=v2.0.9-1
+pkgrel=0
+pkgdesc="Ethernet bridge tables - Linux Ethernet filter for the Linux bridge."
+url="http://ebtables.sourceforge.net/"
+license="GPL"
+depends=
+makedepends=
+install=
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$_realver.tar.gz
+ 0001-link-with-gcc.patch
+ ebtables.initd
+ ebtables.confd"
+
+prepare() {
+ cd "$srcdir"/$pkgname-$_realver
+ # patches
+ for i in ../*.patch; do
+ msg "Applying $i"
+ if ! patch --verbose -p1 -i $i; then
+ error "$i failed"
+ return 1
+ fi
+ done
+
+ sed -i -e "s,^MANDIR:=.*,MANDIR:=/usr/share/man," \
+ -e "s,^BINDIR:=.*,BINDIR:=/sbin," \
+ -e "s,^INITDIR:=.*,INITDIR:=/usr/share/doc/ebtables," \
+ -e "s,^SYSCONFIGDIR:=.*,SYSCONFIGDIR:=/usr/share/doc/ebtables,"\
+ -e "s,^LIBDIR:=.*,LIBDIR:=/usr/lib/\$(PROGNAME)," \
+ -e "s/^CFLAGS:=/CFLAGS+=/" \
+ -e "s,^CC:=,CC?=," Makefile
+}
+
+build() {
+ cd "$srcdir"/$pkgname-$_realver
+
+ # This package uses _init functions to initialise extensions. With
+ # --as-needed this will not work.
+ export LDFLAGS="$LDFLAGS -Wl,--no-as-needed"
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$_realver
+ make DESTDIR="$pkgdir" install
+ install -D -m755 ../ebtables.initd "$pkgdir"/etc/init.d/ebtables
+ install -D -m644 ../ebtables.initd "$pkgdir"/etc/conf.d/ebtables
+}
+
+md5sums="0e0c20adf2bba6d91dbd0b74a1a38c33 ebtables-v2.0.9-1.tar.gz
+91a565a5906dc1fd4103f03c6a88e0e1 0001-link-with-gcc.patch
+92e13b3bc1d47d7c00636ebb78c905d5 ebtables.initd
+285089ba2d846e72e321a12e3da3cc96 ebtables.confd"
diff --git a/testing/ebtables/ebtables.confd b/testing/ebtables/ebtables.confd
new file mode 100644
index 00000000..db46ffb5
--- /dev/null
+++ b/testing/ebtables/ebtables.confd
@@ -0,0 +1,15 @@
+# /etc/conf.d/ebtables
+
+# Location in which ebtables initscript will save set rules on
+# service shutdown
+EBTABLES_SAVE="/var/lib/ebtables/rules-save"
+
+# Options to pass to ebtables-save and ebtables-restore
+SAVE_RESTORE_OPTIONS=""
+
+# Save state on stopping ebtables
+SAVE_ON_STOP="yes"
+
+# Tables to be saved and restored. If you have built ebtables as modules, you
+# may leave it blank. Otherwise, you MUST define which to control.
+TABLE_NAMES="filter nat broute"
diff --git a/testing/ebtables/ebtables.initd b/testing/ebtables/ebtables.initd
new file mode 100644
index 00000000..27c743c9
--- /dev/null
+++ b/testing/ebtables/ebtables.initd
@@ -0,0 +1,97 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-firewall/ebtables/files/ebtables.initd,v 1.2 2007/09/28 19:22:14 pva Exp $
+
+opts="save reload panic"
+
+ebtables_bin="/sbin/ebtables"
+ebtables_save=${EBTABLES_SAVE}
+ebtables_tables=$(grep -E '^ebtable_' /proc/modules | cut -f1 -d' ' | sed s/ebtable_//)
+if [ "$ebtables_tables" == "" ] ; then
+ ebtables_tables=${TABLE_NAMES}
+fi
+
+depend() {
+ before net
+ use logger
+}
+
+set_table_policy() {
+ local chains table=$1 policy=$2
+ case ${table} in
+ nat) chains="PREROUTING POSTROUTING OUTPUT";;
+ broute) chains="BROUTING";;
+ filter) chains="INPUT FORWARD OUTPUT";;
+ *) chains="";;
+ esac
+ local chain
+ for chain in ${chains} ; do
+ ${ebtables_bin} -t ${table} -P ${chain} ${policy}
+ done
+}
+
+checkconfig() {
+ if [ ! -f ${ebtables_save} ] ; then
+ eerror "Not starting ebtables. First create some rules then run:"
+ eerror "/etc/init.d/ebtables save"
+ return 1
+ fi
+ return 0
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Loading ebtables state and starting bridge firewall"
+ ${ebtables_bin}-restore ${SAVE_RESTORE_OPTIONS} < "${ebtables_save}"
+ eend $?
+}
+
+stop() {
+ if [ "${SAVE_ON_STOP}" = "yes" ] ; then
+ save || return 1
+ fi
+ ebegin "Stopping bridge firewall"
+ local a
+ for a in ${ebtables_tables}; do
+ set_table_policy $a ACCEPT
+
+ ${ebtables_bin} -t $a -F
+ ${ebtables_bin} -t $a -X
+ done
+ eend $?
+}
+
+reload() {
+ ebegin "Flushing bridge firewall"
+ local a
+ for a in ${ebtables_tables}; do
+ ${ebtables_bin} -t $a -F
+ ${ebtables_bin} -t $a -X
+ done
+ eend $?
+
+ start
+}
+
+save() {
+ ebegin "Saving ebtables state"
+ touch "${ebtables_save}"
+ chmod 0600 "${ebtables_save}"
+ ${ebtables_bin}-save ${ebtables_tables} ${SAVE_RESTORE_OPTIONS} > "${ebtables_save}"
+ eend $?
+}
+
+panic() {
+ service_started ebtables && svc_stop
+
+ local a
+ ebegin "Dropping all packets forwarded on bridges"
+ for a in ${ebtables_tables}; do
+ ${ebtables_bin} -t $a -F
+ ${ebtables_bin} -t $a -X
+
+ set_table_policy $a DROP
+ done
+ eend $?
+}
diff --git a/testing/ferm/APKBUILD b/testing/ferm/APKBUILD
new file mode 100644
index 00000000..b6710399
--- /dev/null
+++ b/testing/ferm/APKBUILD
@@ -0,0 +1,22 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=ferm
+pkgver=2.0.5
+pkgrel=0
+pkgdesc="firewall configuration tool"
+url="http://ferm.foo-projects.org/"
+license="GPL"
+depends="perl iptables"
+makedepends=""
+install=
+subpackages=""
+source="http://ferm.foo-projects.org/download/2.0/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ install -m755 -D "$srcdir"/"$pkgname-$pkgver"/src/ferm "$pkgdir"/usr/sbin/"$pkgname"
+ install -m755 -D "$srcdir"/"$pkgname-$pkgver"/src/import-ferm "$pkgdir"/usr/sbin/import-ferm
+}
+
+md5sums="e77db05360877299cb6fa8c5b51a5e77 ferm-2.0.5.tar.gz"
diff --git a/testing/fetch-crl/APKBUILD b/testing/fetch-crl/APKBUILD
new file mode 100644
index 00000000..cd4f18c1
--- /dev/null
+++ b/testing/fetch-crl/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=fetch-crl
+pkgver=2.7.0
+pkgrel=1
+pkgdesc="Tool to keep Certificate Revocation Lists (CRLs) up-to-date"
+url="http://dist.eugridpma.info/distribution/util/fetch-crl/"
+license="custom"
+subpackages="$pkgname-doc"
+source="
+ http://dist.eugridpma.info/distribution/util/$pkgname/$pkgname-$pkgver.tar.gz
+ $pkgname-2.7.0-bb-wget.patch
+ "
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ sed -i -e 's:etc/sysconfig:etc/fetch-crl:g' \
+ edg-fetch-crl fetch-crl.cron fetch-crl.8
+ sed -i -e 's:bin/bash:bin/sh:' fetch-crl.cron
+ patch -p1 -i "$srcdir"/$pkgname-2.7.0-bb-wget.patch || return 1
+
+
+ _r=$pkgname-$pkgver
+ install -m755 -D edg-fetch-crl "$pkgdir"/usr/sbin/fetch-crl
+ install -m644 -D fetch-crl.sysconfig "$pkgdir"/etc/fetch-crl/fetch-crl
+
+ install -m644 -D fetch-crl.8 "$pkgdir"/usr/share/man/man8/fetch-crl.8
+ install -m644 -D README "$pkgdir"/usr/share/doc/$_r/README
+ install -m644 -D CHANGES "$pkgdir"/usr/share/doc/$_r/CHANGES
+ install -m755 -D fetch-crl.cron "$pkgdir"/usr/share/doc/$_r/fetch-crl.periodic
+}
+
+md5sums="6b0ba042ac3d155f1cd9c7b0baf3c708 fetch-crl-2.7.0.tar.gz
+613e4987db52cbd231cd4d7a46070d74 fetch-crl-2.7.0-bb-wget.patch"
diff --git a/testing/fetch-crl/fetch-crl-2.7.0-bb-wget.patch b/testing/fetch-crl/fetch-crl-2.7.0-bb-wget.patch
new file mode 100644
index 00000000..48fa7457
--- /dev/null
+++ b/testing/fetch-crl/fetch-crl-2.7.0-bb-wget.patch
@@ -0,0 +1,41 @@
+--- fetch-crl-2.7.0/edg-fetch-crl.orig 2009-02-26 08:54:17 +0000
++++ fetch-crl-2.7.0/edg-fetch-crl 2009-02-26 09:20:27 +0000
+@@ -94,8 +94,8 @@
+ allWarnings=no # warnings follow verbosity
+
+ # get defaults
+-WGET_RETRIES=2
+-WGET_TIMEOUT=10
++#WGET_RETRIES=2
++#WGET_TIMEOUT=10
+ FETCH_CRL_SYSCONFIG="${FETCH_CRL_SYSCONFIG:-/etc/fetch-crl/fetch-crl}"
+
+ # specific work-around for incidental filesystem corruption
+@@ -149,7 +149,15 @@
+ fi
+
+ # add the other default arguments
+- wgetOptions="${wgetOptions} -t $WGET_RETRIES -T $WGET_TIMEOUT "
++ if [ -n "$WGET_RETRIES" ]; then
++ wgetOptions="${wgetOptions} -t $WGET_RETRIES "
++ fi
++ if [ -n "$WGET_TIMEOUT" ]; then
++ wgetOptions="${wgetOptions} -T $WGET_TIMEOUT "
++ fi
++ if [ -n "$WGET_TIMESTAMPING" ] && [ "$WGET_TIMESTAMPING" != "no" ]; then
++ wgetOptions="${wgetOptions} -N "
++ fi
+
+ # only add "-q" if the extra options do not have a -v. They are exclusive
+ expr match "${wgetAdditionalOptions}" '.*-v' >/dev/null 2>&1
+@@ -175,8 +183,8 @@
+ ${rm} -f "${cacheDirectory}/${hash}/pre"
+ ${cp} "${cacheDirectory}/${hash}/"* \
+ "${cacheDirectory}/${hash}/pre" >/dev/null 2>&1
+- PrintDebug ${wget} ${wgetOptions} -N -P "${cacheDirectory}/${hash}" "${url}"
+- ${wget} ${wgetOptions} -N -P "${cacheDirectory}/${hash}" "${url}"
++ PrintDebug ${wget} ${wgetOptions} -P "${cacheDirectory}/${hash}" "${url}"
++ ${wget} ${wgetOptions} -P "${cacheDirectory}/${hash}" "${url}"
+ rc=$?
+ if [ $rc -ne 0 ]; then
+ PrintWarning "RetrieveFileByURL: wget download error $rc for ${url}"
diff --git a/testing/fprobe/APKBUILD b/testing/fprobe/APKBUILD
new file mode 100644
index 00000000..ea6faea2
--- /dev/null
+++ b/testing/fprobe/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=fprobe
+pkgver=1.1
+pkgrel=1
+pkgdesc="libpcap-based tool that collect network traffic"
+url="http://fprobe.sourceforge.net/"
+license="GPL"
+depends=
+makedepends="libpcap-dev"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
+$pkgname.initd
+$pkgname.confd"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="65850d0470078269b33eee58cba77ac2 fprobe-1.1.tar.bz2
+41810a73503624de2c27809e34ed80b4 fprobe.initd
+ba9c9327456e4db897b60481705df282 fprobe.confd"
diff --git a/testing/fprobe/fprobe.confd b/testing/fprobe/fprobe.confd
new file mode 100644
index 00000000..1c444f55
--- /dev/null
+++ b/testing/fprobe/fprobe.confd
@@ -0,0 +1,70 @@
+# Config file for /etc/init.d/fprobe
+
+# Do we want the interface in promiscous mode [yes/no]
+#PROMISC=no
+
+# Interface
+IFACE=eth0
+
+# If configured, only capture packets matching this tcpdump expression
+#FILTER=""
+
+# Flow state timers
+#TIMER_EXPIRED=5
+#TIMER_FRAGMENTED=30
+#TIMER_IDLE=60
+#TIMER_ACTIVE=300
+
+# This is the default and should be left unless you know what you are doing
+#FLOW_VER=5
+
+# local ip. if configured fprobe will use this as the source IP for sending ALL flow data
+# If you want to specify a specific source address per collecter, customize it below
+#LOCALIP=
+
+# SNMP iface id
+SNMP_IFACE="${IFACE//eth}"
+
+# Maximum number of concurrent flows to track
+# using a specified amount of memory
+#MEMBULK=10000
+#MEMLIMIT=
+
+# Pending queue
+#PENDING=100
+
+# Kernel capture buffer size (kB)
+#KERNBUF=1024
+
+# Realtime priority [0=disabled, 1..99]
+#RTPRIO=0
+
+# Delay N nanoseconds after each B bytes
+#DELAY="0:0"
+
+# How much of the start of each packet to grab
+#SNAPLEN=256
+
+# chroot() to this location after startup
+CHROOT="/var/empty"
+
+# User to run as. must have perms to the pidfile directory /var/run/fprobe/
+USER=nobody
+
+# logging level for syslog (0=EMERG, ..., 6=INFO, 7=DEBUG)
+#LOGLEVEL=6
+
+# If you want to run multiple instances of fprobe,
+# You MUST set this variable to a unique INTEGER for each one!
+PIDFILE_ID=''
+
+# remote ip. this is where we send flows
+REMOTEIP=127.0.0.1
+# port to listen on
+PORT=2055
+# Collector type, see the manpage for valid types
+TYPE=''
+
+# If you want multiple collectors, just specify each one here
+COLLECTORS="${REMOTEIP}:${PORT}/${LOCALIP}/${TYPE}"
+
diff --git a/testing/fprobe/fprobe.initd b/testing/fprobe/fprobe.initd
new file mode 100644
index 00000000..a14f1e6b
--- /dev/null
+++ b/testing/fprobe/fprobe.initd
@@ -0,0 +1,40 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ need net
+ after firewall
+}
+
+BIN=/usr/sbin/fprobe
+PIDFILE_EXTRA=""
+[ -n "$PIDFILE_ID" ] && PIDFILE_EXTRA="[$PIDFILE_ID]"
+PIDFILE="/var/run/fprobe$PIDFILE_EXTRA.pid"
+
+start() {
+ ebegin "Starting fprobe"
+ local OPTS=""
+ [ "${PROMISC}" == "yes" ] || OPTS="${OPTS} -p"
+ [ -n "${FILTER}" ] && OPTS="${OPTS} -f '${FILTER}'"
+ for optname in i:IFACE s:TIMER_EXPIRED g:TIME_FRAGMENTED d:TIMER_IDLE \
+ e:TIMER_ACTIVE n:FLOW_VER a:LOCALIP x:SNMP_IFACE b:MEMBULK \
+ m:MEMLIMIT q:PENDING B:KERNBUF r:RTPRIO t:DELAY S:SNAPLEN \
+ c:CHROOT u:USER v:LOGLEVEL ; do
+ opt="${optname/:*}" optvar="${optname/*:}"
+ eval optvalue="\$$optvar"
+ [ -n "$optvalue" ] && OPTS="${OPTS} -${opt} ${optvalue}"
+ done
+ OPTS="${OPTS} -l 1:${PIDFILE_ID} ${COLLECTORS}"
+ start-stop-daemon --start --exec $BIN \
+ --pidfile ${PIDFILE} \
+ -- ${OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping fprobe"
+ start-stop-daemon --stop --quiet --exec $BIN \
+ --pidfile ${PIDFILE}
+ eend $?
+}
diff --git a/testing/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch b/testing/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch
new file mode 100644
index 00000000..e76571a2
--- /dev/null
+++ b/testing/freeradius/0001-Fix-detection-of-TLS-for-uClibc.patch
@@ -0,0 +1,33 @@
+From 51cb058c6a9472585622582d16e01c5540627c25 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Tue, 13 Oct 2009 12:53:38 +0000
+Subject: [PATCH] Fix detection of TLS for uClibc
+
+On uClibc the configure script will wrongly detect that TLS is
+available. This happends becuase the variable val in the test program
+is optimized away and missing during link time.
+
+This patch make sure that the variable val is not optimized away so
+configure correctly will detect that TLS is missing on uClibc.
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ acinclude.m4 | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 6025474..100e5b0 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -382,7 +382,7 @@ m4_pushdef([AC_OUTPUT],
+ AC_DEFUN([FR_TLS],
+ [
+ AC_MSG_CHECKING(for TLS)
+- AC_RUN_IFELSE([AC_LANG_SOURCE([[ static __thread int val; int main() { return 0; } ]])],[have_tls=yes],[have_tls=no],[have_tls=no ])
++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ static __thread int val; int main(int argc, char *argv[]) { return val = argc; } ]])],[have_tls=yes],[have_tls=no],[have_tls=no ])
+ AC_MSG_RESULT($have_tls)
+ if test "$have_tls" = "yes"; then
+ AC_DEFINE([HAVE_THREAD_TLS],[1],[Define if the compiler supports __thread])
+--
+1.6.4.4
+
diff --git a/testing/freeradius/APKBUILD b/testing/freeradius/APKBUILD
new file mode 100644
index 00000000..51633591
--- /dev/null
+++ b/testing/freeradius/APKBUILD
@@ -0,0 +1,68 @@
+# Contributor:
+# Maintainer:
+pkgname=freeradius
+pkgver=2.1.7
+pkgrel=0
+pkgdesc="RADIUS (Remote Authentication Dial-In User Service) server"
+url="http://freeradius.org/"
+license="GPL"
+depends=
+makedepends="openssl-dev pth-dev mysql-dev postgresql-dev gdbm-dev readline-dev
+ bash libtool autoconf automake
+ "
+pkggroups="radiusd"
+pkgusers="radiusd"
+install="freeradius.pre-install"
+subpackages="$pkgname-doc $pkgname-dev"
+source="ftp://ftp.freeradius.org/pub/freeradius/$pkgname-server-$pkgver.tar.gz
+ freeradius.confd
+ freeradius.initd
+ 0001-Fix-detection-of-TLS-for-uClibc.patch
+ freeradius-2.1.6-nothreads.patch
+ freeradius-2.1.7-pkglibdir.patch
+ "
+
+build() {
+ cd "$srcdir/$pkgname-server-$pkgver"
+ for i in ../*.patch; do
+ msg "Applying $i"
+ patch -p1 -i $i || return 1
+ done
+
+ aclocal && ./autogen.sh || return 1
+
+ export CONFIG_SHELL=/bin/bash
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-static \
+ || return 1
+
+# # the configure script fails to detect that we dont have TLS
+# sed -i -e '/^\#define HAVE_THREAD_TLS/d' src/include/autoconf.h \
+# || return 1
+
+ make -j1 || return 1
+ install -d -m0750 -o root -g radiusd "$pkgdir"/etc/raddb
+ install -d -m0750 -o root -g radiusd "$pkgdir"/var/run/radius
+ install -d -m0750 -o root -g radiusd "$pkgdir"/var/log/radius
+ install -d -m0750 -o root -g radiusd "$pkgdir"/var/log/radius/radacct
+
+ make -j1 R="$pkgdir" install
+ sed -i -e 's:^#user *= *nobody:user = radiusd:;s:^#group *= *nobody:group = radiusd:' \
+ "$pkgdir"/etc/raddb/radiusd.conf
+ chown -R root:radiusd "$pkgdir"/etc/raddb/*
+ rm -f "$pkgdir/usr/sbin/rc.radiusd"
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+
+}
+
+md5sums="b1f77c5e3116bcb0ac0aa9080a06ebf1 freeradius-server-2.1.7.tar.gz
+fc6693f3df5a0694610110287a28568a freeradius.confd
+b22092fcdcb61d7f0b8e13a007c444c5 freeradius.initd
+2e39f10c814bc7e1172c4cb2d178b39b 0001-Fix-detection-of-TLS-for-uClibc.patch
+1e04786d3f626200999f53471c19ac47 freeradius-2.1.6-nothreads.patch
+4c8af50e174d392c0210cbf494cd15cd freeradius-2.1.7-pkglibdir.patch"
diff --git a/testing/freeradius/freeradius-2.1.6-nothreads.patch b/testing/freeradius/freeradius-2.1.6-nothreads.patch
new file mode 100644
index 00000000..41a41c8d
--- /dev/null
+++ b/testing/freeradius/freeradius-2.1.6-nothreads.patch
@@ -0,0 +1,13 @@
+diff -Nru freeradius-server-2.1.6.orig/src/main/event.c freeradius-server-2.1.6/src/main/event.c
+--- freeradius-server-2.1.6.orig/src/main/event.c 2009-05-18 13:13:55.000000000 +0200
++++ freeradius-server-2.1.6/src/main/event.c 2009-09-05 07:52:42.000000000 +0200
+@@ -1667,7 +1667,9 @@
+ */
+ request->num_proxied_requests = 1;
+ request->num_proxied_responses = 0;
++#ifdef HAVE_PTHREAD_H
+ request->child_pid = NO_SUCH_CHILD_PID;
++#endif
+
+ update_event_timestamp(request->proxy, request->proxy_when.tv_sec);
+
diff --git a/testing/freeradius/freeradius-2.1.7-pkglibdir.patch b/testing/freeradius/freeradius-2.1.7-pkglibdir.patch
new file mode 100644
index 00000000..d5767fbd
--- /dev/null
+++ b/testing/freeradius/freeradius-2.1.7-pkglibdir.patch
@@ -0,0 +1,63 @@
+diff -ru freeradius-server-2.1.7.orig/Make.inc.in freeradius-server-2.1.7/Make.inc.in
+--- freeradius-server-2.1.7.orig/Make.inc.in 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/Make.inc.in 2009-10-09 08:39:15.000000000 +0000
+@@ -10,6 +10,7 @@
+ sysconfdir = @sysconfdir@
+ localstatedir = @localstatedir@
+ libdir = @libdir@
++pkglibdir = @libdir@/freeradius
+ bindir = @bindir@
+ sbindir = @sbindir@
+ docdir = @docdir@
+diff -ru freeradius-server-2.1.7.orig/raddb/radiusd.conf.in freeradius-server-2.1.7/raddb/radiusd.conf.in
+--- freeradius-server-2.1.7.orig/raddb/radiusd.conf.in 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/raddb/radiusd.conf.in 2009-10-09 08:39:15.000000000 +0000
+@@ -103,7 +103,7 @@
+ # make
+ # make install
+ #
+-libdir = @libdir@
++libdir = @libdir@/freeradius
+
+ # pidfile: Where to place the PID of the RADIUS server.
+ #
+diff -ru freeradius-server-2.1.7.orig/src/modules/Makefile freeradius-server-2.1.7/src/modules/Makefile
+--- freeradius-server-2.1.7.orig/src/modules/Makefile 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/src/modules/Makefile 2009-10-09 08:39:15.000000000 +0000
+@@ -12,7 +12,7 @@
+ @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
+
+ install:
+- $(INSTALL) -d -m 755 $(R)$(libdir)
++ $(INSTALL) -d -m 755 $(R)$(pkglibdir)
+ @$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
+
+ clean:
+diff -ru freeradius-server-2.1.7.orig/src/modules/rules.mak freeradius-server-2.1.7/src/modules/rules.mak
+--- freeradius-server-2.1.7.orig/src/modules/rules.mak 2009-10-09 08:38:58.000000000 +0000
++++ freeradius-server-2.1.7/src/modules/rules.mak 2009-10-09 08:40:56.000000000 +0000
+@@ -123,7 +123,7 @@
+ $(TARGET).la: $(LT_OBJS)
+ $(LIBTOOL) --mode=link $(CC) -release $(RADIUSD_VERSION) \
+ -module $(LINK_MODE) $(LDFLAGS) $(RLM_LDFLAGS) -o $@ \
+- -rpath $(libdir) $^ $(LIBRADIUS) $(RLM_LIBS) $(LIBS)
++ -rpath $(pkglibdir) $^ $(LIBRADIUS) $(RLM_LIBS) $(LIBS)
+
+ #######################################################################
+ #
+@@ -164,13 +164,13 @@
+ # Do any module-specific installation.
+ #
+ # If there isn't a TARGET defined, then don't do anything.
+-# Otherwise, install the libraries into $(libdir)
++# Otherwise, install the libraries into $(pkglibdir)
+ #
+ install:
+ @[ "x$(RLM_INSTALL)" = "x" ] || $(MAKE) $(MFLAGS) $(RLM_INSTALL)
+ if [ "x$(TARGET)" != "x" ]; then \
+ $(LIBTOOL) --mode=install $(INSTALL) -c \
+- $(TARGET).la $(R)$(libdir)/$(TARGET).la || exit $$?; \
++ $(TARGET).la $(R)$(pkglibdir)/$(TARGET).la || exit $$?; \
+ rm -f $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la; \
+ ln -s $(TARGET).la $(R)$(libdir)/$(TARGET)-$(RADIUSD_VERSION).la || exit $$?; \
+ fi
diff --git a/testing/freeradius/freeradius.confd b/testing/freeradius/freeradius.confd
new file mode 100644
index 00000000..9811289b
--- /dev/null
+++ b/testing/freeradius/freeradius.confd
@@ -0,0 +1,5 @@
+# Config file for /etc/init.d/radiusd
+
+# see man pages for radiusd run `radiusd -h`
+# for valid cmdline options
+#RADIUSD_OPTS=""
diff --git a/testing/freeradius/freeradius.initd b/testing/freeradius/freeradius.initd
new file mode 100644
index 00000000..86909ade
--- /dev/null
+++ b/testing/freeradius/freeradius.initd
@@ -0,0 +1,70 @@
+#!/sbin/runscript
+
+opts="${opts} reload"
+
+depend() {
+ need net
+ after firewall
+ use dns
+}
+
+checkconfig() {
+ #set the location of log files, including startup.log created by check-radiusd-config
+ if ! cd /var/log/radius ; then
+ eerror "Failed to change current directory to /var/log/radius"
+ return 1
+ fi
+
+ if [ ! -d /var/run/radiusd ] && ! mkdir /var/run/radiusd ; then
+ eerror "Failed to create /var/run/radiusd"
+ return 1
+ fi
+
+ if [ ! -f /etc/raddb/radiusd.conf ] ; then
+ eerror "No /etc/raddb/radiusd.conf file exists!"
+ return 1
+ fi
+
+ if [ "`/usr/sbin/check-radiusd-config >/dev/null 2>&1; echo $?`" != "0" ] ; then
+ eerror "Config not ok! (try /usr/sbin/check-radiusd-config )"
+ return 1
+ fi
+
+ RADIUSD_USER=`grep '^ *user *=' /etc/raddb/radiusd.conf | cut -d ' ' -f 3`
+ RADIUSD_GROUP=`grep '^ *group *=' /etc/raddb/radiusd.conf | cut -d ' ' -f 3`
+ if [ -n "${RADIUSD_USER}" ] && ! getent passwd ${RADIUSD_USER} > /dev/null ; then
+ eerror "${RADIUSD_USER} user missing!"
+ return 1
+ fi
+ if [ -n "${RADIUSD_GROUP}" ] && ! getent group ${RADIUSD_GROUP} > /dev/null ; then
+ eerror "${RADIUSD_GROUP} group missing!"
+ return 1
+ fi
+
+ #radius.log is created before privileges drop; we need to set proper permissions on it
+ [ -f radius.log ] || touch radius.log || return 1
+
+ chown -R "${RADIUSD_USER:-root}:${RADIUSD_GROUP:-root}" . /var/run/radiusd && \
+ chmod -R u+rwX,g+rX . /var/run/radiusd || return 1
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting radiusd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/radiusd -- ${RADIUSD_OPTS} >/dev/null
+ eend $?
+}
+
+stop () {
+ ebegin "Stopping radiusd"
+ start-stop-daemon --stop --quiet --pidfile=/var/run/radiusd/radiusd.pid
+ eend $?
+}
+
+reload () {
+ ebegin "Reloading radiusd"
+ kill -HUP `</var/run/radiusd/radiusd.pid`
+ eend $?
+}
+
diff --git a/testing/freeradius/freeradius.pre-install b/testing/freeradius/freeradius.pre-install
new file mode 100644
index 00000000..87502274
--- /dev/null
+++ b/testing/freeradius/freeradius.pre-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+adduser -h /var/log/radius -s /bin/false -D radiusd 2>/dev/null
diff --git a/testing/freeswitch/APKBUILD b/testing/freeswitch/APKBUILD
new file mode 100644
index 00000000..293678c7
--- /dev/null
+++ b/testing/freeswitch/APKBUILD
@@ -0,0 +1,53 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+pkgname=freeswitch
+pkgver=1.0.4
+pkgrel=0
+pkgdesc="A communications platform written in C from the ground up"
+url="http://www.freeswitch.org"
+license="GPL"
+depends=""
+makedepends="curl-dev unixodbc-dev zlib-dev openssl-dev
+ autoconf automake libtool"
+install=
+subpackages="$pkgname-dev"
+source="http://files.freeswitch.org/freeswitch-$pkgver.tar.gz
+ modules.conf
+ "
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ cp -f "$srcdir/modules.conf" modules.conf || return 1
+
+ # i think our max cmd len is 32768
+ # by specifying it here we save our selves from some CPU cycles
+ export lt_cv_sys_max_cmd_len=8192
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/freeswitch \
+ --with-modinstdir=/usr/lib/freeswitch \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+
+ # check how/when parallel builds are fixed here:
+ # http://jira.freeswitch.org/browse/FSBUILD-6
+
+ # build the libs and prerequisites in parallel first
+ make libs/apr/libapr-1.la \
+ libs/apr-util/libaprutil-1.la \
+ libs/speex/libspeex/libspeexdsp.la \
+ libs/sqlite/libsqlite3.la \
+ libs/pcre/libpcre.la \
+ libs/srtp/libsrtp.la \
+ src/include/switch_version.h
+
+ # then the rest should build in parallel too
+ make || return 1
+ make -j1 DESTDIR="$pkgdir" install
+
+ # TODO: make and test init.d scripts
+ # install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ # install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="86e34bdd8cc027d71772cb0dc51388da freeswitch-1.0.4.tar.gz
+c05f2356be159e99b3845f5260a33599 modules.conf"
diff --git a/testing/freeswitch/freeswitch.initd b/testing/freeswitch/freeswitch.initd
new file mode 100644
index 00000000..34f44139
--- /dev/null
+++ b/testing/freeswitch/freeswitch.initd
@@ -0,0 +1,19 @@
+#!/sbin/runscript
+
+NAME=freeswitch
+USER=freeswitch
+DAEMON=/usr/bin/freeswitch
+OPTIONS_START="-u $USER -g $GROUP -nc"
+OPTIONS_STOP="-stop"
+
+start() {
+ ebegin "Starting $NAME"
+ $DAEMON $OPTIONS_START
+ eend 0
+ }
+
+stop() {
+ ebegin "Stopping $NAME"
+ $DAEMON $OPTIONS_STOP
+ eend 0
+ }
diff --git a/testing/freeswitch/freeswitch.install b/testing/freeswitch/freeswitch.install
new file mode 100755
index 00000000..0507fe53
--- /dev/null
+++ b/testing/freeswitch/freeswitch.install
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+case "$1" in
+ pre_install)
+ adduser -h /dev/null -s /bin/false -D freeswitch 2>/dev/null
+ ;;
+ post_install)
+ chown -R freeswitch:freeswitch /etc/freeswitch/
+ ;;
+ post_deinstall)
+ deluser freeswitch
+ delgroup freeswitch
+ ;;
+esac
+
diff --git a/testing/freeswitch/modules.conf b/testing/freeswitch/modules.conf
new file mode 100644
index 00000000..c6f5a05d
--- /dev/null
+++ b/testing/freeswitch/modules.conf
@@ -0,0 +1,75 @@
+loggers/mod_console
+loggers/mod_logfile
+loggers/mod_syslog
+applications/mod_commands
+applications/mod_conference
+applications/mod_dptools
+applications/mod_enum
+applications/mod_fifo
+#applications/mod_fax
+applications/mod_voicemail
+#applications/mod_lcr
+applications/mod_limit
+applications/mod_expr
+applications/mod_esf
+#applications/mod_easyroute
+applications/mod_fsv
+#applications/mod_soundtouch
+#applications/mod_rss
+#applications/mod_snom
+#applications/mod_vmd
+#asr_tts/mod_flite
+#asr_tts/mod_pocketsphinx
+#asr_tts/mod_cepstral
+codecs/mod_g723_1
+codecs/mod_amr
+#codecs/mod_amrwb
+codecs/mod_g729
+codecs/mod_h26x
+codecs/mod_voipcodecs
+codecs/mod_ilbc
+codecs/mod_speex
+#codecs/mod_siren
+#codecs/mod_celt
+#codecs/mod_dahdi_codec
+#dialplans/mod_dialplan_directory
+dialplans/mod_dialplan_xml
+dialplans/mod_dialplan_asterisk
+#directories/mod_ldap
+#endpoints/mod_dingaling
+endpoints/mod_iax
+#endpoints/mod_portaudio
+endpoints/mod_sofia
+endpoints/mod_loopback
+#endpoints/mod_alsa
+#endpoints/mod_opal
+#../../libs/openzap/mod_openzap
+#event_handlers/mod_event_multicast
+event_handlers/mod_event_socket
+event_handlers/mod_cdr_csv
+#event_handlers/mod_radius_cdr
+formats/mod_native_file
+formats/mod_sndfile
+#formats/mod_shout
+formats/mod_local_stream
+formats/mod_tone_stream
+#languages/mod_python
+#languages/mod_spidermonkey
+#languages/mod_spidermonkey_teletone
+#languages/mod_spidermonkey_core_db
+#languages/mod_spidermonkey_socket
+#languages/mod_spidermonkey_odbc
+languages/mod_lua
+#languages/mod_perl
+#languages/mod_yaml
+#xml_int/mod_xml_rpc
+#xml_int/mod_xml_curl
+#xml_int/mod_xml_cdr
+#xml_int/mod_xml_ldap
+say/mod_say_en
+#say/mod_say_de
+#say/mod_say_es
+#say/mod_say_fr
+#say/mod_say_it
+#say/mod_say_nl
+#say/mod_say_zh
diff --git a/testing/fuse/APKBUILD b/testing/fuse/APKBUILD
new file mode 100644
index 00000000..52cf280b
--- /dev/null
+++ b/testing/fuse/APKBUILD
@@ -0,0 +1,62 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=fuse
+pkgver=2.8.1
+pkgrel=0
+pkgdesc="A library that makes it possible to implement a filesystem in a userspace program."
+url="http://fuse.sourceforge.net/"
+license="GPL2"
+depends=
+makedepends="pkgconfig libiconv-dev gettext-dev
+ autoconf automake libtool"
+install=
+subpackages="$pkgname-dev"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ fuse-iconv.patch
+ fuse.initd"
+
+
+_builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ cd "$_builddir"
+ patch -p1 -i "$srcdir"/fuse-iconv.patch || return 1
+ aclocal -I m4 && libtoolize && autoconf && automake
+}
+
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --enable-lib \
+ --enable-util \
+ --bindir=/bin \
+ || return 1
+ make || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="$pkgdir" install || return 1
+
+ rm -rf "$pkgdir"/dev
+ rm -rf "$pkgdir"/etc/init.d
+
+ install -Dm755 "$srcdir"/fuse.initd "$pkgdir"/etc/init.d/fuse
+ # create config
+ install -d "$pkgdir"/etc
+ cat >"$pkgdir"/etc/fuse.conf << _EOF_
+# Set the maximum number of FUSE mounts allowed to non-root users.
+# The default is 1000.
+#
+#mount_max = 1000
+
+# Allow non-root users to specify the 'allow_other' or 'allow_root'
+# mount options.
+#
+#user_allow_other
+_EOF_
+
+}
+
+md5sums="0e3505ce90155983f1bc995eb2cf6fa7 fuse-2.8.1.tar.gz
+e5183506aabc5bf7795da52953d38888 fuse-iconv.patch
+5983726cfabf0830dffbbbf9a3abcddc fuse.initd"
diff --git a/testing/fuse/fuse-iconv.patch b/testing/fuse/fuse-iconv.patch
new file mode 100644
index 00000000..4710f576
--- /dev/null
+++ b/testing/fuse/fuse-iconv.patch
@@ -0,0 +1,24 @@
+diff --git a/lib/Makefile.am b/lib/Makefile.am
+index 3eec119..c7414ac 100644
+--- a/lib/Makefile.am
++++ b/lib/Makefile.am
+@@ -11,8 +11,10 @@ else
+ mount_source = mount.c mount_util.c mount_util.h
+ endif
+
++libfuse_la_LDFLAGS =
+ if ICONV
+ iconv_source = modules/iconv.c
++libfuse_la_LDFLAGS += -liconv
+ else
+ iconv_source =
+ endif
+@@ -35,7 +37,7 @@ libfuse_la_SOURCES = \
+ $(iconv_source) \
+ $(mount_source)
+
+-libfuse_la_LDFLAGS = @libfuse_libs@ -version-number 2:8:1 \
++libfuse_la_LDFLAGS += @libfuse_libs@ -version-number 2:8:1 \
+ -Wl,--version-script,$(srcdir)/fuse_versionscript
+
+ libulockmgr_la_SOURCES = ulockmgr.c
diff --git a/testing/fuse/fuse.initd b/testing/fuse/fuse.initd
new file mode 100644
index 00000000..30b512e8
--- /dev/null
+++ b/testing/fuse/fuse.initd
@@ -0,0 +1,35 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+MOUNTPOINT=/sys/fs/fuse/connections
+
+depend() {
+ need localmount
+}
+
+start() {
+
+ ebegin "Starting fuse"
+ if ! grep -qw fuse /proc/filesystems; then
+ modprobe fuse >/dev/null 2>&1 || eerror $? "Error loading fuse module"
+ fi
+ if grep -qw fusectl /proc/filesystems && \
+ ! grep -qw $MOUNTPOINT /proc/mounts; then
+ mount -t fusectl none $MOUNTPOINT >/dev/null 2>&1 || \
+ eerror $? "Error mounting control filesystem"
+ fi
+ eend ${?}
+
+}
+
+stop() {
+
+ ebegin "Stopping fuse"
+ if grep -qw $MOUNTPOINT /proc/mounts; then
+ umount $MOUNTPOINT >/dev/null 2>&1 || \
+ eerror $? "Error unmounting control filesystem"
+ fi
+ eend ${?}
+
+}
diff --git a/testing/gnump3d/APKBUILD b/testing/gnump3d/APKBUILD
new file mode 100644
index 00000000..b3674329
--- /dev/null
+++ b/testing/gnump3d/APKBUILD
@@ -0,0 +1,29 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=gnump3d
+pkgver=3.0
+pkgrel=0
+pkgdesc="A streaming server for MP3, OGG vorbis and other streamable files"
+url="http://www.gnump3d.org/"
+license="GPL-2"
+depends="perl"
+makedepends=""
+install=
+subpackages="$pkgname-doc"
+source="http://savannah.gnu.org/download/gnump3d/$pkgname-$pkgver.tar.gz
+ gnump3d.confd
+ gnump3d.initd"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ make PREFIX="$pkgdir" install
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+ mv "$pkgdir"/usr/local "$pkgdir"-doc/
+}
+
+md5sums="d2b665c3267253cc8cae29659131b9b4 gnump3d-3.0.tar.gz
+59f0286d4c943226a67ab7b7787547c6 gnump3d.confd
+5202488dff1c7e6c6788fb00fb32f071 gnump3d.initd"
diff --git a/testing/gnump3d/gnump3d.confd b/testing/gnump3d/gnump3d.confd
new file mode 100644
index 00000000..1d6cf397
--- /dev/null
+++ b/testing/gnump3d/gnump3d.confd
@@ -0,0 +1,6 @@
+# Set this to 0 to stop the init script from indexing your mp3s.
+# It takes the longest on the first time, but after that, it only does
+# updates.
+
+DO_INDEX=1
+
diff --git a/testing/gnump3d/gnump3d.initd b/testing/gnump3d/gnump3d.initd
new file mode 100644
index 00000000..43290ee3
--- /dev/null
+++ b/testing/gnump3d/gnump3d.initd
@@ -0,0 +1,37 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/media-sound/gnump3d/files/gnump3d.init.d,v 1.4 2008/06/03 14:52:33 beandog Exp $
+
+opts="start stop index"
+
+depend() {
+ need net
+ after netmount nfsmount
+}
+
+start() {
+ ebegin "Starting gnump3d"
+
+ if [ ${DO_INDEX} -eq 1 ]; then
+ ebegin "Updating index of music files (may take a while for the first time)"
+ /usr/bin/gnump3d-index
+ eend $?
+ fi
+
+ start-stop-daemon --start --quiet --exec /usr/bin/gnump3d2 --make-pidfile \
+ --pidfile /var/run/gnump3d.pid --background -- --quiet
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping gnump3d"
+ start-stop-daemon --stop --quiet --pidfile /var/run/gnump3d.pid
+ eend $?
+}
+
+index() {
+ ebegin "Indexing music files"
+ /usr/bin/gnump3d-index
+ eend $?
+}
diff --git a/testing/gross-svn/APKBUILD b/testing/gross-svn/APKBUILD
new file mode 100644
index 00000000..58389f55
--- /dev/null
+++ b/testing/gross-svn/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=gross-svn
+pkgver=511
+pkgrel=2
+pkgdesc="Greylisting of suspicious sources"
+url="http://code.google.com/p/gross/"
+license="BSD"
+depends=
+makedepends="c-ares-dev"
+install="$pkgname.post-install $pkgname.pre-install"
+subpackages="$pkgname-doc $pkgname-dev"
+source="http://alpine.nethq.org/clandmeter/src/${pkgname}-${pkgver}.tar.bz2
+$pkgname.initd
+$pkgname.confd"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make -j1 DESTDIR="$pkgdir" install
+
+ install -dD "$pkgdir"/var/run/gross
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/gross
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/gross
+}
+
+md5sums="f2488ced5b47f359c3a1127d9ba3453c gross-svn-511.tar.bz2
+e8d7c8ce4760f8443ab13c3a4af80db0 gross-svn.initd
+5ca1c6e51c3243236e6564480b20279b gross-svn.confd"
diff --git a/testing/gross-svn/gross-svn.confd b/testing/gross-svn/gross-svn.confd
new file mode 100644
index 00000000..646e12f9
--- /dev/null
+++ b/testing/gross-svn/gross-svn.confd
@@ -0,0 +1,6 @@
+#
+# Specify daemon $OPTS here.
+#
+
+OPTS=""
+
diff --git a/testing/gross-svn/gross-svn.initd b/testing/gross-svn/gross-svn.initd
new file mode 100644
index 00000000..00ee33e5
--- /dev/null
+++ b/testing/gross-svn/gross-svn.initd
@@ -0,0 +1,36 @@
+#!/sbin/runscript
+
+NAME="grossd"
+DAEMON="/usr/sbin/$NAME"
+USER="gross"
+GROUP="gross"
+
+depend() {
+ need net
+ after firewall
+}
+
+check_config() {
+ if [ ! -f /var/db/gross/state ] ; then
+ einfo "Generating Gross database..."
+ install -dD -o${USER} -g${GROUP} /var/db/gross
+ ${DAEMON} -Cu ${USER} > /dev/null
+ fi
+}
+
+start() {
+ check_config || return 1
+ ebegin "Starting ${NAME}"
+ start-stop-daemon --start --quiet --background \
+ --exec ${DAEMON} -- \
+ -p /var/run/gross/grossd.pid \
+ -u ${USER} ${OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${NAME}"
+ start-stop-daemon --stop --pidfile /var/run/gross/grossd.pid
+ eend $?
+}
+
diff --git a/testing/gross-svn/gross-svn.post-install b/testing/gross-svn/gross-svn.post-install
new file mode 100644
index 00000000..df06670a
--- /dev/null
+++ b/testing/gross-svn/gross-svn.post-install
@@ -0,0 +1,2 @@
+#!/bin/sh
+chown -R gross:gross /var/run/gross
diff --git a/testing/gross-svn/gross-svn.pre-install b/testing/gross-svn/gross-svn.pre-install
new file mode 100644
index 00000000..c3844d7a
--- /dev/null
+++ b/testing/gross-svn/gross-svn.pre-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+adduser -H -s /bin/false -D gross 2>/dev/null
+exit 0
diff --git a/testing/haproxy/APKBUILD b/testing/haproxy/APKBUILD
new file mode 100644
index 00000000..eadcabd1
--- /dev/null
+++ b/testing/haproxy/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=haproxy
+pkgver=1.3.20
+pkgrel=1
+pkgdesc="A TCP/HTTP reverse proxy for high availability environments"
+url="http://haproxy.1wt.eu"
+license="GPL"
+depends=""
+makedepends=""
+install=
+subpackages=""
+source="http://haproxy.1wt.eu/download/1.3/src/$pkgname-$pkgver.tar.gz
+ haproxy.initd"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make TARGET=linux26 || return 1
+ make DESTDIR="$pkgdir" PREFIX=/usr install
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ # install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="e37046e0cb2f407d92c41d7731d1dd10 haproxy-1.3.20.tar.gz
+7d26095c6f899b0ef00bedecaca58864 haproxy.initd"
diff --git a/testing/haproxy/haproxy.initd b/testing/haproxy/haproxy.initd
new file mode 100644
index 00000000..82a10675
--- /dev/null
+++ b/testing/haproxy/haproxy.initd
@@ -0,0 +1,45 @@
+#!/sbin/runscript
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/net-proxy/haproxy/files/haproxy.initd,v 1.3 2007/10/27 10:42:32 mrness Exp $
+
+opts="${opts} reload"
+
+CONFFILE=/etc/${SVCNAME}.cfg
+PIDFILE=/var/run/${SVCNAME}.pid
+
+checkconfig() {
+ if [ ! -f "${CONFFILE}" ]; then
+ eerror "${CONFFILE} does not exist!"
+ return 1
+ fi
+ /usr/bin/haproxy -c -f "${CONFFILE}" >/dev/null
+}
+
+depend() {
+ need net
+ after firewall
+ use dns logger
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting ${SVCNAME}"
+ start-stop-daemon --start --quiet \
+ --exec /usr/bin/haproxy \
+ -- -D -p "${PIDFILE}" -f "${CONFFILE}"
+ eend ${?}
+}
+
+stop() {
+ ebegin "Stopping ${SVCNAME}"
+ start-stop-daemon --stop --quiet --pidfile "${PIDFILE}"
+ eend ${?}
+}
+
+reload() {
+ ebegin "Reloading ${SVCNAME}"
+ /usr/bin/haproxy -D -p "${PIDFILE}" -f "${CONFFILE}" -sf $(cat "${PIDFILE}")
+ eend ${?}
+}
diff --git a/testing/hping3/APKBUILD b/testing/hping3/APKBUILD
new file mode 100644
index 00000000..f55e1168
--- /dev/null
+++ b/testing/hping3/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=hping3
+pkgver=20051105
+pkgrel=0
+pkgdesc="A ping-like TCP/IP packet assembler/analyzer"
+url="http://www.hping.org"
+license="GPL"
+depends=""
+makedepends="libpcap-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://www.hping.org/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ sed -i -e 's:net/bpf.h:pcap/bpf.h:' libpcap_stuff.c script.c || return 1
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --no-tcl
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ install -m755 -D hping3 "$pkgdir"/usr/sbin/hping3
+ ln -s hping3 "$pkgdir"/usr/sbin/hping
+ ln -s hping3 "$pkgdir"/usr/sbin/hping2
+ install -m644 -D docs/hping2.8 "$pkgdir"/usr/share/man/man8/hping2.8
+ install -m644 -D docs/hping3.8 "$pkgdir"/usr/share/man/man8/hping3.8
+}
+
+md5sums="ca4ea4e34bcc2162aedf25df8b2d1747 hping3-20051105.tar.gz"
diff --git a/testing/html2ps/APKBUILD b/testing/html2ps/APKBUILD
new file mode 100644
index 00000000..d1ce4c2d
--- /dev/null
+++ b/testing/html2ps/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor:
+# Maintainer:
+pkgname=html2ps
+pkgver=1.0b5
+pkgrel=0
+pkgdesc="Perl version of html2ps"
+url="http://user.it.uu.se/~jan/html2ps.html"
+license="GPL"
+depends="perl wget imagemagick"
+makedepends=""
+install=
+subpackages="$pkgname-doc"
+source="http://user.it.uu.se/~jan/$pkgname-$pkgver.tar.gz
+ html2ps-conf.patch"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ for i in ../*.patch; do
+ msg "Applying $i"
+ patch < $i || return 1
+ done
+ mv install install.sh
+
+ install -m755 -D "$srcdir"/$pkgname-$pkgver/html2ps "$pkgdir"/usr/bin/html2ps
+ install -m644 -D "$srcdir"/$pkgname-$pkgver/sample "$pkgdir"/etc/html2ps.conf
+ install -m644 -D "$srcdir"/$pkgname-$pkgver/html2ps.1 "$pkgdir"/usr/share/man/man1/html2ps.1
+ install -m644 -D "$srcdir"/$pkgname-$pkgver/html2psrc.5 "$pkgdir"/usr/share/man/man5/html2psrc.5
+}
+
+md5sums="0998fefa4c8f9a04c88cfac7a83df629 html2ps-1.0b5.tar.gz
+336a9e908578aeee303660a083b58c03 html2ps-conf.patch"
diff --git a/testing/html2ps/html2ps-conf.patch b/testing/html2ps/html2ps-conf.patch
new file mode 100644
index 00000000..e96e1e1e
--- /dev/null
+++ b/testing/html2ps/html2ps-conf.patch
@@ -0,0 +1,11 @@
+--- html2ps-1.0b5.orig/html2ps Wed Aug 5 19:54:09 2009
++++ html2ps-1.0b5/html2ps Wed Aug 5 19:54:34 2009
+@@ -26,7 +26,7 @@
+ # Set the name of the global configuration file. See the installation notes
+ # and manual page for more details on configuration files.
+
+-$globrc='/opt/misc/lib/html2ps/html2psrc';
++$globrc='/etc/html2ps.conf';
+ $ug='/opt/misc/lib/html2ps/html2ps.html';
+
+ $conf=<<'EOR';
diff --git a/testing/icecast/APKBUILD b/testing/icecast/APKBUILD
new file mode 100644
index 00000000..73135371
--- /dev/null
+++ b/testing/icecast/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor:
+# Maintainer:
+pkgname=icecast
+pkgver=2.3.2
+pkgrel=0
+pkgdesc="Open source media server"
+url="http://www.icecast.org"
+license="GPL"
+depends=
+makedepends="libxslt-dev libxml2-dev libogg-dev libvorbis-dev libtheora-dev"
+subpackages="$pkgname-doc"
+source="http://downloads.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz
+ icecast.initd"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+ install -D -m755 ../icecast.initd "$pkgdir"/etc/init.d/icecast
+}
+
+md5sums="ff516b3ccd2bcc31e68f460cd316093f icecast-2.3.2.tar.gz
+b6f2fc5eaada6e9389784ccf43f68684 icecast.initd"
diff --git a/testing/icecast/icecast.initd b/testing/icecast/icecast.initd
new file mode 100644
index 00000000..b82e5cdd
--- /dev/null
+++ b/testing/icecast/icecast.initd
@@ -0,0 +1,18 @@
+#!/sbin/runscript
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting Icecast 2"
+ start-stop-daemon --background --start --make-pidfile --pidfile /var/run/icecast.pid --exec /usr/bin/icecast -- -c /etc/icecast.xml
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Icecast 2"
+ start-stop-daemon --stop --pidfile /var/run/icecast.pid --name icecast
+ eend $?
+}
diff --git a/testing/ircii/APKBUILD b/testing/ircii/APKBUILD
new file mode 100644
index 00000000..221568ba
--- /dev/null
+++ b/testing/ircii/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=ircii
+pkgver=20080314
+pkgrel=0
+pkgdesc="Universal IRC for Unix systems"
+url="http://www.eterna.com.au/ircii/"
+license="GPL"
+depends=
+makedepends=
+install=
+subpackages="$pkgname-doc $pkgname-dev"
+source="ftp://ircii.warped.com/pub/ircII/ircii-20080314.tar.bz2"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+md5sums="da7fcf2a442bd25f303778eb6466eb19 ircii-20080314.tar.bz2"
diff --git a/testing/ircservices/APKBUILD b/testing/ircservices/APKBUILD
new file mode 100644
index 00000000..8367866b
--- /dev/null
+++ b/testing/ircservices/APKBUILD
@@ -0,0 +1,78 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=ircservices
+pkgver=5.1.20
+pkgrel=0
+pkgdesc="Services for IRC (NickServ, ChanServ, MemoServ)"
+url="http://www.ircservices.za.net/"
+license="GPL"
+depends=
+makedepends=
+install=$pkgname.pre-install
+pkgusers="ircservices"
+pkggroups="ircservices"
+subpackages="$pkgname-doc"
+source="http://www.ircservices.za.net/download/$pkgname-$pkgver.tar.gz
+ $pkgname.initd"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ RUNGROUP=ircservices ./configure \
+ -cc "$CC" \
+ -cflags "$CFLAGS" \
+ -bindest /usr/bin \
+ -datdest /var/lib/ircservices \
+ || return 1
+
+ # build targets one by one as paralell builds breaks
+ make config-check &&\
+ make ircservices &&\
+ make languages &&\
+ make tools
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+# export INSTALL_PREFIX="$pkgdir"
+ make -j1 \
+ BINDEST="$pkgdir"/usr/bin \
+ DATDEST="$pkgdir"/var/lib/ircservices \
+ install || return 1
+
+ install -d "$pkgdir"/usr/share/man/man8
+ install docs/ircservices.8 "$pkgdir"/usr/share/man/man8/ircservices.8
+ install docs/convert-db.8 \
+ "$pkgdir"/usr/share/man/man8/ircservices-convert-db.8
+
+ # try conform to FHS
+ cd "$pkgdir"
+ install -d etc/ircservices usr/share/ircservices var/log/ircservices
+
+ mv var/lib/ircservices/convert-db usr/bin/ircservices-convert-db
+
+ mv var/lib/ircservices/example-ircservices.conf \
+ etc/ircservices/ircservices.conf
+ ln -s /etc/ircservices/ircservices.conf \
+ var/lib/ircservices/ircservices.conf
+
+ mv var/lib/ircservices/example-modules.conf \
+ etc/ircservices/modules.conf
+ ln -s /etc/ircservices/modules.conf var/lib/ircservices/modules.conf
+
+ mv var/lib/ircservices/languages \
+ var/lib/ircservices/helpfiles \
+ usr/share/ircservices/
+ ln -s /usr/share/ircservices/languages var/lib/ircservices/
+ ln -s /usr/share/ircservices/helpfiles var/lib/ircservices/
+
+ install -Dm755 "$srcdir"/ircservices.initd \
+ etc/init.d/ircservices
+
+ chown ircservices:ircservices var/lib/ircservices \
+ var/log/ircservices
+
+ chown root:ircservices etc/ircservices/ircservices.conf \
+ etc/ircservices/modules.conf
+}
+
+md5sums="11dbbdc7a3a18fe65086de787635012c ircservices-5.1.20.tar.gz
+279ea42c5d97b47787b5959c9981fbaa ircservices.initd"
diff --git a/testing/ircservices/ircservices.confd b/testing/ircservices/ircservices.confd
new file mode 100644
index 00000000..31cc902d
--- /dev/null
+++ b/testing/ircservices/ircservices.confd
@@ -0,0 +1,6 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/cvsroot/gentoo-x86/net-irc/ircservices/files/ircservices.conf.d,v 1.2 2005/05/16 15:36:11 swegener Exp $
+
+# Se this to true to have ircservices depend on a local ircd to be up
+LOCALIRCD="false"
diff --git a/testing/ircservices/ircservices.initd b/testing/ircservices/ircservices.initd
new file mode 100644
index 00000000..8c2a11e8
--- /dev/null
+++ b/testing/ircservices/ircservices.initd
@@ -0,0 +1,29 @@
+#!/sbin/runscript
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/cvsroot/gentoo-x86/net-irc/ircservices/files/ircservices.init.d,v 1.5 2006/11/05 22:23:08 swegener Exp $
+
+depend() {
+ need net
+ after firewall
+ use ircd
+}
+
+start() {
+ ebegin "Starting IRC Services"
+ start-stop-daemon --start --quiet --exec /usr/bin/ircservices \
+ --chuid ircservices \
+ -- \
+ -dir=/var/lib/ircservices \
+ -log=/var/log/ircservices/ircservices.log \
+ &>/dev/null
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping IRC Services"
+ start-stop-daemon --stop --quiet \
+ --pidfile /var/lib/ircservices/ircservices.pid
+ eend $?
+ rm -f /var/lib/ircservices/ircservices.pid
+}
diff --git a/testing/ircservices/ircservices.pre-install b/testing/ircservices/ircservices.pre-install
new file mode 100644
index 00000000..08f61166
--- /dev/null
+++ b/testing/ircservices/ircservices.pre-install
@@ -0,0 +1,5 @@
+#!/usr/bin
+
+adduser -h /var/lib/ircservices -s /bin/false -S -D ircservices 2>/dev/null
+exit 0
+
diff --git a/testing/ivtv-utils/APKBUILD b/testing/ivtv-utils/APKBUILD
new file mode 100644
index 00000000..33bccec5
--- /dev/null
+++ b/testing/ivtv-utils/APKBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=ivtv-utils
+pkgver=1.4.0
+pkgrel=0
+pkgdesc="Userspace utilities and firmware for Hauppauge PVR cards"
+url="http://ivtvdriver.org"
+license="GPL"
+depends=
+makedepends="uclibc++-dev"
+source="http://dl.ivtvdriver.org/ivtv/stable/$pkgname-$pkgver.tar.gz
+ http://dl.ivtvdriver.org/ivtv/firmware/ivtv-firmware.tar.gz"
+
+build ()
+{
+ cd "$srcdir"/$pkgname-$pkgver
+ export CXX=${CXX_UC:-g++-uc}
+ make || return 1
+ make DESTDIR="$pkgdir" PREFIX=/usr install || return 1
+
+ cd "$srcdir"
+ for file in *.fw v4l-cx2341x-init.mpg; do
+ install -D -m644 $file "$pkgdir"/lib/firmware/$file || return 1
+ done
+ rm -rf "$pkgdir"/usr/include
+}
+
+md5sums="13deb3fe973b175a115285e63f668b95 ivtv-utils-1.4.0.tar.gz
+b9a871f1c569025be9c48a77b3515faf ivtv-firmware.tar.gz"
diff --git a/testing/kamailio/APKBUILD b/testing/kamailio/APKBUILD
new file mode 100644
index 00000000..5e3a0c63
--- /dev/null
+++ b/testing/kamailio/APKBUILD
@@ -0,0 +1,149 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=kamailio
+pkgver=3.0.0
+pkgrel=1
+pkgdesc="Open Source SIP Server"
+url="http://www.kamailio.org/"
+pkgusers="kamailio"
+pkggroups="kamailio"
+license="GPL"
+depends=
+makedepends="bison flex expat-dev postgresql-dev pcre-dev
+ libxml2-dev curl-dev unixodbc-dev confuse-dev"
+install=
+subpackages="$pkgname-doc $pkgname-postgres
+ $pkgname-mediaproxy $pkgname-unixodbc"
+source="http://sip-router.org/tarballs/sr/kamailio_3.0/kamailio-${pkgver}_src_2010-01-12_6d1e9f.tar.gz
+ kamailio.cfg
+ kamailio.initd
+ kamailio.pre-install
+ kamailio.post-install
+ kamailio-backslash.patch
+ "
+
+_builddir="$srcdir"/$pkgname-$pkgver
+prepare() {
+ cd "$_builddir"
+ patch -p1 -i "$srcdir"/kamailio-backslash.patch || return 1
+
+ sed -i -e 's:^cfg-target.*:cfg-target = $(cfg-dir):' \
+ -e 's:^cfg-prefix.*:cfg-prefix = $(basedir):' \
+ -e "s:-O9 -funroll-loops:$CFLAGS:g" \
+ Makefile.defs \
+ || return 1
+
+ cd utils/kamctl/
+ sed -i -e 's:/var/run/kamailio.pid:/var/run/kamailio/kamailio.pid:g' \
+ kamctl.base kamctlrc || return 1
+ # we actually dont need bash
+ sed -i -e 's:/bin/bash:/bin/sh:' kamctl kamdbctl \
+ || return 1
+ # Set email_address field as not required field (could be null)
+ cd dbtext/kamailio
+ sed -i -e 's:email_address(string):email_address(string,null):' subscriber \
+ || return 1
+
+}
+
+build() {
+ cd "$_builddir"
+ make prefix=/usr \
+ cfg-dir=/etc/kamailio/ \
+ MODS_MYSQL=yes \
+ MODS_PCRE=yes \
+ MODS_PRESENCE=yes \
+ MODS_RADIUS= \
+ TLS= \
+ include_modules="db_postgres mediaproxy db_unixodbc carrierroute" \
+ all || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make prefix=/usr \
+ cfg-dir=/etc/kamailio/ \
+ MODS_MYSQL=yes \
+ MODS_PCRE=yes \
+ MODS_PRESENCE=yes \
+ MODS_RADIUS= \
+ TLS= \
+ include_modules="db_postgres mediaproxy db_unixodbc carrierroute" \
+ basedir="$pkgdir" install || return 1
+
+ # move default config to -doc package and use our own default config
+
+ mv "$pkgdir"/etc/kamailio/kamailio.cfg \
+ "$pkgdir"/usr/share/doc/kamailio/
+ install -m644 -D "$srcdir"/kamailio.cfg \
+ "$pkgdir"/etc/kamailio/kamailio.cfg
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -d -o kamailio "$pkgdir"/var/run/kamailio
+}
+
+_mv_mod() {
+ local moddir=usr/lib/kamailio/modules i=
+ mkdir -p "$subpkgdir"/$moddir
+ for i in $@; do
+ mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1
+ done
+}
+
+_mv_mod_k() {
+ local moddir=usr/lib/kamailio/modules_k i=
+ mkdir -p "$subpkgdir"/$moddir
+ for i in $@; do
+ mv "$pkgdir"/$moddir/$i.so "$subpkgdir"/$moddir/ || return 1
+ done
+}
+
+
+mysql() {
+ pkgdesc="MySQL support for kamailio"
+ depends="kamailio mysql-client"
+ _mv_mod db_mysql
+ mkdir -p "$subpkgdir"/usr/share/kamailio
+ mv "$pkgdir"/usr/share/kamailio/mysql \
+ "$subpkgdir"/usr/share/kamailio/
+}
+
+postgres() {
+ pkgdesc="PostgreSQL support for kamailio"
+ depends="kamailio postgresql-client"
+ _mv_mod db_postgres
+ mkdir -p "$subpkgdir"/usr/share/kamailio
+ mv "$pkgdir"/usr/share/kamailio/postgres \
+ "$subpkgdir"/usr/share/kamailio/
+}
+
+pcre() {
+ pkgdesc="Regular expressions support for kamailio"
+ _mv_mod dialplan lcr regex
+}
+
+presence() {
+ pkgdesc="Precense support for kamailio"
+ _mv_mod presence presence_xml presence_mwi pua pua_bla pua_mi \
+ pua_usrloc pua_xmpp rls xcap_client presence_dialoginfo \
+ pua_dialoginfo
+}
+
+mediaproxy() {
+ pkgdesc="Mediaproxy support for kamailio"
+ depends="kamailio"
+ _mv_mod mediaproxy
+}
+
+unixodbc() {
+ pkgdesc="UnixODBC support for kamailio"
+ depends="kamailio"
+ _mv_mod_k db_unixodbc
+}
+
+md5sums="a043944e195338d56bdfdcd6c86a468b kamailio-3.0.0_src_2010-01-12_6d1e9f.tar.gz
+eb665248ee39cf755a247286affc5cbb kamailio.cfg
+81100c479890a2a8c2628db22fdd1a0c kamailio.initd
+c646af2dd31f5c4289a2f802c873d98f kamailio.pre-install
+3fbaf633ff1620d0d526fc4047c7bed9 kamailio.post-install
+10f8be110985a841dd5b892f86eb6722 kamailio-backslash.patch"
diff --git a/testing/kamailio/kamailio-backslash.patch b/testing/kamailio/kamailio-backslash.patch
new file mode 100644
index 00000000..c474db38
--- /dev/null
+++ b/testing/kamailio/kamailio-backslash.patch
@@ -0,0 +1,15 @@
+--- a/utils/kamctl/kamdbctl.base Tue Dec 22 07:01:57 2009
++++ b/utils/kamctl/kamdbctl.base Tue Dec 22 07:02:26 2009
+@@ -32,9 +32,9 @@
+
+ # Used by dbtext and db_berkeley to define tables to be created, used by
+ # postgres to do the grants
+-STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases lcr domain grp
+- uri speed_dial gw pdt subscriber location re_grp trusted
+- address missed_calls usr_preferences aliases silo dialog
++STANDARD_TABLES=${STANDARD_TABLES:-version acc dbaliases lcr domain grp \
++ uri speed_dial gw pdt subscriber location re_grp trusted \
++ address missed_calls usr_preferences aliases silo dialog \
+ dispatcher dialplan}
+ EXTRA_TABLES=${EXTRA_TABLES:-imc_members imc_rooms cpl sip_trace domainpolicy carrierroute
+ carrier_name domain_name carrierfailureroute userblacklist globalblacklist htable purplemap}
diff --git a/testing/kamailio/kamailio.cfg b/testing/kamailio/kamailio.cfg
new file mode 100644
index 00000000..9c101a87
--- /dev/null
+++ b/testing/kamailio/kamailio.cfg
@@ -0,0 +1,107 @@
+# Demonstration Kamailio Configuration for AlpineLinux
+
+
+#--------------------------------------------------------
+# Section 1: Global Definitions
+#--------------------------------------------------------
+debug = 3
+fork = yes
+log_stderror = no
+listen = 0.0.0.0
+port = 5060
+children = 4
+
+dns = no
+rev_dns = no
+
+mpath = "/usr/lib/kamailio/modules/"
+#--------------------------------------------------------
+# Section 2: Modules
+#--------------------------------------------------------
+
+loadmodule "sl.so"
+loadmodule "tm.so"
+loadmodule "rr.so"
+loadmodule "maxfwd.so"
+loadmodule "usrloc.so"
+loadmodule "registrar.so"
+loadmodule "mi_fifo.so"
+
+#--------------------------------------------------------
+# Section 1: Module Configuration
+#--------------------------------------------------------
+
+modparam ( "usrloc", "db_mode", 0 )
+modparam ( "rr", "enable_full_lr", 1 )
+modparam ( "mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
+
+#--------------------------------------------------------
+# Section 1: Main Route Block
+#--------------------------------------------------------
+
+route
+ {
+ if (!mf_process_maxfwd_header("10"))
+ {
+ sl_send_reply("483", "Too Many Hops");
+ return;
+ }
+
+ if (msg:len > max_len)
+ {
+ sl_send_reply("513", "Message Overflow");
+ return;
+ }
+
+ if (method == "REGISTER" )
+ {
+ route(2);
+ return;
+ }
+
+ loose_route();
+
+ if (!lookup("location")) {
+ sl_send_reply("404", "User Not Found");
+ return;
+ }
+
+ route(1);
+
+}
+#--------------------------------------------------------
+# Section 1: Secondary Route Blocks
+#--------------------------------------------------------
+
+# - Default message handler
+route[1] {
+ if (!t_relay()) {
+ sl_reply_error();
+ }
+}
+
+#- Registration Request
+route[2] {
+ if (!save("location")) {
+ sl_reply_error();
+ }
+}
+
+#--------------------------------------------------------
+# Section 1: Reply Route Block
+#--------------------------------------------------------
+
+
+#--------------------------------------------------------
+# Section 1: Failure Route Block
+#--------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
diff --git a/testing/kamailio/kamailio.initd b/testing/kamailio/kamailio.initd
new file mode 100644
index 00000000..ee4e2ece
--- /dev/null
+++ b/testing/kamailio/kamailio.initd
@@ -0,0 +1,26 @@
+#!/sbin/runscript
+
+daemon=/usr/sbin/kamailio
+pidfile=/var/run/kamailio/kamailio.pid
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting Kamailio"
+ start-stop-daemon --start --quiet --pidfile $pidfile --exec $daemon \
+ -- \
+ -u ${KAMAILIO_USER:-kamailio} \
+ -g ${KAMAILIO_GROUP:-kamailio} \
+ -P $pidfile \
+ ${KAMAILIO_OPTS:-}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Kamailio"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ eend $?
+}
diff --git a/testing/kamailio/kamailio.post-install b/testing/kamailio/kamailio.post-install
new file mode 100644
index 00000000..19fc932d
--- /dev/null
+++ b/testing/kamailio/kamailio.post-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+chown -R kamailio:kamailio /var/run/kamailio
+chgrp kamailio /etc/kamailio/kamailio.cfg
+exit 0
diff --git a/testing/kamailio/kamailio.pre-install b/testing/kamailio/kamailio.pre-install
new file mode 100644
index 00000000..78dfa38b
--- /dev/null
+++ b/testing/kamailio/kamailio.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+adduser -H -h /var/empty -s /bin/false -D kamailio 2>/dev/null
+
+exit 0
diff --git a/testing/knock/APKBUILD b/testing/knock/APKBUILD
new file mode 100644
index 00000000..8804dac3
--- /dev/null
+++ b/testing/knock/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=knock
+pkgver=0.5
+pkgrel=1
+pkgdesc="A simple port-knocking daemon"
+url="http://www.zeroflux.org/projects/knock"
+license="GPL"
+depends="iptables"
+makedepends="libpcap-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://www.zeroflux.org/proj/knock/files/$pkgname-$pkgver.tar.gz
+ knock.initd
+ knock.confd"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make -j1 || return 1
+ make -j1 DESTDIR="$pkgdir" install
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/knockd
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/knockd
+}
+
+md5sums="ca09d61458974cff90a700aba6120891 knock-0.5.tar.gz
+5f05196d700c04287523d184226e2dc2 knock.initd
+8067d3b8401a0b5d513c44d3ff436032 knock.confd"
diff --git a/testing/knock/knock.confd b/testing/knock/knock.confd
new file mode 100644
index 00000000..301ccc19
--- /dev/null
+++ b/testing/knock/knock.confd
@@ -0,0 +1,6 @@
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/net-misc/knock/files/knockd.confd,v 1.2 2004/07/15 00:01:08 agriffis Exp $
+
+# options for knockd daemon
+OPTS="-d -i eth0"
diff --git a/testing/knock/knock.initd b/testing/knock/knock.initd
new file mode 100644
index 00000000..b83c5c74
--- /dev/null
+++ b/testing/knock/knock.initd
@@ -0,0 +1,21 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/net-misc/knock/files/knockd.initd,v 1.2 2004/07/15 00:01:08 agriffis Exp $
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting knockd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/knockd -- ${OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping knockd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/knockd
+ eend $?
+}
diff --git a/testing/kqemu-grsec/APKBUILD b/testing/kqemu-grsec/APKBUILD
new file mode 100644
index 00000000..66a0ea09
--- /dev/null
+++ b/testing/kqemu-grsec/APKBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+
+_flavor=grsec
+_realname=kqemu
+# source the kernel version
+if [ -f ../../main/linux-$_flavor/APKBUILD ]; then
+ . ../../main/linux-$_flavor/APKBUILD
+fi
+_kernelver=$pkgver-r$pkgrel
+_abi_release=$pkgver-${_flavor}
+_kpkgrel=$pkgrel
+
+pkgname=${_realname}-${_flavor}
+pkgver=$pkgver
+_realver=1.4.0pre1
+_mypkgrel=0
+pkgrel=$(($_kpkgrel + $_mypkgrel))
+pkgdesc="$_flavor kernel modules for kemu $_realver"
+url="http://www.nongnu.org/qemu/"
+license="GPL"
+depends="linux-${_flavor}=${_kernelver}"
+install=
+makedepends="linux-${_flavor}-dev=${_kernelver}"
+subpackages=
+source="http://www.nongnu.org/qemu/kqemu-$_realver.tar.gz"
+
+# override kernel APKBUILD's prepare
+prepare() {
+ :
+}
+
+build() {
+ cd "$srcdir"/$_realname-$_realver
+ ./configure --kernel-path=/lib/modules/${_abi_release}/build
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$_realname-$_realver
+ install -D -m644 kqemu.ko \
+ "$pkgdir"/lib/modules/${_abi_release}/misc/kqemu.ko \
+ || return 1
+}
+md5sums="d738d8ca7332211ab716ec3213d82ee1 kqemu-1.4.0pre1.tar.gz"
diff --git a/testing/libaio/APKBUILD b/testing/libaio/APKBUILD
new file mode 100644
index 00000000..0951b758
--- /dev/null
+++ b/testing/libaio/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Leonardo Arena <rnalrd@gmail.com>
+# Maintainer: Leonardo Arena <rnalrd@gmail.com>
+pkgname="libaio"
+pkgver="0.3.107"
+pkgrel=1
+pkgdesc="Asynchronous input/output library"
+url="http://lse.sourceforge.net/io/aio.html"
+license="LGPL-2"
+depends=
+makedepends=
+install=
+subpackages="$pkgname-dev"
+source="http://distfiles.gentoo.org/distfiles/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ make prefix="$pkgdir/usr" \
+ sysconfdir="$pkgdir/etc" \
+ mandir="$pkgdir/usr/share/man" \
+ infodir="$pkgdir/usr/share/info" \
+ install || return 1
+}
+
+md5sums="db32c19c61ca937bcb1ba48da9180682 libaio-0.3.107.tar.gz"
diff --git a/testing/libnetfilter_log/APKBUILD b/testing/libnetfilter_log/APKBUILD
new file mode 100644
index 00000000..b2c4dfcc
--- /dev/null
+++ b/testing/libnetfilter_log/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=libnetfilter_log
+pkgver=0.0.16
+pkgrel=0
+pkgdesc="interface to packets that have been logged by the kernel packet filter"
+url="http://www.netfilter.org/projects/libnetfilter_log/"
+license="GPL-2"
+depends="libnfnetlink"
+makedepends="libnfnetlink-dev pkgconfig"
+subpackages="$pkgname-dev"
+source="http://www.netfilter.org/projects/libnetfilter_log/files/libnetfilter_log-0.0.16.tar.bz2"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+}
+
+md5sums="4ffcf46dad9d0c81f6611dd185639694 libnetfilter_log-0.0.16.tar.bz2"
diff --git a/testing/libnl/APKBUILD b/testing/libnl/APKBUILD
new file mode 100644
index 00000000..9db755ae
--- /dev/null
+++ b/testing/libnl/APKBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=libnl
+pkgver=1.1
+pkgrel=0
+pkgdesc="Library for applications dealing with netlink sockets"
+url="http://people.suug.ch/~tgr/libnl"
+license="GPL"
+depends=
+makedepends=
+subpackages="$pkgname-dev"
+source="http://distfiles.gentoo.org/distfiles/$pkgname-$pkgver.tar.gz
+ libnl-1.1-flags.patch
+ libnl-1.1-minor-leaks.patch
+ libnl-1.1-vlan-header.patch
+ libnl-1.1-glibc-2.8-ULONG_MAX.patch
+ "
+
+_builddir="$srcdir"/libnl-$pkgver
+
+prepare () {
+ cd "$_builddir"
+ for i in "$srcdir"/*.patch; do
+ [ -r "$i" ] || continue
+ msg "Applying $i"
+ patch -s -p1 -i $i || return 1
+ done
+}
+
+build () {
+ cd "$_builddir"
+ ./configure --prefix=/usr || return 1
+ make || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="$pkgdir" install || return 1
+}
+
+md5sums="ae970ccd9144e132b68664f98e7ceeb1 libnl-1.1.tar.gz
+9c9072ac8b74135798e0ebcf2d90290d libnl-1.1-flags.patch
+3a42f98cfb353f2469ac3c44b7c0a027 libnl-1.1-minor-leaks.patch
+d757127e7af3bd3c82cdb51b1b09d2e0 libnl-1.1-vlan-header.patch
+9169c7eec8a2b4b2556dd26ac73c6020 libnl-1.1-glibc-2.8-ULONG_MAX.patch"
diff --git a/testing/libnl/libnl-1.1-flags.patch b/testing/libnl/libnl-1.1-flags.patch
new file mode 100644
index 00000000..bb09b362
--- /dev/null
+++ b/testing/libnl/libnl-1.1-flags.patch
@@ -0,0 +1,11 @@
+--- libnl-1.1/lib/Makefile.orig 2008-01-14 16:48:45.000000000 +0100
++++ libnl-1.1/lib/Makefile 2009-05-26 09:47:42.000000000 +0200
+@@ -48,7 +48,7 @@
+
+ $(OUT_SLIB): ../Makefile.opts $(OBJ)
+ @echo " LD $(OUT_SLIB)"; \
+- $(CC) -shared -Wl,-soname,libnl.so.1 -o $(OUT_SLIB) $(OBJ) $(LIBNL_LIB) -lc
++ $(CC) $(CFLAGS) $(LDFLAGS) -shared -Wl,-soname,libnl.so.1 -o $(OUT_SLIB) $(OBJ) $(LIBNL_LIB) -lc
+ @echo " LN $(OUT_SLIB) $(LN1_SLIB)"; \
+ rm -f $(LN1_SLIB) ; $(LN) -s $(OUT_SLIB) $(LN1_SLIB)
+ @echo " LN $(LN1_SLIB) $(LN_SLIB)"; \
diff --git a/testing/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch b/testing/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch
new file mode 100644
index 00000000..c4082cba
--- /dev/null
+++ b/testing/libnl/libnl-1.1-glibc-2.8-ULONG_MAX.patch
@@ -0,0 +1,13 @@
+https://bugs.gentoo.org/show_bug.cgi?id=225393
+
+--- a/include/netlink-local.h 2008-06-09 07:54:20 +0000
++++ b/include/netlink-local.h 2008-06-09 07:54:47 +0000
+@@ -26,6 +26,7 @@
+ #include <sys/socket.h>
+ #include <inttypes.h>
+ #include <assert.h>
++#include <limits.h>
+
+ #include <arpa/inet.h>
+ #include <netdb.h>
+
diff --git a/testing/libnl/libnl-1.1-minor-leaks.patch b/testing/libnl/libnl-1.1-minor-leaks.patch
new file mode 100644
index 00000000..855a6ab3
--- /dev/null
+++ b/testing/libnl/libnl-1.1-minor-leaks.patch
@@ -0,0 +1,40 @@
+From: Patrick McHardy <kaber@trash.net>
+Date: Fri, 18 Jan 2008 16:55:49 +0000 (+0100)
+Subject: [LIBNL]: Fix minor memleaks on exit
+X-Git-Url: http://git.kernel.org/?p=libs%2Fnetlink%2Flibnl.git;a=commitdiff_plain;h=b64f15d6f947839236fa276d473d238f8c9b9d57;hp=e91bb2ffb090955d443e643a25b250bf3d33534a
+
+[LIBNL]: Fix minor memleaks on exit
+
+Make valgrind happy ...
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+---
+
+diff --git a/lib/route/route_utils.c b/lib/route/route_utils.c
+index a12d169..1386cda 100644
+--- a/lib/route/route_utils.c
++++ b/lib/route/route_utils.c
+@@ -63,6 +63,11 @@ static void __init init_routing_table_names(void)
+ add_routing_table_name(RT_TABLE_LOCAL, "local");
+ };
+
++static void __exit release_routing_table_names(void)
++{
++ __trans_list_clear(&table_names);
++}
++
+ int rtnl_route_read_table_names(const char *path)
+ {
+ __trans_list_clear(&table_names);
+@@ -104,6 +109,11 @@ static void __init init_proto_names(void)
+ add_proto_name(RTPROT_STATIC, "static");
+ };
+
++static void __exit release_proto_names(void)
++{
++ __trans_list_clear(&proto_names);
++}
++
+ int rtnl_route_read_protocol_names(const char *path)
+ {
+ __trans_list_clear(&proto_names);
diff --git a/testing/libnl/libnl-1.1-vlan-header.patch b/testing/libnl/libnl-1.1-vlan-header.patch
new file mode 100644
index 00000000..c4c2fc63
--- /dev/null
+++ b/testing/libnl/libnl-1.1-vlan-header.patch
@@ -0,0 +1,80 @@
+From: Patrick McHardy <kaber@trash.net>
+Date: Fri, 18 Jan 2008 16:55:48 +0000 (+0100)
+Subject: [LIBNL]: Add if_vlan.h
+X-Git-Url: http://git.kernel.org/?p=libs%2Fnetlink%2Flibnl.git;a=commitdiff_plain;h=e91bb2ffb090955d443e643a25b250bf3d33534a;hp=7f6b7a8eea0334b34d58dec72c66121a76f08958
+
+[LIBNL]: Add if_vlan.h
+
+vlan support needs VLAN_FLAG_REORDER_HDR, which is not available in
+older if_vlan.h versions. Add the current version from the kernel.
+
+Signed-off-by: Patrick McHardy <kaber@trash.net>
+---
+
+diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
+new file mode 100644
+index 0000000..068cd7b
+--- /dev/null
++++ include/linux/if_vlan.h
+@@ -0,0 +1,61 @@
++/*
++ * VLAN An implementation of 802.1Q VLAN tagging.
++ *
++ * Authors: Ben Greear <greearb@candelatech.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.
++ *
++ */
++
++#ifndef _LINUX_IF_VLAN_H_
++#define _LINUX_IF_VLAN_H_
++
++
++/* VLAN IOCTLs are found in sockios.h */
++
++/* Passed in vlan_ioctl_args structure to determine behaviour. */
++enum vlan_ioctl_cmds {
++ ADD_VLAN_CMD,
++ DEL_VLAN_CMD,
++ SET_VLAN_INGRESS_PRIORITY_CMD,
++ SET_VLAN_EGRESS_PRIORITY_CMD,
++ GET_VLAN_INGRESS_PRIORITY_CMD,
++ GET_VLAN_EGRESS_PRIORITY_CMD,
++ SET_VLAN_NAME_TYPE_CMD,
++ SET_VLAN_FLAG_CMD,
++ GET_VLAN_REALDEV_NAME_CMD, /* If this works, you know it's a VLAN device, btw */
++ GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
++};
++
++enum vlan_flags {
++ VLAN_FLAG_REORDER_HDR = 0x1,
++};
++
++enum vlan_name_types {
++ VLAN_NAME_TYPE_PLUS_VID, /* Name will look like: vlan0005 */
++ VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like: eth1.0005 */
++ VLAN_NAME_TYPE_PLUS_VID_NO_PAD, /* Name will look like: vlan5 */
++ VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD, /* Name will look like: eth0.5 */
++ VLAN_NAME_TYPE_HIGHEST
++};
++
++struct vlan_ioctl_args {
++ int cmd; /* Should be one of the vlan_ioctl_cmds enum above. */
++ char device1[24];
++
++ union {
++ char device2[24];
++ int VID;
++ unsigned int skb_priority;
++ unsigned int name_type;
++ unsigned int bind_type;
++ unsigned int flag; /* Matches vlan_dev_info flags */
++ } u;
++
++ short vlan_qos;
++};
++
++#endif /* !(_LINUX_IF_VLAN_H_) */
diff --git a/testing/madplay/APKBUILD b/testing/madplay/APKBUILD
new file mode 100644
index 00000000..8d2807b7
--- /dev/null
+++ b/testing/madplay/APKBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=madplay
+pkgver=0.15.2b
+pkgrel=0
+pkgdesc="The MAD audio player"
+url="http://www.underbit.com/products/mad/"
+license="GPL-2"
+depends=""
+makedepends="alsa-lib-dev libmad-dev libid3tag-dev"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/mad/madplay-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --disable-nls \
+ --with-alsa \
+ || return 1
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="6814b47ceaa99880c754c5195aa1aac1 madplay-0.15.2b.tar.gz"
diff --git a/testing/madwimax/APKBUILD b/testing/madwimax/APKBUILD
new file mode 100644
index 00000000..251ff801
--- /dev/null
+++ b/testing/madwimax/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Sergey
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=madwimax
+pkgver=0.1.1
+pkgrel=0
+pkgdesc="WiMAX driver for the Samsung SWC-U200 and similar USB modems"
+url="http://code.google.com/p/madwimax/"
+license="GPL-2"
+depends=
+makedepends="pkgconfig libusb-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://madwimax.googlecode.com/files/madwimax-0.1.1.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --without-man-pages \
+ || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+#2009-10-07,SP: you can start it simply by /usr/sbin/madwimax -d
+#, so no init.d script so far...
+
+}
+
+md5sums="4ebd2d74e887e6f9d6f23067a4ad8272 madwimax-0.1.1.tar.gz"
diff --git a/testing/mediaproxy/APKBUILD b/testing/mediaproxy/APKBUILD
new file mode 100644
index 00000000..b8077fe8
--- /dev/null
+++ b/testing/mediaproxy/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor:
+# Maintainer:
+pkgname=mediaproxy
+pkgver=2.3.8
+pkgrel=2
+pkgdesc="MediaProxy"
+url="http://www.ag-projects.com/MediaProxy/"
+pkgusers="kamailio"
+pkggroups="kamailio"
+license="GPL"
+depends="python python-application python-gnutls twisted python-cjson iptables"
+makedepends="libnetfilter_conntrack-dev libnfnetlink-dev python26-buildutils
+ python26-setuptools python-dev"
+install=
+subpackages=""
+#subpackages="$pkgname-dev $pkgname-doc"
+source="http://download.ag-projects.com/MediaProxy/$pkgname-$pkgver.tar.gz
+ mediaproxy-dispatcher.initd
+ mediaproxy-relay.initd
+ config.ini
+"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/lib/python2.6/site-packages
+
+ python setup.py install --root="$pkgdir"
+
+ echo "/usr/lib/python2.6/site-packages/$_pkgname-$pkgver-py2.6.egg" \
+ > "$pkgdir"/usr/lib/python2.6/site-packages/$_pkgname.pth
+
+ install -D -m755 "$srcdir"/$pkgname-dispatcher.initd \
+ "$pkgdir"/etc/init.d/$pkgname-dispatcher
+ install -D -m755 "$srcdir"/$pkgname-relay.initd \
+ "$pkgdir"/etc/init.d/$pkgname-relay
+ install -D -m755 "$srcdir"/config.ini \
+ "$pkgdir"/etc/mediaproxy/config.ini
+ install -d -o kamailio "$pkgdir"/etc/mediaproxy/tls/
+ install -d -o kamailio "$pkgdir"/var/run/$pkgname
+}
+
+md5sums="8914a2b69415946e5ffdb843823b3ef1 mediaproxy-2.3.8.tar.gz
+cf081e451ab5d8d5ff66a8d9fa6707d6 mediaproxy-dispatcher.initd
+1add855d86ead49c19798e9d86c69efe mediaproxy-relay.initd
+d3df3569543d696ca102f131f7ad95e4 config.ini"
diff --git a/testing/mediaproxy/config.ini b/testing/mediaproxy/config.ini
new file mode 100644
index 00000000..995c006d
--- /dev/null
+++ b/testing/mediaproxy/config.ini
@@ -0,0 +1,19 @@
+[Dispatcher]
+socket = /var/run/mediaproxy/proxydispatcher.sock
+defaultproxy = /var/run/mediaproxy/mediaproxy.sock
+
+[MediaProxy]
+start = yes
+socket = /var/run/mediaproxy/mediaproxy.sock
+group = kamailio
+listen = 0.0.0.0
+allow = None
+proxyIP = # This is where your Kamailio is installed
+portRange = 9000:9049 # These values are set same in ATA's configs for RTP Port Range
+idleTimeout = 60
+holdTimeout = 180
+forceClose = 0
+
+[Accounting]
+accounting = off
+
diff --git a/testing/mediaproxy/mediaproxy-dispatcher.initd b/testing/mediaproxy/mediaproxy-dispatcher.initd
new file mode 100644
index 00000000..9b37a7e0
--- /dev/null
+++ b/testing/mediaproxy/mediaproxy-dispatcher.initd
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+
+daemon=/usr/bin/media-dispatcher
+pidfile=/var/run/mediaproxy/dispatcher.pid
+
+depend() {
+ need net
+ after firewall
+ after kamailio
+}
+
+start() {
+ ebegin "Starting Mediaproxy Dispatcher"
+ start-stop-daemon --start --verbose --pidfile $pidfile --exec $daemon
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Mediaproxy Dispatcher"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ eend $?
+}
diff --git a/testing/mediaproxy/mediaproxy-relay.initd b/testing/mediaproxy/mediaproxy-relay.initd
new file mode 100644
index 00000000..09b842f0
--- /dev/null
+++ b/testing/mediaproxy/mediaproxy-relay.initd
@@ -0,0 +1,22 @@
+#!/sbin/runscript
+
+daemon=/usr/bin/media-relay
+pidfile=/var/run/mediaproxy/relay.pid
+
+depend() {
+ need net
+ after firewall
+ after mediaproxy-dispatcher
+}
+
+start() {
+ ebegin "Starting Mediaproxy Relay"
+ start-stop-daemon --start --quiet --pidfile $pidfile --exec $daemon
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping Mediaproxy Relay"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ eend $?
+}
diff --git a/testing/minicom/APKBUILD b/testing/minicom/APKBUILD
new file mode 100644
index 00000000..5d0c638e
--- /dev/null
+++ b/testing/minicom/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=minicom
+pkgver=2.3
+pkgrel=0
+pkgdesc="menu driven communications program for terminals"
+url="http://alioth.debian.org/projects/minicom"
+license="GPL"
+depends=
+makedepends="ncurses-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://alioth.debian.org/frs/download.php/2332/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --without-libintl-prefix
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+}
+
+md5sums="0ebe7a91898384ca906787cc4e2c3f25 minicom-2.3.tar.gz"
diff --git a/testing/mp3info/APKBUILD b/testing/mp3info/APKBUILD
new file mode 100644
index 00000000..6a52c3b6
--- /dev/null
+++ b/testing/mp3info/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=mp3info
+pkgver=0.8.5a
+pkgrel=0
+pkgdesc="An MP3 technical info viewer and ID3 1.x tag editor"
+url="http://www.ibiblio.org/mp3info/"
+license="GPL"
+depends="uclibc ncurses"
+makedepends="ncurses-dev"
+subpackages=""
+source="ftp://ftp.ibiblio.org/pub/linux/apps/sound/mp3-utils/mp3info/mp3info-0.8.5a.tgz
+escape_chars.patch"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ patch -p1 -i "$srcdir"/escape_chars.patch || return 1
+
+ make mp3info || return 1
+ install -Dm755 mp3info "$pkgdir"/usr/bin/mp3info
+ install -Dm644 mp3info.1 "$pkgdir"/usr/share/man/man1/mp3info.1
+
+}
+
+md5sums="cb7b619a10a40aaac2113b87bb2b2ea2 mp3info-0.8.5a.tgz
+d0be1068503056b775bf10f05a8497b8 escape_chars.patch"
diff --git a/testing/mp3info/escape_chars.patch b/testing/mp3info/escape_chars.patch
new file mode 100644
index 00000000..ec697a28
--- /dev/null
+++ b/testing/mp3info/escape_chars.patch
@@ -0,0 +1,138 @@
+--- orig/mp3info-0.8.5a/mp3info.c Mon Nov 6 04:03:17 2006
++++ mp3info-0.8.5a/mp3info.c Thu Mar 19 12:33:27 2009
+@@ -32,6 +32,7 @@
+ #undef __MAIN
+ #include <sys/stat.h>
+
++char *escape_chars=NULL;
+ char FILENAME_FORMAT_STRING[]="File: %F\n";
+ char ID3_FORMAT_STRING[]="Title: %-30t Track: %n\nArtist: %a\nAlbum: %-30l Year: %y\nComment: %-30c Genre: %g [%G]\n";
+ char TECH_FORMAT_STRING[]="Media Type: MPEG %2.1v Layer %L\nAudio: %r KB/s, %qKHz (%o)\nEmphasis: %e\nCRC: %E\nCopyright: %C\nOriginal: %O\nPadding: %p\nLength: %m:%02s\n";
+@@ -66,7 +67,7 @@
+
+
+
+- while ((c=getopt(argc,argv,"vhGidfxFt:a:l:y:c:n:g:p:r:"))!=-1) {
++ while ((c=getopt(argc,argv,"vhGidfxFmt:a:l:y:c:n:g:p:r:e:"))!=-1) {
+
+ switch(c) {
+ case 'v': /* View mode is now automatic when no changes are
+@@ -159,6 +160,12 @@
+ }
+ break;
+ case 'F': quickscan=0; break;
++ case 'e':
++ escape_chars = optarg;
++ break;
++ case 'm':
++ escape_chars = "'\"\b\n\r\t\\";
++ break;
+ }
+ }
+
+--- orig/mp3info-0.8.5a/mp3info.h Fri Nov 10 00:14:52 2006
++++ mp3info-0.8.5a/mp3info.h Thu Mar 19 10:42:07 2009
+@@ -111,6 +111,7 @@
+ extern int galphagenreindex [MAXGENRE+2];
+ #endif
+
++extern char *escape_chars;
+ void tagedit_curs(char *filename, int filenum, int fileoutof, id3tag *tag);
+
+
+--- orig/mp3info-0.8.5a/textfunc.c Mon Nov 6 08:59:12 2006
++++ mp3info-0.8.5a/textfunc.c Thu Mar 19 12:24:52 2009
+@@ -24,6 +24,7 @@
+ */
+
+ #include "mp3info.h"
++#include "libgen.h"
+
+ char *layer_text[] = {
+ "I", "II", "III"
+@@ -70,6 +71,8 @@
+ "\t-n track\tSpecify ID3 v1.1 track number\n"\
+ "\t-t title\tSpecify ID3 track title\n"\
+ "\t-y year\t\tSpecify ID3 copyright year\n\n"\
++ "\t-m\t\tMySQL safe output\n"\
++ "\t-e\t\tCharacters to escape\n"\
+ "\t-G\t\tDisplay valid genres\n"\
+ "\t-h\t\tDisplay this help page\n"\
+ "\t-x\t\tDisplay technical attributes of the MP3 file\n"\
+@@ -85,6 +88,7 @@
+ "\n\t\tConversion Specifiers\n\n"\
+ "\t\t%%f\tFilename without the path (string)\n"\
+ "\t\t%%F\tFilename with the path (string)\n"\
++ "\t\t%%d\tPath without filename (string)\n"\
+ "\t\t%%k\tFile size in KB (integer)\n"\
+ "\n\t\t%%a\tArtist (string)\n"\
+ "\t\t%%c\tComment (string)\n"\
+@@ -217,7 +221,27 @@
+ }
+ }
+
++/* const char *escape_chars = "'\"\b\n\r\t\\%_"; */
++/* escape the chars so its sql safe */
++char *escape_string(char *str)
++{
++ static char buf[8192];
++ char *src = str;
++ char *dest = buf;
+
++ /* we might want a cmdline flag to enable escaping */
++ if (escape_chars == NULL || str == NULL)
++ return str;
++
++ while (*src && dest < (buf + sizeof(buf) - 1)) {
++ if (strchr(escape_chars, *src))
++ *dest++ = '\\';
++ *dest++ = *src++;
++ }
++ *dest = '\0';
++ return buf;
++}
++
+ void format_output (char *format_string,mp3info *mp3, int vbr_report) {
+
+ char genre[40]="";
+@@ -242,16 +266,16 @@
+ mod[modlen]=0;
+ mod[modlen-1]='s';
+ switch (*code) {
+- case 't': printf(mod,mp3->id3.title); break;
++ case 't': printf(mod,escape_string(mp3->id3.title)); break;
+ case 'f': pos = (pos=strrchr(mp3->filename,'/')) ?
+ pos+1 : mp3->filename;
+- printf(mod,pos); break;
+- case 'F': printf(mod,mp3->filename); break;
+- case 'a': printf(mod,mp3->id3.artist); break;
+- case 'l': printf(mod,mp3->id3.album); break;
++ printf(mod,escape_string(pos)); break;
++ case 'F': printf(mod,escape_string(mp3->filename)); break;
++ case 'a': printf(mod,escape_string(mp3->id3.artist)); break;
++ case 'l': printf(mod,escape_string(mp3->id3.album)); break;
+ case 'k': mod[modlen-1] = 'd'; printf(mod,mp3->datasize / 1024); break;
+- case 'y': printf(mod,mp3->id3.year); break;
+- case 'c': printf(mod,mp3->id3.comment); break;
++ case 'y': printf(mod,escape_string(mp3->id3.year)); break;
++ case 'c': printf(mod,escape_string(mp3->id3.comment)); break;
+ case 'n': if(mp3->id3_isvalid && mp3->id3.track[0]) {
+ mod[modlen-1]='d';
+ printf(mod, (int) mp3->id3.track[0]);
+@@ -259,7 +283,7 @@
+ break;
+ case 'g': if(mp3->id3_isvalid) {
+ text_genre(mp3->id3.genre,genre);
+- printf(mod,genre);
++ printf(mod,escape_string(genre));
+ }
+ break;
+ case 'G': if(mp3->id3_isvalid) {
+@@ -348,6 +372,7 @@
+ }
+ break;
+ case '%': printf("%%"); break;
++ case 'd': printf(mod,escape_string(dirname(mp3->filename))); break;
+ default: printf("%%%c",*(code=percent+1)); break;
+ }
+ format=code+1;
diff --git a/testing/mtx/APKBUILD b/testing/mtx/APKBUILD
new file mode 100644
index 00000000..5d706bc4
--- /dev/null
+++ b/testing/mtx/APKBUILD
@@ -0,0 +1,23 @@
+# Contributor: Leonardo Arena <rnalrd@gmail.com>
+# Maintainer: Leonardo Arena <rnalrd@gmail.com>
+pkgname="mtx"
+pkgver=1.3.12
+pkgrel=0
+pkgdesc="SCSI Media Changer and Backup Device Control"
+url="http://mtx.opensource-sw.net/"
+license="GPL2"
+depends=""
+makedepends=""
+install=""
+subpackages=""
+source="http://downloads.sourceforge.net/mtx/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+ ./configure --prefix=/usr \
+ --datadir=/usr/share
+ make || return 1
+ make prefix="$pkgdir" install
+}
+
+md5sums="ce8f0e44671fb0c7d9ec30bb0bfa8b5c mtx-1.3.12.tar.gz"
diff --git a/testing/multipath-tools/APKBUILD b/testing/multipath-tools/APKBUILD
new file mode 100644
index 00000000..471d9de2
--- /dev/null
+++ b/testing/multipath-tools/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: Leonardo Arena <rnalrd@gmail.com>
+# Maintainer: Leonardo Arena <rnalrd@gmail.com>
+pkgname="multipath-tools"
+pkgver=0.4.8
+pkgrel=2
+pkgdesc="Device Mapper Multipathing Driver"
+url="http://christophe.varoqui.free.fr/"
+license="GPL"
+depends=
+makedepends="lvm2-dev libaio-dev readline-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://christophe.varoqui.free.fr/$pkgname/$pkgname-$pkgver.tar.bz2
+ Makefile.patch"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ patch Makefile < ../Makefile.patch || return 1
+ find . -name Makefile -exec sed -i -e 's/glibc/uclibc/g' {} \;
+
+ make -j1 \
+ prefix="/usr" \
+ sysconfdir="/etc" \
+ mandir="/usr/share/man" \
+ infodir="/usr/share/info" || return 1
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="3563b863b408d07c46929b6e8c2c248c multipath-tools-0.4.8.tar.bz2
+92318268d20a9622cdb9909d153c4ccd Makefile.patch"
diff --git a/testing/multipath-tools/Makefile.patch b/testing/multipath-tools/Makefile.patch
new file mode 100644
index 00000000..ddf7058d
--- /dev/null
+++ b/testing/multipath-tools/Makefile.patch
@@ -0,0 +1,11 @@
+--- src/multipath-tools-0.4.8/Makefile Thu Aug 2 21:05:37 2007
++++ Makefile Fri Feb 27 09:57:19 2009
+@@ -20,7 +20,7 @@
+ export KRNLSRC
+ export KRNLOBJ
+
+-BUILDDIRS = $(shell find . -mindepth 2 -name Makefile -exec dirname {} \; | grep -vE '^lib|/\.')
++BUILDDIRS = $(shell find . -name Makefile -exec dirname {} \; | grep -vE '^lib|/\.'|grep -v '^\.$$')
+
+ ifeq ($(MULTIPATH_VERSION),)
+ VERSION = $(shell basename ${PWD} | cut -d'-' -f3)
diff --git a/testing/nagios/APKBUILD b/testing/nagios/APKBUILD
new file mode 100644
index 00000000..0234cac1
--- /dev/null
+++ b/testing/nagios/APKBUILD
@@ -0,0 +1,55 @@
+# Contributor: Carlo Landmeter <clandmeter at gmail>
+# Maintainer: Carlo Landmeter <clandmeter at gmail>
+pkgname=nagios
+pkgver=3.1.0
+pkgrel=1
+pkgdesc="Popular monitoring tool"
+url="http://www.nagios.org/"
+license="GPL-2"
+depends="perl"
+makedepends="gd-dev pkgconfig perl-dev"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+nagios.confd
+nagios.initd
+lighttpd-nagios.conf"
+subpackages="${pkgname}-web"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/nagios \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --datadir=/usr/share/nagios \
+ --localstatedir=/var \
+ --bindir=/usr/sbin \
+ --sbindir=/usr/lib/nagios/cgi-bin \
+ --datadir=/usr/share/nagios/htdocs \
+ --libexecdir=/usr/lib/nagios/plugins \
+ --localstatedir=/var/nagios \
+ --with-nagios-user=nobody \
+ --with-nagios-group=nobody \
+ --enable-embedded-perl \
+ --with-perlcache
+ make all || return 1
+ make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install-config
+ make DESTDIR="$pkgdir" install-commandmode
+
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+
+web() {
+ #depends="php lighttpd"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/share "$subpkgdir"/usr/
+ install -m644 -D "$srcdir"/lighttpd-nagios.conf "$subpkgdir"/etc/lighttpd-nagios.conf
+}
+
+md5sums="02d3b0e13f772481d0ac9e00bdc3e979 nagios-3.1.0.tar.gz
+431dfe7403323e247a88b97beade5d78 nagios.confd
+2ead8695b32222abe922692664aa9de1 nagios.initd
+d63c36f47d26f1f71ae2faf272eec640 lighttpd-nagios.conf"
diff --git a/testing/nagios/lighttpd-nagios.conf b/testing/nagios/lighttpd-nagios.conf
new file mode 100644
index 00000000..cb7081d8
--- /dev/null
+++ b/testing/nagios/lighttpd-nagios.conf
@@ -0,0 +1,29 @@
+###
+# Sample nagios lighttpd config
+###
+
+server.modules += ("mod_cgi")
+server.modules += ("mod_auth")
+server.modules += ("mod_alias")
+
+auth.require += ( "/nagios" =>
+ (
+ "method" => "digest",
+ "realm" => "nagios",
+ "require" => "valid-user"
+ )
+)
+
+$HTTP["url"] =~ "^/nagios/cgi-bin/" {
+ dir-listing.activate = "disable"
+ cgi.assign = (
+ ".pl" => "/usr/bin/perl",
+ ".cgi" => ""
+ )
+}
+
+alias.url += (
+ "/nagios/cgi-bin" => "/usr/lib/nagios/cgi-bin",
+ "/nagios" => "/usr/share/nagios/htdocs"
+)
+
diff --git a/testing/nagios/nagios.confd b/testing/nagios/nagios.confd
new file mode 100644
index 00000000..0abb80c6
--- /dev/null
+++ b/testing/nagios/nagios.confd
@@ -0,0 +1,9 @@
+# Sample conf.d file for alpine linux
+
+#
+# Specify daemon $OPTS here.
+#
+
+OPTS=""
+USER="nobody"
+GROUP="nobody"
diff --git a/testing/nagios/nagios.initd b/testing/nagios/nagios.initd
new file mode 100644
index 00000000..e0b3bcf0
--- /dev/null
+++ b/testing/nagios/nagios.initd
@@ -0,0 +1,39 @@
+#!/sbin/runscript
+
+# Sample init.d file for alpine linux.
+
+NAME=nagios
+DAEMON=/usr/sbin/$NAME
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting ${NAME}"
+ start-stop-daemon --start --quiet --background \
+ --make-pidfile --pidfile /var/run/${NAME}.pid \
+ --exec ${DAEMON} -- ${OPTS} /etc/nagios/nagios.cfg
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${NAME}"
+ start-stop-daemon --stop --quiet \
+ --exec ${DAEMON} \
+ --pidfile /var/run/${NAME}.pid \
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading ${NAME}"
+ if ! service_started "${NAME}" ; then
+ eend 1 "${NAME} is not started"
+ return 1
+ fi
+ start-stop-daemon --stop --oknodo --signal HUP \
+ --exec ${DAEMON} --pidfile /var/run/${NAME}.pid
+ eend $?
+}
+
diff --git a/testing/opensips-cp/APKBUILD b/testing/opensips-cp/APKBUILD
new file mode 100644
index 00000000..3d7ea8c7
--- /dev/null
+++ b/testing/opensips-cp/APKBUILD
@@ -0,0 +1,21 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=opensips-cp
+pkgver=2.0
+pkgrel=0
+pkgdesc="Web Control Panel Application for the OpenSIPS SIP server"
+url="http://opensips-cp.sourceforge.net/"
+license="GPL"
+depends="php"
+makedepends=""
+install=
+options="!strip"
+#subpackages="$pkgname-doc $pkgname-dev"
+source="http://downloads.sourceforge.net/$pkgname/${pkgname}_$pkgver.tgz"
+
+build() {
+ mkdir -p "$pkgdir"/usr/share/webapps
+ cp -r "$srcdir"/$pkgname "$pkgdir"/usr/share/webapps/$pkgname
+}
+
+md5sums="c9b4f4476e231e0d64682c2b07c66965 opensips-cp_2.0.tgz"
diff --git a/testing/opensips/APKBUILD b/testing/opensips/APKBUILD
new file mode 100644
index 00000000..d54b3dec
--- /dev/null
+++ b/testing/opensips/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=opensips
+pkgver=1.5.0
+pkgrel=4
+pkgdesc="Flexible and customizable sip routing engine"
+url="http://www.opensips.org/"
+license="GPL"
+depends="uclibc expat"
+makedepends="bison flex expat-dev coreutils"
+install="$pkgname.pre-install $pkgname.post-install"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver-notls_src.tar.gz
+ $install
+ $pkgname.initd"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver-notls"
+ sed -i -e 's:^cfg-target.*:cfg-target = $(cfg-dir):' \
+ -e 's:^cfg-prefix.*:cfg-prefix = $(basedir):' Makefile.defs
+
+ cd scripts
+ sed -i -e 's:/var/run/opensips.pid:/var/run/opensips/opensips.pid:g' \
+ opensipsctl.base opensipsctlrc osipsconsole osipsconsolerc
+ cd ..
+
+ make prefix=/usr || return 1
+ make prefix=/usr basedir="$pkgdir" install
+ chmod 750 "$pkgdir"/etc/opensips/opensips.cfg
+ install -d "$pkgdir"/var/run/opensips
+ install -Dm755 ../$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+}
+
+md5sums="ba99592a6e42e8b4dc2d38964420dfec opensips-1.5.0-notls_src.tar.gz
+3a8a5d3c4c23ce9f2fc60b449ad61820 opensips.pre-install
+d9b551148d2b60466c05b4295b935091 opensips.post-install
+7fb51d35517f7f10cfe6e89139f7060a opensips.initd"
diff --git a/testing/opensips/opensips.initd b/testing/opensips/opensips.initd
new file mode 100644
index 00000000..09c03fd5
--- /dev/null
+++ b/testing/opensips/opensips.initd
@@ -0,0 +1,26 @@
+#!/sbin/runscript
+
+daemon=/usr/sbin/opensips
+pidfile=/var/run/opensips/opensips.pid
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting OpenSIPS"
+ start-stop-daemon --start --quiet --pidfile $pidfile --exec $daemon \
+ -- \
+ -u ${OPENSIPS_USER:-opensips} \
+ -g ${OPENSIPS_GROUP:-opensips} \
+ -P $pidfile
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping OpenSIPS"
+ start-stop-daemon --stop --quiet --pidfile $pidfile
+ eend $?
+}
+
diff --git a/testing/opensips/opensips.post-install b/testing/opensips/opensips.post-install
new file mode 100644
index 00000000..eb9d86d9
--- /dev/null
+++ b/testing/opensips/opensips.post-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+chown -R opensips:opensips /var/run/opensips
+chgrp opensips /etc/opensips/opensips.cfg
+exit 0
diff --git a/testing/opensips/opensips.pre-install b/testing/opensips/opensips.pre-install
new file mode 100644
index 00000000..4b9ccd41
--- /dev/null
+++ b/testing/opensips/opensips.pre-install
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+adduser -H -h /var/empty -s /bin/false -D opensips 2>/dev/null
+
+exit 0
diff --git a/testing/openvpn/APKBUILD b/testing/openvpn/APKBUILD
new file mode 100644
index 00000000..bd751f31
--- /dev/null
+++ b/testing/openvpn/APKBUILD
@@ -0,0 +1,57 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=openvpn
+pkgver=2.1.1
+pkgrel=0
+pkgdesc="A robust, and highly configurable VPN (Virtual Private Network)"
+url="http://openvpn.sourceforge.net/"
+license="custom"
+subpackages="$pkgname-doc"
+depends="iproute2"
+makedepends="openssl-dev lzo-dev"
+install=
+source="http://$pkgname.net/release/$pkgname-$pkgver.tar.gz
+ openvpn.initd
+ "
+
+_builddir="$srcdir"/$pkgname-$pkgver
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-ssl \
+ --enable-crypto \
+ --disable-threads \
+ --enable-iproute2
+
+ make || return 1
+ cd plugin/down-root
+ make || return 1
+ cd ../..
+}
+
+package() {
+ cd "$_builddir"
+
+ make DESTDIR="$pkgdir" install || return 1
+
+ # install plugins
+ install -d "$pkgdir"/usr/lib/$pkgname
+ cp plugin/*/*.so "$pkgdir"/usr/lib/$pkgname
+
+ # install easy-rsa
+ sed -i -e 's/--directory/-d/g; s/--mode=/-m/g' easy-rsa/2.0/Makefile
+ sed -i -e '1s|#!/bin/bash|#!/bin/sh|' easy-rsa/2.0/*
+ make -C easy-rsa/2.0 DESTDIR="$pkgdir" \
+ PREFIX=etc/openvpn/easy-rsa \
+ install
+
+ # install examples
+ mkdir -p "$pkgdir"/usr/share/doc/$pkgname/examples
+ cp -a sample-config-files "$pkgdir"/usr/share/doc/$pkgname/examples
+ install -D -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+
+ # install init.d
+ install -Dm755 ../openvpn.initd "$pkgdir"/etc/init.d/openvpn
+}
+md5sums="b273ed2b5ec8616fb9834cde8634bce7 openvpn-2.1.1.tar.gz
+020376f1e7ed6b4adbe20cf5ff774856 openvpn.initd"
diff --git a/testing/openvpn/openvpn.initd b/testing/openvpn/openvpn.initd
new file mode 100644
index 00000000..7e0e3eb9
--- /dev/null
+++ b/testing/openvpn/openvpn.initd
@@ -0,0 +1,63 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+VPNDIR="/etc/openvpn"
+VPN="${SVCNAME#*.}"
+if [ -n "${VPN}" ] && [ "${SVCNAME}" != "openvpn" ]; then
+ VPNPID="/var/run/openvpn.${VPN}.pid"
+else
+ VPNPID="/var/run/openvpn.pid"
+fi
+VPNCONF="${VPNDIR}/${VPN}.conf"
+
+depend() {
+ need localmount net
+ before netmount
+ after bootmisc firewall
+}
+
+checktundevice() {
+ if [ ! -e /dev/net/tun ]; then
+ if ! modprobe tun ; then
+ eerror "TUN/TAP support is not available in this kernel"
+ return 1
+ fi
+ fi
+ if [ -h /dev/net/tun ] && [ -c /dev/misc/net/tun ]; then
+ ebegin "Detected broken /dev/net/tun symlink, fixing..."
+ rm -f /dev/net/tun
+ ln -s /dev/misc/net/tun /dev/net/tun
+ eend $?
+ fi
+}
+
+start() {
+ ebegin "Starting ${SVCNAME}"
+
+ checktundevice || return 1
+
+ if [ ! -e "${VPNCONF}" ]; then
+ eend 1 "${VPNCONF} does not exist"
+ return 1
+ fi
+
+ local args=""
+ # If the config file does not specify the cd option, we do
+ # But if we specify it, we override the config option which we do not want
+ if ! grep -q "^[ \t]*cd[ \t].*" "${VPNCONF}" ; then
+ args="${args} --cd ${VPNDIR}"
+ fi
+
+ start-stop-daemon --start --exec /usr/sbin/openvpn --pidfile "${VPNPID}" \
+ -- --config "${VPNCONF}" --writepid "${VPNPID}" --daemon ${args}
+ eend $? "Check your logs to see why startup failed"
+}
+
+stop() {
+ ebegin "Stopping ${SVCNAME}"
+ start-stop-daemon --stop --exec /usr/sbin/openvpn --pidfile "${VPNPID}"
+ eend $?
+}
+
+# vim: ts=4
diff --git a/testing/perl-io-multiplex/APKBUILD b/testing/perl-io-multiplex/APKBUILD
new file mode 100644
index 00000000..e5d9bc06
--- /dev/null
+++ b/testing/perl-io-multiplex/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=perl-io-multiplex
+_realname=IO-Multiplex
+pkgver=1.10
+pkgrel=0
+pkgdesc="Manage IO on many file handles"
+url="http://search.cpan.org/dist/IO-Multiplex/"
+license="unknown"
+depends="perl"
+makedepends="perl-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://search.cpan.org/CPAN/authors/id/B/BB/BBB/$_realname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install
+ # creates file collision among perl modules
+ find "$pkgdir" -name perllocal.pod -delete
+}
+
+md5sums="ce230ee0a4afbff59da66f0c42e0340b IO-Multiplex-1.10.tar.gz"
diff --git a/testing/perl-net-rblcient/APKBUILD b/testing/perl-net-rblcient/APKBUILD
new file mode 100644
index 00000000..e68eaae2
--- /dev/null
+++ b/testing/perl-net-rblcient/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=perl-net-rblclient
+_realname=Net-RBLClient
+pkgver=0.5
+pkgrel=0
+pkgdesc="Queries multiple Realtime Blackhole Lists in parallel"
+url="http://search.cpan.org/dist/Net-RBLClient/"
+license="unknown"
+depends="perl"
+makedepends="perl-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://search.cpan.org/CPAN/authors/id/A/AB/ABLUM/$_realname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/RBLCLient-$pkgver"
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install
+ # creates file collision among perl modules
+ find "$pkgdir" -name perllocal.pod -delete
+}
+
+md5sums="1fb9961106cbb5a6eb2257762847e502 Net-RBLClient-0.5.tar.gz"
diff --git a/testing/perl-parse-syslog/APKBUILD b/testing/perl-parse-syslog/APKBUILD
new file mode 100644
index 00000000..af6da0fe
--- /dev/null
+++ b/testing/perl-parse-syslog/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=perl-parse-syslog
+_realname=Parse-Syslog
+pkgver=1.10
+pkgrel=0
+pkgdesc="Parse Unix syslog files"
+url="http://search.cpan.org/~dschwei/Parse-Syslog-1.10/"
+license="unknown"
+depends="perl"
+makedepends="perl-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://search.cpan.org/CPAN/authors/id/D/DS/DSCHWEI/$_realname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$_realname-$pkgver"
+
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install
+ # creates file collision among perl modules
+ find "$pkgdir" -name perllocal.pod -delete
+}
+
+md5sums="e1c4c03aaa7cb8d2baa52f294dd9accc Parse-Syslog-1.10.tar.gz"
diff --git a/testing/pllua/APKBUILD b/testing/pllua/APKBUILD
new file mode 100644
index 00000000..09ef17f5
--- /dev/null
+++ b/testing/pllua/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=pllua
+pkgver=0.3.1
+pkgrel=0
+pkgdesc="Procedural language for PostgreSQL using Lua"
+url="http://pgfoundry.org/projects/pllua"
+license="GPL"
+depends="postgresql"
+makedepends="postgresql-dev lua-dev ccache"
+install=
+subpackages=""
+source="http://pgfoundry.org/frs/download.php/1722/$pkgname-$pkgver.tar.gz
+ pllua-01-0.3.1-include.patch"
+
+# append extra dependencies to -dev subpackage
+# remove if not used.
+# depends_dev="somepackage-dev"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ for i in "$srcdir"/*.patch; do
+ msg "Applying ${i}"
+ patch -p1 -i $i || return 1
+ done
+
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+ # remove the 2 lines below (and this) if there is no init.d script
+ # install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ # install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="e57385bdf2d533ac73cd02401795cea8 pllua-0.3.1.tar.gz
+a47387e64b7dba8d58237c7dad0e2d61 pllua-01-0.3.1-include.patch"
diff --git a/testing/pllua/pllua-01-0.3.1-include.patch b/testing/pllua/pllua-01-0.3.1-include.patch
new file mode 100644
index 00000000..afbf8a98
--- /dev/null
+++ b/testing/pllua/pllua-01-0.3.1-include.patch
@@ -0,0 +1,14 @@
+#most of fix from here http://postgis.refractions.net/pipermail/postgis-devel/2009-February/004879.html
+--- pllua-0.3.1/plluaapi.c.orig Thu Sep 17 15:34:07 2009
++++ pllua-0.3.1/plluaapi.c Thu Sep 17 15:34:18 2009
+@@ -7,6 +7,10 @@
+
+ #include "pllua.h"
+ #include "rowstamp.h"
++#include "utils/guc.h"
++extern Datum textout (PG_FUNCTION_ARGS);
++extern Datum bpcharout(PG_FUNCTION_ARGS);
++extern Datum varcharout(PG_FUNCTION_ARGS);
+
+ /* extended function info */
+ typedef struct luaP_Info {
diff --git a/testing/postgrey/APKBUILD b/testing/postgrey/APKBUILD
new file mode 100644
index 00000000..75681143
--- /dev/null
+++ b/testing/postgrey/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=postgrey
+pkgver=1.32
+pkgrel=1
+pkgdesc="Postfix policy server implementing greylisting"
+url="http://postgrey.schweikert.ch/"
+license="GPL"
+depends="perl perl-db perl-net-dns perl-net-server"
+makedepends=""
+install=postgrey.pre-install
+subpackages=""
+source="http://postgrey.schweikert.ch/pub/$pkgname-$pkgver.tar.gz
+ postgrey.confd
+ postgrey.initd"
+#still need PERL-IO Multiplex and PERL-PARSE-SYSLOG and NET-RBLClient
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ install -m755 -D $pkgname "$pkgdir"/usr/sbin/$pkgname
+ mkdir -p "$pkgdir"/var/spool/postfix/$pkgname
+ chown postgrey:postgrey "$pkgdir"/var/spool/postfix/$pkgname
+ chmod 770 "$pkgdir"/var/spool/postfix/$pkgname
+ install -m755 -D contrib/postgreyreport "$pkgdir"/usr/bin/postgreyreport
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+ install -m644 -D postgrey_whitelist_clients "$pkgdir"/etc/postfix/postgrey_whitelist_clients
+ install -m644 -D postgrey_whitelist_recipients "$pkgdir"/etc/postfix/postgrey_whitelist_recipients
+ install -m644 -D "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="524a4e165bf997996f3bccade394712f postgrey-1.32.tar.gz
+caaad5770ab07fb5af3bbd522a05b84f postgrey.confd
+d0611b244202c77ad7ad79862721a738 postgrey.initd"
diff --git a/testing/postgrey/postgrey.confd b/testing/postgrey/postgrey.confd
new file mode 100644
index 00000000..7a6deb58
--- /dev/null
+++ b/testing/postgrey/postgrey.confd
@@ -0,0 +1,55 @@
+# Config file for /etc/init.d/postgrey
+
+# LISTEN TYPE
+# Set to 'inet' if you want to use a TCP socket.
+# Set to 'unix' if you want to use an UNIX socket.
+POSTGREY_TYPE="inet"
+
+# HOST
+# What IP should postgrey bind to?
+# Leave unchanged unless you know what you are doing.
+# (ignored if POSTGREY_TYPE is set to 'unix')
+POSTGREY_HOST="127.0.0.1"
+
+# PORT
+# What TCP port should postgrey listen on?
+# (ignored if POSTGREY_TYPE is set to 'unix')
+POSTGREY_PORT="10030"
+
+# SOCKET
+# Unix socket to listen on, if POSTGREY_TYPE is set to 'unix'.
+# Leave unchanged unless you know what you are doing.
+# (ignored if POSTGREY_TYPE is set to 'inet')
+POSTGREY_SOCKET="/var/spool/postfix/private/postgrey"
+
+# PID
+# Postgrey pid file.
+# Do not change, if you don't know what this is!
+POSTGREY_PID="/var/run/postgrey.pid"
+
+# DELAY
+# How long to delay mail that is greylisted in seconds.
+POSTGREY_DELAY=300
+
+# TEXT
+# The response we'll send back with delayed mail.
+POSTGREY_TEXT="Greylisted for %s seconds"
+
+# Additional Postgrey options
+#
+# -v, --verbose increase verbosity level
+# --max-age=N delete entries older than N days since the last time
+# that they have been seen (default: 30)
+# --retry-window=N allow only N days for the first retrial (default: 2)
+# append 'h' if you want to specify it in hours
+# --greylist-action=A if greylisted, return A to Postfix (default: DEFER_IF_PERMIT)
+# --lookup-by-subnet strip the last 8 bits from IP addresses (default)
+# --lookup-by-host do not strip the last 8 bits from IP addresses
+# --whitelist-clients=FILE default: /etc/postfix/postgrey_whitelist_clients
+# --whitelist-recipients=FILE default: /etc/postfix/postgrey_whitelist_recipients
+#
+# Note that the --whitelist-x options can be specified multiple times, and that
+# per default /etc/postfix/postgrey_whitelist_clients.local is also read, so
+# that you can put there local entries.
+#
+POSTGREY_OPTS=""
diff --git a/testing/postgrey/postgrey.initd b/testing/postgrey/postgrey.initd
new file mode 100644
index 00000000..c9e51ceb
--- /dev/null
+++ b/testing/postgrey/postgrey.initd
@@ -0,0 +1,102 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/mail-filter/postgrey/files/postgrey.rc.new,v 1.10 2008/05/21 18:45:44 dertobi123 Exp $
+
+conf="/etc/conf.d/postgrey"
+
+opts="${opts} reload"
+
+depend() {
+ need net
+ after firewall
+ before postfix
+ provide postfix_greylist
+}
+
+conf_error() {
+ eerror "You need to setup ${conf} first"
+ return 1
+}
+
+checkconfig() {
+if [ -z "${POSTGREY_TYPE}" ]
+ then
+ einfo "You need to choose the server type you want"
+ einfo "by setting the POSTGREY_TYPE variable in ${conf}."
+ else
+ if [ "x${POSTGREY_TYPE}" = "xinet" ]
+ then
+ if [ -z "${POSTGREY_PORT}" ] || [ -z "${POSTGREY_HOST}" ]
+ then
+ einfo "The following entries are missing in ${conf}:"
+ [ -z "${POSTGREY_HOST}" ] && einfo " - POSTGREY_HOST"
+ [ -z "${POSTGREY_PORT}" ] && einfo " - POSTGREY_PORT"
+ conf_error
+ fi
+ POSTGREY_ADDR="${POSTGREY_TYPE}=${POSTGREY_HOST}:${POSTGREY_PORT}"
+ else
+ if [ -z "${POSTGREY_SOCKET}" ]
+ then
+ einfo "The following entries are missing in ${conf}:"
+ [ -z "${POSTGREY_SOCKET}" ] && einfo " - POSTGREY_SOCKET"
+ conf_error
+ fi
+ POSTGREY_ADDR="${POSTGREY_TYPE}=${POSTGREY_SOCKET}"
+ fi
+fi
+
+ if [ -z "${POSTGREY_PID}" ]
+ then
+ einfo "The following entries are missing in ${conf}:"
+ [ -z "${POSTGREY_PID}" ] && einfo " - POSTGREY_PID"
+ conf_error
+ fi
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Starting Postgrey"
+
+ # HACK -- start a subshell and corrects perms on the socket...
+ ( if [ "x${POSTGREY_TYPE}" = "xunix" ]; then
+ rm -f ${POSTGREY_SOCKET};
+ while ! test -S ${POSTGREY_SOCKET}; do sleep 1; done;
+ chmod a+rw,a-x ${POSTGREY_SOCKET}; fi ) &
+
+ if [ -z ${POSTGREY_DELAY} ] ; then
+ POSTGREY_DELAY_ARG=""
+ else
+ POSTGREY_DELAY_ARG="--delay=${POSTGREY_DELAY}"
+ fi
+
+ if [ -z "${POSTGREY_TEXT}" ] ; then
+ POSTGREY_TEXT_ARG=""
+ else
+ POSTGREY_TEXT_ARG="--greylist-text=${POSTGREY_TEXT}"
+ fi
+
+ start-stop-daemon --start --quiet --background \
+ --pidfile=${POSTGREY_PID} \
+ --name postgrey \
+ --exec /usr/sbin/postgrey -- \
+ --${POSTGREY_ADDR} \
+ --daemonize \
+ --pidfile=${POSTGREY_PID} \
+ ${POSTGREY_DELAY_ARG} \
+ ${POSTGREY_OPTS} \
+ "${POSTGREY_TEXT_ARG}"
+ eend ${?}
+}
+
+stop() {
+ ebegin "Stopping Postgrey"
+ start-stop-daemon --stop --quiet --pidfile ${POSTGREY_PID}
+ eend ${?}
+}
+
+reload() {
+ ebegin "Reloading Postgrey"
+ start-stop-daemon --stop --signal HUP --oknodo --pidfile ${POSTGREY_PID}
+ eend $?
+}
diff --git a/testing/postgrey/postgrey.pre-install b/testing/postgrey/postgrey.pre-install
new file mode 100644
index 00000000..3c34c3fd
--- /dev/null
+++ b/testing/postgrey/postgrey.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup postgrey 2>/dev/null
+adduser -H -h /dev/null -s /bin/false -D postgrey 2>/dev/null
+
+exit 0
diff --git a/testing/pptpclient/APKBUILD b/testing/pptpclient/APKBUILD
new file mode 100644
index 00000000..acdc734a
--- /dev/null
+++ b/testing/pptpclient/APKBUILD
@@ -0,0 +1,31 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=pptpclient
+pkgver=1.7.2
+pkgrel=0
+pkgdesc="Client for the proprietary Microsoft Point-to-Point Tunneling Protocol, PPTP."
+url="http://pptpclient.sourceforge.net/"
+license="GPL"
+depends="ppp iproute2"
+makedepends="perl"
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/sourceforge/$pkgname/pptp-$pkgver.tar.gz
+ pptpclient-uclibc.patch"
+
+prepare() {
+ cd "$srcdir"/pptp-$pkgver
+ patch -p1 -i "$srcdir"/pptpclient-uclibc.patch || return 1
+ sed -i '/CFLAGS/d' Makefile
+ sed -i 's|\/bin\/ip|\/usr\/sbin\/ip|g' routing.c
+}
+
+build() {
+ cd "$srcdir"/pptp-$pkgver
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/pptp-$pkgver
+ make DESTDIR="$pkgdir" install
+}
+md5sums="4c3d19286a37459a632c7128c92a9857 pptp-1.7.2.tar.gz
+34b643e4e4224e723f6a768018b46015 pptpclient-uclibc.patch"
diff --git a/testing/pptpclient/pptpclient-uclibc.patch b/testing/pptpclient/pptpclient-uclibc.patch
new file mode 100644
index 00000000..aa9536e4
--- /dev/null
+++ b/testing/pptpclient/pptpclient-uclibc.patch
@@ -0,0 +1,21 @@
+diff --git a/pptp_compat.c b/pptp_compat.c
+index 1760a3b..6ebbea4 100644
+--- a/pptp_compat.c
++++ b/pptp_compat.c
+@@ -2,6 +2,7 @@
+ *
+ */
+
++#if defined (__SVR4) && defined (__sun) /* Solaris */
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
+@@ -14,8 +15,6 @@
+ #include <stdio.h>
+ #include "util.h"
+
+-
+-#if defined (__SVR4) && defined (__sun) /* Solaris */
+ /*
+ * daemon implementation from uClibc
+ */
diff --git a/testing/prosody/APKBUILD b/testing/prosody/APKBUILD
new file mode 100644
index 00000000..4f778f2e
--- /dev/null
+++ b/testing/prosody/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Mika Havela <mika.havela@gmail.com>
+# Maintainer: Mika Havela <mika.havela@gmail.com>
+pkgname=prosody
+pkgver=0.4.2
+pkgrel=2
+pkgdesc="Lua based Jabber/XMPP server"
+url="http://prosody.im/"
+license="MIT"
+depends="lua-socket lua-expat"
+makedepends="lua-dev libidn-dev openssl-dev"
+install="prosody.pre-install prosody.post-install"
+subpackages=""
+source="http://prosody.im/downloads/source/$pkgname-$pkgver.tar.gz
+ $pkgname.cfg.lua
+ $pkgname.initd
+ Makefile-0.4.2.patch
+ "
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ patch Makefile "$startdir/Makefile-0.4.2.patch" || return 1
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc/prosody \
+ --with-lua=/usr/bin \
+ --with-lua-lib=/usr/lib \
+ --with-lua-include=/usr/include
+
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+ install -d "$pkgdir/var/log/prosody" || return 1
+ install -d "$pkgdir/var/run/prosody" || return 1
+ install -D -m755 "$srcdir"/"$pkgname".initd "$pkgdir"/etc/init.d/"$pkgname"
+
+ install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+}
+
+md5sums="2669478311b3a67522669acdf03cf85c prosody-0.4.2.tar.gz
+f42039e5a342fe62cd7e491546338aaa prosody.cfg.lua
+c0e647e872e30f71fa03faab189ae287 prosody.initd
+684d033dac42399a245c061c9a374e1b Makefile-0.4.2.patch"
diff --git a/testing/prosody/Makefile-0.4.2.patch b/testing/prosody/Makefile-0.4.2.patch
new file mode 100644
index 00000000..facfa2f9
--- /dev/null
+++ b/testing/prosody/Makefile-0.4.2.patch
@@ -0,0 +1,13 @@
+--- src/prosody-0.4.2/Makefile.org Thu Jun 4 13:44:20 2009
++++ src/prosody-0.4.2/Makefile Thu Jun 4 13:44:11 2009
+@@ -19,8 +19,8 @@
+ install -d $(BIN) $(CONFIG) $(MODULES) $(SOURCE) $(DATA)
+ install -d $(CONFIG)/certs
+ install -d $(SOURCE)/core $(SOURCE)/net $(SOURCE)/util
+- install ./prosody.install $(BIN)/prosody
+- install ./prosodyctl.install $(BIN)/prosodyctl
++ install -m755 ./prosody.install $(BIN)/prosody
++ install -m755 ./prosodyctl.install $(BIN)/prosodyctl
+ install -m644 core/* $(SOURCE)/core
+ install -m644 net/* $(SOURCE)/net
+ install -m644 util/* $(SOURCE)/util
diff --git a/testing/prosody/prosody.cfg.lua b/testing/prosody/prosody.cfg.lua
new file mode 100644
index 00000000..99df66ad
--- /dev/null
+++ b/testing/prosody/prosody.cfg.lua
@@ -0,0 +1,107 @@
+-- Prosody Configuration File
+--
+-- If it wasn't already obvious, -- starts a comment, and all text after it on
+-- a line is ignored by Prosody.
+--
+-- The config is split into sections, a global section, and one for each
+-- defined host that we serve. You can add as many host sections as you like.
+--
+-- Lists are written { "like", "this", "one" }
+-- Lists can also be of { 1, 2, 3 } numbers, etc.
+-- Either commas, or semi-colons; may be used as seperators.
+--
+-- A table is a list of values, except each value has a name. An example would
+-- be:
+--
+-- logging = { type = "html", directory = "/var/logs", rotate = "daily" }
+--
+-- Whitespace (that is tabs, spaces, line breaks) is mostly insignificant, so
+-- can
+-- be placed anywhere
+-- that you deem fitting.
+--
+-- Tip: You can check that the syntax of this file is correct when you have
+-- finished by running: luac -p prosody.cfg.lua
+-- If there are any errors, it will let you know what and where they are,
+-- otherwise it will keep quiet.
+--
+-- Good luck, and happy Jabbering!
+
+-- Global settings go in this section
+Host "*"
+ -- This is the list of modules Prosody will load on startup.
+ -- It looks for mod_modulename.lua in the plugins folder, so make sure that
+ -- exists too.
+ modules_enabled = {
+ -- Generally required
+ "roster"; -- Allow users to have a roster. Recommended ;)
+ "saslauth"; -- Authentication for clients and servers. Recommended
+ -- if you want to log in.
+ "tls"; -- Add support for secure TLS on c2s/s2s connections
+ "dialback"; -- s2s dialback support
+ "disco"; -- Service discovery
+
+ -- Not essential, but recommended
+ "private"; -- Private XML storage (for room bookmarks, etc.)
+ "vcard"; -- Allow users to set vCards
+
+ -- Nice to have
+ "legacyauth"; -- Legacy authentication. Only used by some old
+ -- clients and bots.
+ "version"; -- Replies to server version requests
+ "uptime"; -- Report how long server has been running
+ "time"; -- Let others know the time here on this server
+ "ping"; -- Replies to XMPP pings with pongs
+
+ -- Required for daemonizing and logging
+ "posix"; -- POSIX functionality, sends server to background,
+ -- enables syslog, etc.
+
+ -- Other specific functionality
+ "register"; -- Allow users to register on this server using a
+ -- client
+ --"console"; -- telnet to port 5582 (needs console_enabled = true)
+ --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
+ --"httpserver"; -- Serve static files from a directory over HTTP
+ }
+
+ -- These are the SSL/TLS-related settings. If you don't want to use
+ -- SSL/TLS, you may comment or remove this
+ --ssl = {
+ -- key = "/etc/prosody/certs/localhost.key";
+ -- certificate = "/etc/prosody/certs/localhost.cert";
+ --}
+
+ log = {
+ -- Log all error messages to prosody.err
+ { levels = { min = "error" }, to = "file", timestamps = true,
+ filename = "/var/log/prosody/prosody.err" };
+ -- Log everything of level "info" and higher (that is, all except
+ -- "debug" messages) to prosody.log
+ { levels = { min = "info" }, to = "file", timestamps = true,
+ filename = "/var/log/prosody/prosody.log" };
+ }
+
+ -- Required for proper daemonization support
+ pidfile = "/var/run/prosody/prosody.pid"
+
+-- This allows clients to connect to localhost. No harm in it.
+Host "localhost"
+
+-- Section for example.com
+-- (replace example.com with your domain name)
+Host "example.com"
+ -- Assign this host a certificate for TLS, otherwise it would use the one
+ -- set in the global section (if any).
+ -- Note that old-style SSL on port 5223 only supports one certificate, and
+ -- will always use the global one.
+ --ssl = {
+ -- key = "/etc/prosody/certs/example.com.key";
+ -- certificate = "/etc/prosody/certs/example.com.crt";
+ --}
+
+ enabled = false -- This will disable the host, preserving the config, but
+ -- denying connections
+
+-- Set up a MUC (multi-user chat) room server on conference.localhost:
+Component "conference.localhost" "muc"
diff --git a/testing/prosody/prosody.initd b/testing/prosody/prosody.initd
new file mode 100644
index 00000000..2749d09c
--- /dev/null
+++ b/testing/prosody/prosody.initd
@@ -0,0 +1,44 @@
+#!/sbin/runscript
+
+# Sample init.d file for alpine linux.
+
+NAME=prosody
+DAEMON=/usr/bin/$NAME
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting ${NAME}"
+ /usr/bin/prosodyctl start
+# start-stop-daemon --start --quiet --background \
+# --make-pidfile --pidfile /var/run/${NAME}/${NAME}.pid \
+# --chuid ${USER}:${GROUP} \
+# --exec ${DAEMON} -- ${OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${NAME}"
+ /usr/bin/prosodyctl stop
+# start-stop-daemon --stop --quiet \
+# --exec ${DAEMON} \
+# --pidfile /var/run/${NAME}/${NAME}.pid \
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading ${NAME}"
+ if ! service_started "${NAME}" ; then
+ eend 1 "${NAME} is not started"
+ return 1
+ fi
+ /usr/bin/prosodyctl stop
+ /usr/bin/prosodyctl start
+# start-stop-daemon --stop --oknodo --signal HUP \
+# --exec ${DAEMON} --pidfile /var/run/${NAME}/${NAME}.pid
+ eend $?
+}
+
diff --git a/testing/prosody/prosody.post-install b/testing/prosody/prosody.post-install
new file mode 100644
index 00000000..2f8f69cd
--- /dev/null
+++ b/testing/prosody/prosody.post-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+chown prosody:prosody var/lib/prosody
+chown prosody:prosody var/log/prosody
+chown prosody:prosody var/run/prosody
+
diff --git a/testing/prosody/prosody.pre-install b/testing/prosody/prosody.pre-install
new file mode 100644
index 00000000..db63efa1
--- /dev/null
+++ b/testing/prosody/prosody.pre-install
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+user=prosody
+home=/var/lib/prosody
+adduser -h $home -s /bin/false -D $user 2>/dev/null
+mkdir -p $home
+chown $user:$user $home
+exit 0
+
diff --git a/testing/pycrypto/APKBUILD b/testing/pycrypto/APKBUILD
new file mode 100644
index 00000000..1ed827ca
--- /dev/null
+++ b/testing/pycrypto/APKBUILD
@@ -0,0 +1,17 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=pycrypto
+pkgver=2.0.1
+pkgrel=0
+pkgdesc="A collection of cryptographic algorithms and protocols, implemented for use from Python."
+url="http://www.amk.ca/python/code/crypto.html"
+license="GPL"
+depends="python"
+makedepends="gmp-dev python-dev"
+source="http://www.amk.ca/files/python/crypto/$pkgname-$pkgver.tar.gz"
+
+build ()
+{
+ cd "$srcdir"/$pkgname-$pkgver
+ python setup.py build install --root="$pkgdir"
+}
+md5sums="4d5674f3898a573691ffb335e8d749cd pycrypto-2.0.1.tar.gz"
diff --git a/testing/python-application/APKBUILD b/testing/python-application/APKBUILD
new file mode 100644
index 00000000..bda915d8
--- /dev/null
+++ b/testing/python-application/APKBUILD
@@ -0,0 +1,23 @@
+# Contributor: Francesco Colista <francesco.colista@gmail.com>
+# Maintainer: Francesco Colista <francesco.colista@gmail.com>
+pkgname=python-application
+pkgver=1.1.5
+pkgrel=0
+pkgdesc="Basic building blocks for python applications"
+url="http://pypi.python.org/pypi/python-application"
+license="PSF"
+depends="python"
+makedepends="python-dev"
+install=
+subpackages=""
+source="http://pypi.python.org/packages/source/p/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/lib/python2.6/site-packages
+ python setup.py install --root="$pkgdir"
+ echo "/usr/lib/python2.6/site-packages/$pkgname-$pkgver-py2.6.egg" > "$pkgdir"/usr/lib/python2.6/site-packages/$pkgname.pth
+
+}
+
+md5sums="d43399becc6b2850a2ea80a34375781b python-application-1.1.5.tar.gz"
diff --git a/testing/python-cjson/APKBUILD b/testing/python-cjson/APKBUILD
new file mode 100644
index 00000000..c6df3c17
--- /dev/null
+++ b/testing/python-cjson/APKBUILD
@@ -0,0 +1,23 @@
+# Contributor: Francesco Colista <francesco.colista@gmail.com>
+# Maintainer: Francesco Colista <francesco.colista@gmail.com>
+
+pkgname=python-cjson
+pkgver=1.0.5
+pkgrel=0
+pkgdesc="Fast JSON encoder/decoder for Python"
+url="http://pypi.python.org/pypi/python-gnutls"
+license="PSF"
+depends="python"
+makedepends="python-dev"
+install=
+subpackages=""
+source="http://pypi.python.org/packages/source/p/$pkgname/$pkgname-$pkgver.tar.gz"
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/lib/python2.6/site-packages
+ python setup.py install --root="$pkgdir"
+ echo "/usr/lib/python2.6/site-packages/$pkgname-$pkgver-py2.6.egg" > "$pkgdir"/usr/lib/python2.6/site-packages/$pkgname.pth
+
+}
+
+md5sums="4d55b66ecdf0300313af9d030d9644a3 python-cjson-1.0.5.tar.gz"
diff --git a/testing/python-gnutls/APKBUILD b/testing/python-gnutls/APKBUILD
new file mode 100644
index 00000000..943d06aa
--- /dev/null
+++ b/testing/python-gnutls/APKBUILD
@@ -0,0 +1,23 @@
+# Contributor: Francesco Colista <francesco.colista@gmail.com>
+# Maintainer: Francesco Colista <francesco.colista@gmail.com>
+
+pkgname=python-gnutls
+pkgver=1.1.9
+pkgrel=0
+pkgdesc="Python wrapper for the GNUTLS library"
+url="http://pypi.python.org/pypi/python-gnutls"
+license="PSF"
+depends="python"
+makedepends="python-dev gnutls-dev"
+install=
+subpackages=""
+source="http://pypi.python.org/packages/source/p/$pkgname/$pkgname-$pkgver.tar.gz"
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/lib/python2.6/site-packages
+ python setup.py install --root="$pkgdir"
+ echo "/usr/lib/python2.6/site-packages/$pkgname-$pkgver-py2.6.egg" > "$pkgdir"/usr/lib/python2.6/site-packages/$pkgname.pth
+
+}
+
+md5sums="bdd81a9dd3c2f87393cd6c014bf6885b python-gnutls-1.1.9.tar.gz"
diff --git a/testing/python26-buildutils/APKBUILD b/testing/python26-buildutils/APKBUILD
new file mode 100644
index 00000000..5db0a6bf
--- /dev/null
+++ b/testing/python26-buildutils/APKBUILD
@@ -0,0 +1,23 @@
+# Contributor: Andrew Manison <amanison@anselsystems.com>
+# Maintainer:
+pkgname=python26-buildutils
+_pkgname=${pkgname#python26-}
+pkgver=0.3
+pkgrel=0
+pkgdesc="buildutils is a collection of enhancements to the Python distutils"
+url="http://pypi.python.org/pypi/buildutils/0.3"
+license="GPL"
+depends="python python26-setuptools"
+makedepends="python-dev"
+install=
+subpackages=""
+source="http://pypi.python.org/packages/source/b/$_pkgname/$_pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$_pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/lib/python2.6/site-packages
+ python setup.py install --root="$pkgdir"
+ echo "/usr/lib/python2.6/site-packages/$_pkgname-$pkgver-py2.6.egg" > "$pkgdir"/usr/lib/python2.6/site-packages/$_pkgname.pth
+}
+
+md5sums="fec620dee05f591edad386366b52e17b buildutils-0.3.tar.gz"
diff --git a/testing/python26-setuptools/APKBUILD b/testing/python26-setuptools/APKBUILD
new file mode 100644
index 00000000..e8322dd5
--- /dev/null
+++ b/testing/python26-setuptools/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Andrew Manison <amanison@anselsystems.com>
+# Maintainer:
+pkgname=python26-setuptools
+_pkgname=${pkgname#python26-}
+pkgver=0.6c11
+pkgrel=0
+pkgdesc="setuptools is a collection of enhancements to the Python distutils"
+url="http://pypi.python.org/pypi/setuptools"
+license="PSF"
+depends="python"
+makedepends="python-dev"
+install=
+subpackages=""
+source="http://pypi.python.org/packages/source/s/$_pkgname/$_pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$_pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/lib/python2.6/site-packages
+ python setup.py install --root="$pkgdir"
+ echo "/usr/lib/python2.6/site-packages/$_pkgname-$pkgver-py2.6.egg" > "$pkgdir"/usr/lib/python2.6/site-packages/$_pkgname.pth
+
+ # we don't provide a non-suffixed easy_install
+ echo "Removing non-suffixed easy_install ( $pkgdir/usr/bin/easy_install)"
+ rm "$pkgdir"/usr/bin/easy_install
+}
+
+md5sums="7df2a529a074f613b509fb44feefe74e setuptools-0.6c11.tar.gz"
diff --git a/testing/qemu/APKBUILD b/testing/qemu/APKBUILD
new file mode 100644
index 00000000..6361ee46
--- /dev/null
+++ b/testing/qemu/APKBUILD
@@ -0,0 +1,48 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=qemu
+pkgver=0.11.1
+pkgrel=0
+pkgdesc="QEMU is a generic machine emulator and virtualizer"
+url="http://www.nongnu.org/qemu/"
+license="GPL-2 LGPL-2"
+makedepends="zlib-dev sdl-dev alsa-lib-dev gnutls-dev ncurses-dev"
+depends=
+install="qemu.pre-install"
+source="http://savannah.nongnu.org/download/$pkgname/$pkgname-$pkgver.tar.gz
+ kqemu.patch
+ "
+
+prepare() {
+ cd "$srcdir"/$pkgname-$pkgver
+ # avoid fdt till an updated release appears
+ sed -i -e 's:fdt="yes":fdt="no":' configure
+ # prevent docs to get automatically installed
+ sed -i '/$(DESTDIR)$(docdir)/d' Makefile
+ # Alter target makefiles to accept CFLAGS
+ sed -i 's/^\(C\|OP_C\|HELPER_C\)FLAGS=/\1FLAGS+=/' \
+ Makefile Makefile.target tests/Makefile
+ sed -i 's/^VL_LDFLAGS=$/VL_LDFLAGS=-Wl,-z,execheap/' \
+ Makefile.target
+ patch -p1 -i ../kqemu.patch || return 1
+}
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --audio-drv-list=oss,alsa,sdl \
+ --audio-card-list=ac97,sb16,es1370,adlib \
+ --disable-darwin-user \
+ --disable-bsd-user \
+ --disable-nptl \
+ --cc="$CC"
+
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install || return 1
+}
+
+md5sums="193285b0bcf655a7f7577d05ffcb82b1 qemu-0.11.1.tar.gz
+f63f7412f016d8ccddabfd02ea28e748 kqemu.patch"
diff --git a/testing/qemu/kqemu.c b/testing/qemu/kqemu.c
new file mode 100644
index 00000000..035d310a
--- /dev/null
+++ b/testing/qemu/kqemu.c
@@ -0,0 +1,997 @@
+/*
+ * KQEMU support
+ *
+ * Copyright (c) 2005-2008 Fabrice Bellard
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
+ */
+#include "config.h"
+#ifdef _WIN32
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winioctl.h>
+#else
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/ioctl.h>
+#endif
+#ifdef HOST_SOLARIS
+#include <sys/ioccom.h>
+#endif
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <inttypes.h>
+
+#include "cpu.h"
+#include "exec-all.h"
+#include "qemu-common.h"
+
+#ifdef USE_KQEMU
+
+#define DEBUG
+//#define PROFILE
+
+
+#ifdef DEBUG
+# define LOG_INT(...) qemu_log_mask(CPU_LOG_INT, ## __VA_ARGS__)
+# define LOG_INT_STATE(env) log_cpu_state_mask(CPU_LOG_INT, (env), 0)
+#else
+# define LOG_INT(...) do { } while (0)
+# define LOG_INT_STATE(env) do { } while (0)
+#endif
+
+#include <unistd.h>
+#include <fcntl.h>
+#include "kqemu.h"
+
+#ifdef _WIN32
+#define KQEMU_DEVICE "\\\\.\\kqemu"
+#else
+#define KQEMU_DEVICE "/dev/kqemu"
+#endif
+
+static void qpi_init(void);
+
+#ifdef _WIN32
+#define KQEMU_INVALID_FD INVALID_HANDLE_VALUE
+HANDLE kqemu_fd = KQEMU_INVALID_FD;
+#define kqemu_closefd(x) CloseHandle(x)
+#else
+#define KQEMU_INVALID_FD -1
+int kqemu_fd = KQEMU_INVALID_FD;
+#define kqemu_closefd(x) close(x)
+#endif
+
+/* 0 = not allowed
+ 1 = user kqemu
+ 2 = kernel kqemu
+*/
+int kqemu_allowed = 1;
+uint64_t *pages_to_flush;
+unsigned int nb_pages_to_flush;
+uint64_t *ram_pages_to_update;
+unsigned int nb_ram_pages_to_update;
+uint64_t *modified_ram_pages;
+unsigned int nb_modified_ram_pages;
+uint8_t *modified_ram_pages_table;
+int qpi_io_memory;
+uint32_t kqemu_comm_base; /* physical address of the QPI communication page */
+
+#define cpuid(index, eax, ecx, edx) \
+ asm volatile ("cpuid" \
+ : "=a" (eax), "=c" (ecx), "=d" (edx) \
+ : "0" (index))
+
+#ifdef __x86_64__
+static int is_cpuid_supported(void)
+{
+ return 1;
+}
+#else
+static int is_cpuid_supported(void)
+{
+ int v0, v1;
+ asm volatile ("pushf\n"
+ "popl %0\n"
+ "movl %0, %1\n"
+ "xorl $0x00200000, %0\n"
+ "pushl %0\n"
+ "popf\n"
+ "pushf\n"
+ "popl %0\n"
+ : "=a" (v0), "=d" (v1)
+ :
+ : "cc");
+ return (v0 != v1);
+}
+#endif
+
+static void kqemu_update_cpuid(CPUState *env)
+{
+ int critical_features_mask, features, ext_features, ext_features_mask;
+ uint32_t eax, ecx, edx;
+
+ /* the following features are kept identical on the host and
+ target cpus because they are important for user code. Strictly
+ speaking, only SSE really matters because the OS must support
+ it if the user code uses it. */
+ critical_features_mask =
+ CPUID_CMOV | CPUID_CX8 |
+ CPUID_FXSR | CPUID_MMX | CPUID_SSE |
+ CPUID_SSE2 | CPUID_SEP;
+ ext_features_mask = CPUID_EXT_SSE3 | CPUID_EXT_MONITOR;
+ if (!is_cpuid_supported()) {
+ features = 0;
+ ext_features = 0;
+ } else {
+ cpuid(1, eax, ecx, edx);
+ features = edx;
+ ext_features = ecx;
+ }
+#ifdef __x86_64__
+ /* NOTE: on x86_64 CPUs, SYSENTER is not supported in
+ compatibility mode, so in order to have the best performances
+ it is better not to use it */
+ features &= ~CPUID_SEP;
+#endif
+ env->cpuid_features = (env->cpuid_features & ~critical_features_mask) |
+ (features & critical_features_mask);
+ env->cpuid_ext_features = (env->cpuid_ext_features & ~ext_features_mask) |
+ (ext_features & ext_features_mask);
+ /* XXX: we could update more of the target CPUID state so that the
+ non accelerated code sees exactly the same CPU features as the
+ accelerated code */
+}
+
+int kqemu_init(CPUState *env)
+{
+ struct kqemu_init kinit;
+ int ret, version;
+#ifdef _WIN32
+ DWORD temp;
+#endif
+
+ if (!kqemu_allowed)
+ return -1;
+
+#ifdef _WIN32
+ kqemu_fd = CreateFile(KQEMU_DEVICE, GENERIC_WRITE | GENERIC_READ,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
+ NULL);
+ if (kqemu_fd == KQEMU_INVALID_FD) {
+ fprintf(stderr, "Could not open '%s' - QEMU acceleration layer not activated: %lu\n",
+ KQEMU_DEVICE, GetLastError());
+ return -1;
+ }
+#else
+ kqemu_fd = open(KQEMU_DEVICE, O_RDWR);
+ if (kqemu_fd == KQEMU_INVALID_FD) {
+ fprintf(stderr, "Could not open '%s' - QEMU acceleration layer not activated: %s\n",
+ KQEMU_DEVICE, strerror(errno));
+ return -1;
+ }
+#endif
+ version = 0;
+#ifdef _WIN32
+ DeviceIoControl(kqemu_fd, KQEMU_GET_VERSION, NULL, 0,
+ &version, sizeof(version), &temp, NULL);
+#else
+ ioctl(kqemu_fd, KQEMU_GET_VERSION, &version);
+#endif
+ if (version != KQEMU_VERSION) {
+ fprintf(stderr, "Version mismatch between kqemu module and qemu (%08x %08x) - disabling kqemu use\n",
+ version, KQEMU_VERSION);
+ goto fail;
+ }
+
+ pages_to_flush = qemu_vmalloc(KQEMU_MAX_PAGES_TO_FLUSH *
+ sizeof(uint64_t));
+ if (!pages_to_flush)
+ goto fail;
+
+ ram_pages_to_update = qemu_vmalloc(KQEMU_MAX_RAM_PAGES_TO_UPDATE *
+ sizeof(uint64_t));
+ if (!ram_pages_to_update)
+ goto fail;
+
+ modified_ram_pages = qemu_vmalloc(KQEMU_MAX_MODIFIED_RAM_PAGES *
+ sizeof(uint64_t));
+ if (!modified_ram_pages)
+ goto fail;
+ modified_ram_pages_table = qemu_mallocz(phys_ram_size >> TARGET_PAGE_BITS);
+ if (!modified_ram_pages_table)
+ goto fail;
+
+ memset(&kinit, 0, sizeof(kinit)); /* set the paddings to zero */
+ kinit.ram_base = phys_ram_base;
+ kinit.ram_size = phys_ram_size;
+ kinit.ram_dirty = phys_ram_dirty;
+ kinit.pages_to_flush = pages_to_flush;
+ kinit.ram_pages_to_update = ram_pages_to_update;
+ kinit.modified_ram_pages = modified_ram_pages;
+#ifdef _WIN32
+ ret = DeviceIoControl(kqemu_fd, KQEMU_INIT, &kinit, sizeof(kinit),
+ NULL, 0, &temp, NULL) == TRUE ? 0 : -1;
+#else
+ ret = ioctl(kqemu_fd, KQEMU_INIT, &kinit);
+#endif
+ if (ret < 0) {
+ fprintf(stderr, "Error %d while initializing QEMU acceleration layer - disabling it for now\n", ret);
+ fail:
+ kqemu_closefd(kqemu_fd);
+ kqemu_fd = KQEMU_INVALID_FD;
+ return -1;
+ }
+ kqemu_update_cpuid(env);
+ env->kqemu_enabled = kqemu_allowed;
+ nb_pages_to_flush = 0;
+ nb_ram_pages_to_update = 0;
+
+ qpi_init();
+ return 0;
+}
+
+void kqemu_flush_page(CPUState *env, target_ulong addr)
+{
+ LOG_INT("kqemu_flush_page: addr=" TARGET_FMT_lx "\n", addr);
+ if (nb_pages_to_flush >= KQEMU_MAX_PAGES_TO_FLUSH)
+ nb_pages_to_flush = KQEMU_FLUSH_ALL;
+ else
+ pages_to_flush[nb_pages_to_flush++] = addr;
+}
+
+void kqemu_flush(CPUState *env, int global)
+{
+ LOG_INT("kqemu_flush:\n");
+ nb_pages_to_flush = KQEMU_FLUSH_ALL;
+}
+
+void kqemu_set_notdirty(CPUState *env, ram_addr_t ram_addr)
+{
+ LOG_INT("kqemu_set_notdirty: addr=%08lx\n",
+ (unsigned long)ram_addr);
+ /* we only track transitions to dirty state */
+ if (phys_ram_dirty[ram_addr >> TARGET_PAGE_BITS] != 0xff)
+ return;
+ if (nb_ram_pages_to_update >= KQEMU_MAX_RAM_PAGES_TO_UPDATE)
+ nb_ram_pages_to_update = KQEMU_RAM_PAGES_UPDATE_ALL;
+ else
+ ram_pages_to_update[nb_ram_pages_to_update++] = ram_addr;
+}
+
+static void kqemu_reset_modified_ram_pages(void)
+{
+ int i;
+ unsigned long page_index;
+
+ for(i = 0; i < nb_modified_ram_pages; i++) {
+ page_index = modified_ram_pages[i] >> TARGET_PAGE_BITS;
+ modified_ram_pages_table[page_index] = 0;
+ }
+ nb_modified_ram_pages = 0;
+}
+
+void kqemu_modify_page(CPUState *env, ram_addr_t ram_addr)
+{
+ unsigned long page_index;
+ int ret;
+#ifdef _WIN32
+ DWORD temp;
+#endif
+
+ page_index = ram_addr >> TARGET_PAGE_BITS;
+ if (!modified_ram_pages_table[page_index]) {
+#if 0
+ printf("%d: modify_page=%08lx\n", nb_modified_ram_pages, ram_addr);
+#endif
+ modified_ram_pages_table[page_index] = 1;
+ modified_ram_pages[nb_modified_ram_pages++] = ram_addr;
+ if (nb_modified_ram_pages >= KQEMU_MAX_MODIFIED_RAM_PAGES) {
+ /* flush */
+#ifdef _WIN32
+ ret = DeviceIoControl(kqemu_fd, KQEMU_MODIFY_RAM_PAGES,
+ &nb_modified_ram_pages,
+ sizeof(nb_modified_ram_pages),
+ NULL, 0, &temp, NULL);
+#else
+ ret = ioctl(kqemu_fd, KQEMU_MODIFY_RAM_PAGES,
+ &nb_modified_ram_pages);
+#endif
+ kqemu_reset_modified_ram_pages();
+ }
+ }
+}
+
+void kqemu_set_phys_mem(uint64_t start_addr, ram_addr_t size,
+ ram_addr_t phys_offset)
+{
+ struct kqemu_phys_mem kphys_mem1, *kphys_mem = &kphys_mem1;
+ uint64_t end;
+ int ret, io_index;
+
+ end = (start_addr + size + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK;
+ start_addr &= TARGET_PAGE_MASK;
+ kphys_mem->phys_addr = start_addr;
+ kphys_mem->size = end - start_addr;
+ kphys_mem->ram_addr = phys_offset & TARGET_PAGE_MASK;
+ io_index = phys_offset & ~TARGET_PAGE_MASK;
+ switch(io_index) {
+ case IO_MEM_RAM:
+ kphys_mem->io_index = KQEMU_IO_MEM_RAM;
+ break;
+ case IO_MEM_ROM:
+ kphys_mem->io_index = KQEMU_IO_MEM_ROM;
+ break;
+ default:
+ if (qpi_io_memory == io_index) {
+ kphys_mem->io_index = KQEMU_IO_MEM_COMM;
+ } else {
+ kphys_mem->io_index = KQEMU_IO_MEM_UNASSIGNED;
+ }
+ break;
+ }
+#ifdef _WIN32
+ {
+ DWORD temp;
+ ret = DeviceIoControl(kqemu_fd, KQEMU_SET_PHYS_MEM,
+ kphys_mem, sizeof(*kphys_mem),
+ NULL, 0, &temp, NULL) == TRUE ? 0 : -1;
+ }
+#else
+ ret = ioctl(kqemu_fd, KQEMU_SET_PHYS_MEM, kphys_mem);
+#endif
+ if (ret < 0) {
+ fprintf(stderr, "kqemu: KQEMU_SET_PHYS_PAGE error=%d: start_addr=0x%016" PRIx64 " size=0x%08lx phys_offset=0x%08lx\n",
+ ret, start_addr,
+ (unsigned long)size, (unsigned long)phys_offset);
+ }
+}
+
+struct fpstate {
+ uint16_t fpuc;
+ uint16_t dummy1;
+ uint16_t fpus;
+ uint16_t dummy2;
+ uint16_t fptag;
+ uint16_t dummy3;
+
+ uint32_t fpip;
+ uint32_t fpcs;
+ uint32_t fpoo;
+ uint32_t fpos;
+ uint8_t fpregs1[8 * 10];
+};
+
+struct fpxstate {
+ uint16_t fpuc;
+ uint16_t fpus;
+ uint16_t fptag;
+ uint16_t fop;
+ uint32_t fpuip;
+ uint16_t cs_sel;
+ uint16_t dummy0;
+ uint32_t fpudp;
+ uint16_t ds_sel;
+ uint16_t dummy1;
+ uint32_t mxcsr;
+ uint32_t mxcsr_mask;
+ uint8_t fpregs1[8 * 16];
+ uint8_t xmm_regs[16 * 16];
+ uint8_t dummy2[96];
+};
+
+static struct fpxstate fpx1 __attribute__((aligned(16)));
+
+static void restore_native_fp_frstor(CPUState *env)
+{
+ int fptag, i, j;
+ struct fpstate fp1, *fp = &fp1;
+
+ fp->fpuc = env->fpuc;
+ fp->fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;
+ fptag = 0;
+ for (i=7; i>=0; i--) {
+ fptag <<= 2;
+ if (env->fptags[i]) {
+ fptag |= 3;
+ } else {
+ /* the FPU automatically computes it */
+ }
+ }
+ fp->fptag = fptag;
+ j = env->fpstt;
+ for(i = 0;i < 8; i++) {
+ memcpy(&fp->fpregs1[i * 10], &env->fpregs[j].d, 10);
+ j = (j + 1) & 7;
+ }
+ asm volatile ("frstor %0" : "=m" (*fp));
+}
+
+static void save_native_fp_fsave(CPUState *env)
+{
+ int fptag, i, j;
+ uint16_t fpuc;
+ struct fpstate fp1, *fp = &fp1;
+
+ asm volatile ("fsave %0" : : "m" (*fp));
+ env->fpuc = fp->fpuc;
+ env->fpstt = (fp->fpus >> 11) & 7;
+ env->fpus = fp->fpus & ~0x3800;
+ fptag = fp->fptag;
+ for(i = 0;i < 8; i++) {
+ env->fptags[i] = ((fptag & 3) == 3);
+ fptag >>= 2;
+ }
+ j = env->fpstt;
+ for(i = 0;i < 8; i++) {
+ memcpy(&env->fpregs[j].d, &fp->fpregs1[i * 10], 10);
+ j = (j + 1) & 7;
+ }
+ /* we must restore the default rounding state */
+ fpuc = 0x037f | (env->fpuc & (3 << 10));
+ asm volatile("fldcw %0" : : "m" (fpuc));
+}
+
+static void restore_native_fp_fxrstor(CPUState *env)
+{
+ struct fpxstate *fp = &fpx1;
+ int i, j, fptag;
+
+ fp->fpuc = env->fpuc;
+ fp->fpus = (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11;
+ fptag = 0;
+ for(i = 0; i < 8; i++)
+ fptag |= (env->fptags[i] << i);
+ fp->fptag = fptag ^ 0xff;
+
+ j = env->fpstt;
+ for(i = 0;i < 8; i++) {
+ memcpy(&fp->fpregs1[i * 16], &env->fpregs[j].d, 10);
+ j = (j + 1) & 7;
+ }
+ if (env->cpuid_features & CPUID_SSE) {
+ fp->mxcsr = env->mxcsr;
+ /* XXX: check if DAZ is not available */
+ fp->mxcsr_mask = 0xffff;
+ memcpy(fp->xmm_regs, env->xmm_regs, CPU_NB_REGS * 16);
+ }
+ asm volatile ("fxrstor %0" : "=m" (*fp));
+}
+
+static void save_native_fp_fxsave(CPUState *env)
+{
+ struct fpxstate *fp = &fpx1;
+ int fptag, i, j;
+ uint16_t fpuc;
+
+ asm volatile ("fxsave %0" : : "m" (*fp));
+ env->fpuc = fp->fpuc;
+ env->fpstt = (fp->fpus >> 11) & 7;
+ env->fpus = fp->fpus & ~0x3800;
+ fptag = fp->fptag ^ 0xff;
+ for(i = 0;i < 8; i++) {
+ env->fptags[i] = (fptag >> i) & 1;
+ }
+ j = env->fpstt;
+ for(i = 0;i < 8; i++) {
+ memcpy(&env->fpregs[j].d, &fp->fpregs1[i * 16], 10);
+ j = (j + 1) & 7;
+ }
+ if (env->cpuid_features & CPUID_SSE) {
+ env->mxcsr = fp->mxcsr;
+ memcpy(env->xmm_regs, fp->xmm_regs, CPU_NB_REGS * 16);
+ }
+
+ /* we must restore the default rounding state */
+ asm volatile ("fninit");
+ fpuc = 0x037f | (env->fpuc & (3 << 10));
+ asm volatile("fldcw %0" : : "m" (fpuc));
+}
+
+static int do_syscall(CPUState *env,
+ struct kqemu_cpu_state *kenv)
+{
+ int selector;
+
+ selector = (env->star >> 32) & 0xffff;
+#ifdef TARGET_X86_64
+ if (env->hflags & HF_LMA_MASK) {
+ int code64;
+
+ env->regs[R_ECX] = kenv->next_eip;
+ env->regs[11] = env->eflags;
+
+ code64 = env->hflags & HF_CS64_MASK;
+
+ cpu_x86_set_cpl(env, 0);
+ cpu_x86_load_seg_cache(env, R_CS, selector & 0xfffc,
+ 0, 0xffffffff,
+ DESC_G_MASK | DESC_P_MASK |
+ DESC_S_MASK |
+ DESC_CS_MASK | DESC_R_MASK | DESC_A_MASK | DESC_L_MASK);
+ cpu_x86_load_seg_cache(env, R_SS, (selector + 8) & 0xfffc,
+ 0, 0xffffffff,
+ DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |
+ DESC_S_MASK |
+ DESC_W_MASK | DESC_A_MASK);
+ env->eflags &= ~env->fmask;
+ if (code64)
+ env->eip = env->lstar;
+ else
+ env->eip = env->cstar;
+ } else
+#endif
+ {
+ env->regs[R_ECX] = (uint32_t)kenv->next_eip;
+
+ cpu_x86_set_cpl(env, 0);
+ cpu_x86_load_seg_cache(env, R_CS, selector & 0xfffc,
+ 0, 0xffffffff,
+ DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |
+ DESC_S_MASK |
+ DESC_CS_MASK | DESC_R_MASK | DESC_A_MASK);
+ cpu_x86_load_seg_cache(env, R_SS, (selector + 8) & 0xfffc,
+ 0, 0xffffffff,
+ DESC_G_MASK | DESC_B_MASK | DESC_P_MASK |
+ DESC_S_MASK |
+ DESC_W_MASK | DESC_A_MASK);
+ env->eflags &= ~(IF_MASK | RF_MASK | VM_MASK);
+ env->eip = (uint32_t)env->star;
+ }
+ return 2;
+}
+
+#ifdef CONFIG_PROFILER
+
+#define PC_REC_SIZE 1
+#define PC_REC_HASH_BITS 16
+#define PC_REC_HASH_SIZE (1 << PC_REC_HASH_BITS)
+
+typedef struct PCRecord {
+ unsigned long pc;
+ int64_t count;
+ struct PCRecord *next;
+} PCRecord;
+
+static PCRecord *pc_rec_hash[PC_REC_HASH_SIZE];
+static int nb_pc_records;
+
+static void kqemu_record_pc(unsigned long pc)
+{
+ unsigned long h;
+ PCRecord **pr, *r;
+
+ h = pc / PC_REC_SIZE;
+ h = h ^ (h >> PC_REC_HASH_BITS);
+ h &= (PC_REC_HASH_SIZE - 1);
+ pr = &pc_rec_hash[h];
+ for(;;) {
+ r = *pr;
+ if (r == NULL)
+ break;
+ if (r->pc == pc) {
+ r->count++;
+ return;
+ }
+ pr = &r->next;
+ }
+ r = malloc(sizeof(PCRecord));
+ r->count = 1;
+ r->pc = pc;
+ r->next = NULL;
+ *pr = r;
+ nb_pc_records++;
+}
+
+static int pc_rec_cmp(const void *p1, const void *p2)
+{
+ PCRecord *r1 = *(PCRecord **)p1;
+ PCRecord *r2 = *(PCRecord **)p2;
+ if (r1->count < r2->count)
+ return 1;
+ else if (r1->count == r2->count)
+ return 0;
+ else
+ return -1;
+}
+
+static void kqemu_record_flush(void)
+{
+ PCRecord *r, *r_next;
+ int h;
+
+ for(h = 0; h < PC_REC_HASH_SIZE; h++) {
+ for(r = pc_rec_hash[h]; r != NULL; r = r_next) {
+ r_next = r->next;
+ free(r);
+ }
+ pc_rec_hash[h] = NULL;
+ }
+ nb_pc_records = 0;
+}
+
+void kqemu_record_dump(void)
+{
+ PCRecord **pr, *r;
+ int i, h;
+ FILE *f;
+ int64_t total, sum;
+
+ pr = malloc(sizeof(PCRecord *) * nb_pc_records);
+ i = 0;
+ total = 0;
+ for(h = 0; h < PC_REC_HASH_SIZE; h++) {
+ for(r = pc_rec_hash[h]; r != NULL; r = r->next) {
+ pr[i++] = r;
+ total += r->count;
+ }
+ }
+ qsort(pr, nb_pc_records, sizeof(PCRecord *), pc_rec_cmp);
+
+ f = fopen("/tmp/kqemu.stats", "w");
+ if (!f) {
+ perror("/tmp/kqemu.stats");
+ exit(1);
+ }
+ fprintf(f, "total: %" PRId64 "\n", total);
+ sum = 0;
+ for(i = 0; i < nb_pc_records; i++) {
+ r = pr[i];
+ sum += r->count;
+ fprintf(f, "%08lx: %" PRId64 " %0.2f%% %0.2f%%\n",
+ r->pc,
+ r->count,
+ (double)r->count / (double)total * 100.0,
+ (double)sum / (double)total * 100.0);
+ }
+ fclose(f);
+ free(pr);
+
+ kqemu_record_flush();
+}
+#endif
+
+static inline void kqemu_load_seg(struct kqemu_segment_cache *ksc,
+ const SegmentCache *sc)
+{
+ ksc->selector = sc->selector;
+ ksc->flags = sc->flags;
+ ksc->limit = sc->limit;
+ ksc->base = sc->base;
+}
+
+static inline void kqemu_save_seg(SegmentCache *sc,
+ const struct kqemu_segment_cache *ksc)
+{
+ sc->selector = ksc->selector;
+ sc->flags = ksc->flags;
+ sc->limit = ksc->limit;
+ sc->base = ksc->base;
+}
+
+int kqemu_cpu_exec(CPUState *env)
+{
+ struct kqemu_cpu_state kcpu_state, *kenv = &kcpu_state;
+ int ret, cpl, i;
+#ifdef CONFIG_PROFILER
+ int64_t ti;
+#endif
+#ifdef _WIN32
+ DWORD temp;
+#endif
+
+#ifdef CONFIG_PROFILER
+ ti = profile_getclock();
+#endif
+ LOG_INT("kqemu: cpu_exec: enter\n");
+ LOG_INT_STATE(env);
+ for(i = 0; i < CPU_NB_REGS; i++)
+ kenv->regs[i] = env->regs[i];
+ kenv->eip = env->eip;
+ kenv->eflags = env->eflags;
+ for(i = 0; i < 6; i++)
+ kqemu_load_seg(&kenv->segs[i], &env->segs[i]);
+ kqemu_load_seg(&kenv->ldt, &env->ldt);
+ kqemu_load_seg(&kenv->tr, &env->tr);
+ kqemu_load_seg(&kenv->gdt, &env->gdt);
+ kqemu_load_seg(&kenv->idt, &env->idt);
+ kenv->cr0 = env->cr[0];
+ kenv->cr2 = env->cr[2];
+ kenv->cr3 = env->cr[3];
+ kenv->cr4 = env->cr[4];
+ kenv->a20_mask = env->a20_mask;
+ kenv->efer = env->efer;
+ kenv->tsc_offset = 0;
+ kenv->star = env->star;
+ kenv->sysenter_cs = env->sysenter_cs;
+ kenv->sysenter_esp = env->sysenter_esp;
+ kenv->sysenter_eip = env->sysenter_eip;
+#ifdef TARGET_X86_64
+ kenv->lstar = env->lstar;
+ kenv->cstar = env->cstar;
+ kenv->fmask = env->fmask;
+ kenv->kernelgsbase = env->kernelgsbase;
+#endif
+ if (env->dr[7] & 0xff) {
+ kenv->dr7 = env->dr[7];
+ kenv->dr0 = env->dr[0];
+ kenv->dr1 = env->dr[1];
+ kenv->dr2 = env->dr[2];
+ kenv->dr3 = env->dr[3];
+ } else {
+ kenv->dr7 = 0;
+ }
+ kenv->dr6 = env->dr[6];
+ cpl = (env->hflags & HF_CPL_MASK);
+ kenv->cpl = cpl;
+ kenv->nb_pages_to_flush = nb_pages_to_flush;
+ kenv->user_only = (env->kqemu_enabled == 1);
+ kenv->nb_ram_pages_to_update = nb_ram_pages_to_update;
+ nb_ram_pages_to_update = 0;
+ kenv->nb_modified_ram_pages = nb_modified_ram_pages;
+
+ kqemu_reset_modified_ram_pages();
+
+ if (env->cpuid_features & CPUID_FXSR)
+ restore_native_fp_fxrstor(env);
+ else
+ restore_native_fp_frstor(env);
+
+#ifdef _WIN32
+ if (DeviceIoControl(kqemu_fd, KQEMU_EXEC,
+ kenv, sizeof(struct kqemu_cpu_state),
+ kenv, sizeof(struct kqemu_cpu_state),
+ &temp, NULL)) {
+ ret = kenv->retval;
+ } else {
+ ret = -1;
+ }
+#else
+ ioctl(kqemu_fd, KQEMU_EXEC, kenv);
+ ret = kenv->retval;
+#endif
+ if (env->cpuid_features & CPUID_FXSR)
+ save_native_fp_fxsave(env);
+ else
+ save_native_fp_fsave(env);
+
+ for(i = 0; i < CPU_NB_REGS; i++)
+ env->regs[i] = kenv->regs[i];
+ env->eip = kenv->eip;
+ env->eflags = kenv->eflags;
+ for(i = 0; i < 6; i++)
+ kqemu_save_seg(&env->segs[i], &kenv->segs[i]);
+ cpu_x86_set_cpl(env, kenv->cpl);
+ kqemu_save_seg(&env->ldt, &kenv->ldt);
+ env->cr[0] = kenv->cr0;
+ env->cr[4] = kenv->cr4;
+ env->cr[3] = kenv->cr3;
+ env->cr[2] = kenv->cr2;
+ env->dr[6] = kenv->dr6;
+#ifdef TARGET_X86_64
+ env->kernelgsbase = kenv->kernelgsbase;
+#endif
+
+ /* flush pages as indicated by kqemu */
+ if (kenv->nb_pages_to_flush >= KQEMU_FLUSH_ALL) {
+ tlb_flush(env, 1);
+ } else {
+ for(i = 0; i < kenv->nb_pages_to_flush; i++) {
+ tlb_flush_page(env, pages_to_flush[i]);
+ }
+ }
+ nb_pages_to_flush = 0;
+
+#ifdef CONFIG_PROFILER
+ kqemu_time += profile_getclock() - ti;
+ kqemu_exec_count++;
+#endif
+
+ if (kenv->nb_ram_pages_to_update > 0) {
+ cpu_tlb_update_dirty(env);
+ }
+
+ if (kenv->nb_modified_ram_pages > 0) {
+ for(i = 0; i < kenv->nb_modified_ram_pages; i++) {
+ unsigned long addr;
+ addr = modified_ram_pages[i];
+ tb_invalidate_phys_page_range(addr, addr + TARGET_PAGE_SIZE, 0);
+ }
+ }
+
+ /* restore the hidden flags */
+ {
+ unsigned int new_hflags;
+#ifdef TARGET_X86_64
+ if ((env->hflags & HF_LMA_MASK) &&
+ (env->segs[R_CS].flags & DESC_L_MASK)) {
+ /* long mode */
+ new_hflags = HF_CS32_MASK | HF_SS32_MASK | HF_CS64_MASK;
+ } else
+#endif
+ {
+ /* legacy / compatibility case */
+ new_hflags = (env->segs[R_CS].flags & DESC_B_MASK)
+ >> (DESC_B_SHIFT - HF_CS32_SHIFT);
+ new_hflags |= (env->segs[R_SS].flags & DESC_B_MASK)
+ >> (DESC_B_SHIFT - HF_SS32_SHIFT);
+ if (!(env->cr[0] & CR0_PE_MASK) ||
+ (env->eflags & VM_MASK) ||
+ !(env->hflags & HF_CS32_MASK)) {
+ /* XXX: try to avoid this test. The problem comes from the
+ fact that is real mode or vm86 mode we only modify the
+ 'base' and 'selector' fields of the segment cache to go
+ faster. A solution may be to force addseg to one in
+ translate-i386.c. */
+ new_hflags |= HF_ADDSEG_MASK;
+ } else {
+ new_hflags |= ((env->segs[R_DS].base |
+ env->segs[R_ES].base |
+ env->segs[R_SS].base) != 0) <<
+ HF_ADDSEG_SHIFT;
+ }
+ }
+ env->hflags = (env->hflags &
+ ~(HF_CS32_MASK | HF_SS32_MASK | HF_CS64_MASK | HF_ADDSEG_MASK)) |
+ new_hflags;
+ }
+ /* update FPU flags */
+ env->hflags = (env->hflags & ~(HF_MP_MASK | HF_EM_MASK | HF_TS_MASK)) |
+ ((env->cr[0] << (HF_MP_SHIFT - 1)) & (HF_MP_MASK | HF_EM_MASK | HF_TS_MASK));
+ if (env->cr[4] & CR4_OSFXSR_MASK)
+ env->hflags |= HF_OSFXSR_MASK;
+ else
+ env->hflags &= ~HF_OSFXSR_MASK;
+
+ LOG_INT("kqemu: kqemu_cpu_exec: ret=0x%x\n", ret);
+ if (ret == KQEMU_RET_SYSCALL) {
+ /* syscall instruction */
+ return do_syscall(env, kenv);
+ } else
+ if ((ret & 0xff00) == KQEMU_RET_INT) {
+ env->exception_index = ret & 0xff;
+ env->error_code = 0;
+ env->exception_is_int = 1;
+ env->exception_next_eip = kenv->next_eip;
+#ifdef CONFIG_PROFILER
+ kqemu_ret_int_count++;
+#endif
+ LOG_INT("kqemu: interrupt v=%02x:\n", env->exception_index);
+ LOG_INT_STATE(env);
+ return 1;
+ } else if ((ret & 0xff00) == KQEMU_RET_EXCEPTION) {
+ env->exception_index = ret & 0xff;
+ env->error_code = kenv->error_code;
+ env->exception_is_int = 0;
+ env->exception_next_eip = 0;
+#ifdef CONFIG_PROFILER
+ kqemu_ret_excp_count++;
+#endif
+ LOG_INT("kqemu: exception v=%02x e=%04x:\n",
+ env->exception_index, env->error_code);
+ LOG_INT_STATE(env);
+ return 1;
+ } else if (ret == KQEMU_RET_INTR) {
+#ifdef CONFIG_PROFILER
+ kqemu_ret_intr_count++;
+#endif
+ LOG_INT_STATE(env);
+ return 0;
+ } else if (ret == KQEMU_RET_SOFTMMU) {
+#ifdef CONFIG_PROFILER
+ {
+ unsigned long pc = env->eip + env->segs[R_CS].base;
+ kqemu_record_pc(pc);
+ }
+#endif
+ LOG_INT_STATE(env);
+ return 2;
+ } else {
+ cpu_dump_state(env, stderr, fprintf, 0);
+ fprintf(stderr, "Unsupported return value: 0x%x\n", ret);
+ exit(1);
+ }
+ return 0;
+}
+
+void kqemu_cpu_interrupt(CPUState *env)
+{
+#if defined(_WIN32)
+ /* cancelling the I/O request causes KQEMU to finish executing the
+ current block and successfully returning. */
+ CancelIo(kqemu_fd);
+#endif
+}
+
+/*
+ QEMU paravirtualization interface. The current interface only
+ allows to modify the IF and IOPL flags when running in
+ kqemu.
+
+ At this point it is not very satisfactory. I leave it for reference
+ as it adds little complexity.
+*/
+
+#define QPI_COMM_PAGE_PHYS_ADDR 0xff000000
+
+static uint32_t qpi_mem_readb(void *opaque, target_phys_addr_t addr)
+{
+ return 0;
+}
+
+static uint32_t qpi_mem_readw(void *opaque, target_phys_addr_t addr)
+{
+ return 0;
+}
+
+static void qpi_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
+{
+}
+
+static void qpi_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
+{
+}
+
+static uint32_t qpi_mem_readl(void *opaque, target_phys_addr_t addr)
+{
+ CPUState *env;
+
+ env = cpu_single_env;
+ if (!env)
+ return 0;
+ return env->eflags & (IF_MASK | IOPL_MASK);
+}
+
+/* Note: after writing to this address, the guest code must make sure
+ it is exiting the current TB. pushf/popf can be used for that
+ purpose. */
+static void qpi_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
+{
+ CPUState *env;
+
+ env = cpu_single_env;
+ if (!env)
+ return;
+ env->eflags = (env->eflags & ~(IF_MASK | IOPL_MASK)) |
+ (val & (IF_MASK | IOPL_MASK));
+}
+
+static CPUReadMemoryFunc *qpi_mem_read[3] = {
+ qpi_mem_readb,
+ qpi_mem_readw,
+ qpi_mem_readl,
+};
+
+static CPUWriteMemoryFunc *qpi_mem_write[3] = {
+ qpi_mem_writeb,
+ qpi_mem_writew,
+ qpi_mem_writel,
+};
+
+static void qpi_init(void)
+{
+ kqemu_comm_base = 0xff000000 | 1;
+ qpi_io_memory = cpu_register_io_memory(0,
+ qpi_mem_read,
+ qpi_mem_write, NULL);
+ cpu_register_physical_memory(kqemu_comm_base & ~0xfff,
+ 0x1000, qpi_io_memory);
+}
+#endif
diff --git a/testing/qemu/kqemu.patch b/testing/qemu/kqemu.patch
new file mode 100644
index 00000000..337a356c
--- /dev/null
+++ b/testing/qemu/kqemu.patch
@@ -0,0 +1,32 @@
+--- a/kqemu.c 2009-07-17 00:56:23.000000000 +0000
++++ b/kqemu.c 2009-08-22 13:20:00.000000000 +0000
+@@ -93,9 +93,9 @@
+ int qpi_io_memory;
+ uint32_t kqemu_comm_base; /* physical address of the QPI communication page */
+
+-#define cpuid(index, eax, ebx, ecx, edx) \
++#define cpuid(index, eax, ecx, edx) \
+ asm volatile ("cpuid" \
+- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) \
++ : "=a" (eax), "=c" (ecx), "=d" (edx) \
+ : "0" (index))
+
+ #ifdef __x86_64__
+@@ -125,7 +125,7 @@
+ static void kqemu_update_cpuid(CPUState *env)
+ {
+ int critical_features_mask, features, ext_features, ext_features_mask;
+- uint32_t eax, ebx, ecx, edx;
++ uint32_t eax, ecx, edx;
+
+ /* the following features are kept identical on the host and
+ target cpus because they are important for user code. Strictly
+@@ -140,7 +140,7 @@
+ features = 0;
+ ext_features = 0;
+ } else {
+- cpuid(1, eax, ebx, ecx, edx);
++ cpuid(1, eax, ecx, edx);
+ features = edx;
+ ext_features = ecx;
+ }
diff --git a/testing/qemu/qemu-0.10.3-nopl-fix.patch b/testing/qemu/qemu-0.10.3-nopl-fix.patch
new file mode 100644
index 00000000..bdef0efc
--- /dev/null
+++ b/testing/qemu/qemu-0.10.3-nopl-fix.patch
@@ -0,0 +1,32 @@
+--- i386-dis.c 2009-03-22 00:05:48.000000000 +0100
++++ i386-dis_new.c 2009-04-21 08:31:08.000000000 +0200
+@@ -784,13 +784,13 @@
+ { "movhpX", EX, XM, SIMD_Fixup, 'l' },
+ /* 18 */
+ { GRP14 },
+- { "(bad)", XX, XX, XX },
+- { "(bad)", XX, XX, XX },
+- { "(bad)", XX, XX, XX },
+- { "(bad)", XX, XX, XX },
+- { "(bad)", XX, XX, XX },
+- { "(bad)", XX, XX, XX },
+- { "(bad)", XX, XX, XX },
++ { "nopQ", Ev, XX, XX },
++ { "nopQ", Ev, XX, XX },
++ { "nopQ", Ev, XX, XX },
++ { "nopQ", Ev, XX, XX },
++ { "nopQ", Ev, XX, XX },
++ { "nopQ", Ev, XX, XX },
++ { "nopQ", Ev, XX, XX },
+ /* 20 */
+ { "movL", Rm, Cm, XX },
+ { "movL", Rm, Dm, XX },
+@@ -1072,7 +1072,7 @@
+ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
+ /* ------------------------------- */
+ /* 00 */ 1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1, /* 0f */
+- /* 10 */ 1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, /* 1f */
++ /* 10 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 1f */
+ /* 20 */ 1,1,1,1,1,0,1,0,1,1,1,1,1,1,1,1, /* 2f */
+ /* 30 */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 3f */
+ /* 40 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* 4f */
diff --git a/testing/qemu/qemu.pre-install b/testing/qemu/qemu.pre-install
new file mode 100644
index 00000000..0119bacb
--- /dev/null
+++ b/testing/qemu/qemu.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+if ! getent group | grep -q "^kvm:"; then
+ addgroup kvm
+fi
+
diff --git a/testing/rrdbot/APKBUILD b/testing/rrdbot/APKBUILD
new file mode 100644
index 00000000..d1f1e17d
--- /dev/null
+++ b/testing/rrdbot/APKBUILD
@@ -0,0 +1,46 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=rrdbot
+pkgver=0.9.6
+pkgrel=0
+pkgdesc="an SNMP polling daemon which writes the polled values to an RRD database"
+url="http://memberwebs.com/stef/software/rrdbot/"
+license="BSD"
+depends=
+makedepends=rrdtool-dev
+install="$pkgname.pre-install $pkgname.post-install"
+subpackages="$pkgname-doc"
+source="http://memberwebs.com/stef/software/rrdbot/rrdbot-$pkgver.tar.gz
+ rrdbotd.initd
+ rrdbotd.confd
+ "
+
+# append extra dependencies to -dev subpackage
+# remove if not used.
+# depends_dev="somepackage-dev"
+
+_builddir="$srcdir"/$pkgname-$pkgver
+
+prepare() {
+ cd "$_builddir"
+ # apply patches here
+}
+
+build() {
+ cd "$_builddir"
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+}
+
+package() {
+ cd "$_builddir"
+ make DESTDIR="$pkgdir" install
+ install -m755 -D "$srcdir"/rrdbotd.initd "$pkgdir"/etc/init.d/rrdbotd
+ install -m644 -D "$srcdir"/rrdbotd.confd "$pkgdir"/etc/conf.d/rrdbotd
+}
+
+md5sums="8329c8f58136158b25c3179e825c66e6 rrdbot-0.9.6.tar.gz
+e74785806860537d38a5863fc90b324f rrdbotd.initd
+cbcac88f5b728b1441891947a4babbcb rrdbotd.confd"
diff --git a/testing/rrdbot/rrdbot.post-install b/testing/rrdbot/rrdbot.post-install
new file mode 100644
index 00000000..0586fcd5
--- /dev/null
+++ b/testing/rrdbot/rrdbot.post-install
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# add something which happends after install
+
diff --git a/testing/rrdbot/rrdbot.pre-install b/testing/rrdbot/rrdbot.pre-install
new file mode 100644
index 00000000..2c35d02d
--- /dev/null
+++ b/testing/rrdbot/rrdbot.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# this user should be included in alpine-baselayout-1.2.
+# included here for backward compability.
+adduser -H -s /bin/false -D rrdbotd 2>/dev/null
+
+exit 0
diff --git a/testing/rrdbot/rrdbotd.confd b/testing/rrdbot/rrdbotd.confd
new file mode 100644
index 00000000..486252b0
--- /dev/null
+++ b/testing/rrdbot/rrdbotd.confd
@@ -0,0 +1,7 @@
+# Sample conf.d file for alpine linux
+
+#
+# Specify daemon options here.
+#
+
+sample_opts=""
diff --git a/testing/rrdbot/rrdbotd.initd b/testing/rrdbot/rrdbotd.initd
new file mode 100644
index 00000000..d0fcdc4a
--- /dev/null
+++ b/testing/rrdbot/rrdbotd.initd
@@ -0,0 +1,28 @@
+#!/sbin/runscript
+
+name=rrdbotd
+daemon=/usr/sbin/$name
+pidfile=${rrdbotd_pidfile:-/var/run/rrdbotd/rrdbotd.pid}
+
+depend() {
+ need net
+ after firewall
+}
+
+start() {
+ ebegin "Starting ${name}"
+ start-stop-daemon --start --quiet \
+ --pidfile "$pidfile" \
+ --chuid ${rrdbotd_user:-rrdbotd}:${rrdbotd_group:-rrdbotd} \
+ --exec ${daemon} -- ${rrdbotd_opts} -p "$pidfile"
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ${name}"
+ start-stop-daemon --stop --quiet \
+ --pidfile "$pidfile" \
+ --exec ${daemon}
+ eend $?
+}
+
diff --git a/testing/rrdcollect/APKBUILD b/testing/rrdcollect/APKBUILD
new file mode 100644
index 00000000..cf4c623d
--- /dev/null
+++ b/testing/rrdcollect/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=rrdcollect
+pkgver=0.2.4
+pkgrel=0
+pkgdesc="Read system statistical data and feed it to RRDtool"
+url="http://rrdcollect.sourceforge.net/"
+license="GPL"
+depends="uclibc libpcap rrdtool"
+makedepends="libpcap-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+}
+
+md5sums="fd7ac95195e3e5cbab0677629505d9be rrdcollect-0.2.4.tar.gz"
diff --git a/testing/sems/0001-makefile-fail-on-errors.patch b/testing/sems/0001-makefile-fail-on-errors.patch
new file mode 100644
index 00000000..9dcbb230
--- /dev/null
+++ b/testing/sems/0001-makefile-fail-on-errors.patch
@@ -0,0 +1,170 @@
+From 7773c850b91d5c78679606065402caac29219dd8 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 18 Dec 2009 08:57:27 +0000
+Subject: [PATCH 1/2] makefile fail on errors
+
+---
+ Makefile | 8 ++++----
+ apps/Makefile | 12 ++++++------
+ core/Makefile | 2 +-
+ core/plug-in/Makefile | 14 +++++++-------
+ core/plug-in/Makefile.app_module | 4 ++--
+ 5 files changed, 20 insertions(+), 20 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 7dd01de..c210761 100644
+--- a/Makefile
++++ b/Makefile
+@@ -28,21 +28,21 @@ clean:
+
+ .PHONY: modules
+ modules:
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- $(MAKE) -C $$r all; \
++ $(MAKE) -C $$r all || exit 1; \
+ fi ; \
+ done
+
+ .PHONY: install
+ install:
+- -@for r in $(imodules) "" ; do \
++ @for r in $(imodules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- $(MAKE) -C $$r install; \
++ $(MAKE) -C $$r install || exit 1; \
+ fi ; \
+ done
+ -@if [ -d ser-0.9.6-sems ]; then \
+diff --git a/apps/Makefile b/apps/Makefile
+index 23c6437..57df618 100644
+--- a/apps/Makefile
++++ b/apps/Makefile
+@@ -30,11 +30,11 @@ clean:
+
+ .PHONY: modules
+ modules:
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- COREPATH=../$(COREPATH) $(MAKE) -C $$r all; \
++ COREPATH=../$(COREPATH) $(MAKE) -C $$r all || exit 1; \
+ fi ; \
+ done
+
+@@ -43,20 +43,20 @@ install: install-bin install-cfg
+
+ .PHONY: install-bin
+ install-bin:
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- COREPATH=../$(COREPATH) $(MAKE) -C $$r install; \
++ COREPATH=../$(COREPATH) $(MAKE) -C $$r install || exit 1; \
+ fi ; \
+ done
+
+ .PHONY: install-cfg
+ install-cfg: $(DESTDIR)$(cfg-target)
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- COREPATH=../$(COREPATH) $(MAKE) -C $$r install-cfg; \
++ COREPATH=../$(COREPATH) $(MAKE) -C $$r install-cfg || exit 1; \
+ fi ; \
+ done
+diff --git a/core/Makefile b/core/Makefile
+index e3734d5..e1fe274 100644
+--- a/core/Makefile
++++ b/core/Makefile
+@@ -11,7 +11,7 @@ AUDIO_FILES=$(notdir $(wildcard wav/*.wav))
+
+ .PHONY: all
+ all: ../Makefile.defs
+- -@$(MAKE) deps && \
++ @$(MAKE) deps && \
+ $(MAKE) $(NAME) && \
+ $(MAKE) modules
+
+diff --git a/core/plug-in/Makefile b/core/plug-in/Makefile
+index e7d988c..cc38e2f 100644
+--- a/core/plug-in/Makefile
++++ b/core/plug-in/Makefile
+@@ -1,6 +1,6 @@
+ include ../../Makefile.defs
+
+-exclude_modules ?= g722
++exclude_modules ?= g722 speex
+ #echo
+
+ modules = $(filter-out $(subst ;, ,$(exclude_modules)) \
+@@ -25,30 +25,30 @@ clean:
+
+ .PHONY: modules
+ modules:
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- $(MAKE) -C $$r all; \
++ $(MAKE) -C $$r all || exit 1; \
+ fi ; \
+ done
+
+ .PHONY: install
+ install:
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- $(MAKE) -C $$r install; \
++ $(MAKE) -C $$r install || exit 1; \
+ fi ; \
+ done
+
+ .PHONY: install-cfg
+ install-cfg: $(DESTDIR)$(cfg-target)
+- -@for r in $(modules) "" ; do \
++ @for r in $(modules) "" ; do \
+ if [ -n "$$r" ]; then \
+ echo "" ; \
+ echo "" ; \
+- COREPATH=../$(COREPATH) $(MAKE) -C $$r install-cfg; \
++ COREPATH=../$(COREPATH) $(MAKE) -C $$r install-cfg || exit 1; \
+ fi ; \
+ done
+diff --git a/core/plug-in/Makefile.app_module b/core/plug-in/Makefile.app_module
+index 8b7acaa..a6e1ef2 100644
+--- a/core/plug-in/Makefile.app_module
++++ b/core/plug-in/Makefile.app_module
+@@ -27,12 +27,12 @@ depends = $(srcs:.cpp=.d)
+
+ .PHONY: all
+ all: $(extra_target)
+- -@$(MAKE) deps && \
++ @$(MAKE) deps && \
+ $(MAKE) $(lib_full_name)
+
+ .PHONY: module_package
+ module_package: $(extra_target)
+- -@$(MAKE) deps && \
++ @$(MAKE) deps && \
+ $(MAKE) $(lib_name)
+
+
+--
+1.6.5.6
+
diff --git a/testing/sems/0002-include-headers.patch b/testing/sems/0002-include-headers.patch
new file mode 100644
index 00000000..5e9a2477
--- /dev/null
+++ b/testing/sems/0002-include-headers.patch
@@ -0,0 +1,116 @@
+From 43faa45d0455c5bb53a0f992ffc7bdf92c94c945 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 18 Dec 2009 08:58:18 +0000
+Subject: [PATCH 2/2] include headers
+
+---
+ apps/annrecorder/AnnRecorder.cpp | 2 ++
+ apps/callback/CallBack.cpp | 1 +
+ apps/diameter_client/ServerConnection.cpp | 1 +
+ apps/diameter_client/ServerConnection.h | 1 +
+ core/AmMediaProcessor.cpp | 1 +
+ core/AmRtpReceiver.cpp | 1 +
+ core/plug-in/sipctrl/udp_trsp.cpp | 1 +
+ core/plug-in/stats/query_stats.cxx | 1 +
+ 8 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/apps/annrecorder/AnnRecorder.cpp b/apps/annrecorder/AnnRecorder.cpp
+index b32cd58..7ba9639 100644
+--- a/apps/annrecorder/AnnRecorder.cpp
++++ b/apps/annrecorder/AnnRecorder.cpp
+@@ -25,6 +25,8 @@
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
++#include <unistd.h>
++
+ #include "AnnRecorder.h"
+ #include "AmConfig.h"
+ #include "AmUtils.h"
+diff --git a/apps/callback/CallBack.cpp b/apps/callback/CallBack.cpp
+index 360e698..6019705 100644
+--- a/apps/callback/CallBack.cpp
++++ b/apps/callback/CallBack.cpp
+@@ -32,6 +32,7 @@
+ #include "AmPlugIn.h"
+
+ #include <stdlib.h>
++#include <unistd.h>
+
+ EXPORT_SESSION_FACTORY(CallBackFactory,MOD_NAME);
+ string CallBackFactory::gw_user;
+diff --git a/apps/diameter_client/ServerConnection.cpp b/apps/diameter_client/ServerConnection.cpp
+index 4157304..3e2a14f 100644
+--- a/apps/diameter_client/ServerConnection.cpp
++++ b/apps/diameter_client/ServerConnection.cpp
+@@ -30,6 +30,7 @@
+ #include "ampi/DiameterClientAPI.h"
+ #include "diameter_client.h"
+
++#include <unistd.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "log.h"
+diff --git a/apps/diameter_client/ServerConnection.h b/apps/diameter_client/ServerConnection.h
+index d797d15..0af146a 100644
+--- a/apps/diameter_client/ServerConnection.h
++++ b/apps/diameter_client/ServerConnection.h
+@@ -38,6 +38,7 @@
+ #include <vector>
+ #include <map>
+ #include <utility>
++#include <stdint.h>
+ using std::string;
+ using std::vector;
+ using std::map;
+diff --git a/core/AmMediaProcessor.cpp b/core/AmMediaProcessor.cpp
+index 9650c91..0da86b0 100644
+--- a/core/AmMediaProcessor.cpp
++++ b/core/AmMediaProcessor.cpp
+@@ -29,6 +29,7 @@
+ #include "AmSession.h"
+ #include "AmRtpStream.h"
+
++#include <unistd.h>
+ #include <assert.h>
+ #include <sys/time.h>
+ #include <signal.h>
+diff --git a/core/AmRtpReceiver.cpp b/core/AmRtpReceiver.cpp
+index 5216b15..7f7fb4a 100644
+--- a/core/AmRtpReceiver.cpp
++++ b/core/AmRtpReceiver.cpp
+@@ -37,6 +37,7 @@
+ #include <strings.h>
+ #endif
+
++#include <unistd.h>
+ #include <sys/time.h>
+ #include <sys/poll.h>
+
+diff --git a/core/plug-in/sipctrl/udp_trsp.cpp b/core/plug-in/sipctrl/udp_trsp.cpp
+index 49a8358..74f00ae 100644
+--- a/core/plug-in/sipctrl/udp_trsp.cpp
++++ b/core/plug-in/sipctrl/udp_trsp.cpp
+@@ -36,6 +36,7 @@
+ #include <sys/param.h>
+ #include <arpa/inet.h>
+
++#include <unistd.h>
+ #include <errno.h>
+ #include <string.h>
+
+diff --git a/core/plug-in/stats/query_stats.cxx b/core/plug-in/stats/query_stats.cxx
+index 674f16c..10c498a 100644
+--- a/core/plug-in/stats/query_stats.cxx
++++ b/core/plug-in/stats/query_stats.cxx
+@@ -7,6 +7,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <stdlib.h>
++#include <unistd.h>
+
+ #include <map>
+ #include <string>
+--
+1.6.5.6
+
diff --git a/testing/sems/0003-cc-and-cflags.patch b/testing/sems/0003-cc-and-cflags.patch
new file mode 100644
index 00000000..a17c1f77
--- /dev/null
+++ b/testing/sems/0003-cc-and-cflags.patch
@@ -0,0 +1,45 @@
+From b411106aa364fd13e87d85e94ade9eeb1d6aeb8e Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 18 Dec 2009 09:13:58 +0000
+Subject: [PATCH] cc and cflags
+
+---
+ core/plug-in/binrpcctrl/Makefile | 2 +-
+ core/plug-in/gsm/gsm-1.0-pl10/Makefile | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/core/plug-in/binrpcctrl/Makefile b/core/plug-in/binrpcctrl/Makefile
+index 71680f3..753779a 100644
+--- a/core/plug-in/binrpcctrl/Makefile
++++ b/core/plug-in/binrpcctrl/Makefile
+@@ -35,7 +35,7 @@ libbinrpc:
+ $(MAKE) all
+
+ $(LIBBINRPC_LIB)/libbinrpc.a:
+- $(MAKE) -C $(LIBBINRPC_DIR) all CC=$(CC) LD=$(LD) AR=$(AR)
++ $(MAKE) -C $(LIBBINRPC_DIR) all CC="$(CC)" LD="$(LD)" AR="$(AR)"
+
+ libbinrpc_clean:
+ $(MAKE) -C $(LIBBINRPC_DIR) clean
+diff --git a/core/plug-in/gsm/gsm-1.0-pl10/Makefile b/core/plug-in/gsm/gsm-1.0-pl10/Makefile
+index 396fb7f..6a1a1a1 100644
+--- a/core/plug-in/gsm/gsm-1.0-pl10/Makefile
++++ b/core/plug-in/gsm/gsm-1.0-pl10/Makefile
+@@ -43,11 +43,11 @@ WAV49 =
+ # CC = /usr/lang/acc
+ # CCFLAGS = -c -O
+
+-CC = gcc -ansi -pedantic
+-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1 -fPIC
++CC ?= gcc
++CCFLAGS += -ansi -pedantic -c -O2 -DNeedFunctionPrototypes=1 -fPIC
+ MODULE_CFLAGS = -I inc -DHAS_STDLIB_H
+
+-LD = $(CC)
++LD ?= $(CC)
+
+ # LD = gcc
+ # LDFLAGS =
+--
+1.6.5.6
+
diff --git a/testing/sems/APKBUILD b/testing/sems/APKBUILD
new file mode 100644
index 00000000..51c3a044
--- /dev/null
+++ b/testing/sems/APKBUILD
@@ -0,0 +1,61 @@
+# Contributor: Francesco Colista <francesco.colista@gmail.com>
+# Maintainer: Francesco Colista <francesco.colista@gmail.com>
+pkgname=sems
+pkgver=1.1.1
+pkgrel=1
+pkgdesc="High performance, extensible media server for SIP (RFC3261) based VoIP services"
+url="http://iptel.org/sems/"
+license="GPL-2"
+depends="kamailio"
+makedepends="python-dev openssl-dev lame-dev"
+install=
+subpackages=
+source="http://ftp.iptel.org/pub/$pkgname/1.1/$pkgver/src/$pkgname-$pkgver.tar.gz
+ 0001-makefile-fail-on-errors.patch
+ 0002-include-headers.patch
+ 0003-cc-and-cflags.patch
+ "
+
+prepare() {
+ cd "$srcdir"/$pkgname-$pkgver
+ for i in "$srcdir"/*.patch; do
+ [ -f "$i" ] || continue
+ patch -p1 -i $i || return 1
+ done
+
+ sed -i -e 's:^cfg-target.*:cfg-target = $(cfg-dir):' \
+ -e 's:^cfg-prefix.*:cfg-prefix = $(basedir):' \
+ Makefile.defs \
+ || return 1
+}
+
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ make PREFIX=/usr \
+ cfg-dir=/etc/sems/ \
+ CC="$CC" CXX="$CXX" \
+ exclude_modules+="ivr examples py_sems speex gateway echo g722" \
+ WITH_MPG123DECODER=no \
+ || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make PREFIX=/usr \
+ cfg-dir=/etc/sems/ \
+ exclude_modules+="ivr examples py_sems speex gateway echo g722" \
+ DESTDIR="$pkgdir" \
+ WITH_MPG123DECODER=no \
+ install || return 1
+
+ # remove the 2 lines below (and this) if there is no init.d script
+# install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+# install -m644 -D "$srcdir"//$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
+}
+
+md5sums="4a6422d09ddadaf9eacd8cae8f0848d5 sems-1.1.1.tar.gz
+f893ceef9295b593d2b1837a538b315a 0001-makefile-fail-on-errors.patch
+3d217a6d217fa8704d108f23815d4b97 0002-include-headers.patch
+0054e6ed7e11393e71204876179d3199 0003-cc-and-cflags.patch"
diff --git a/testing/smartmontools/APKBUILD b/testing/smartmontools/APKBUILD
new file mode 100644
index 00000000..8ba05087
--- /dev/null
+++ b/testing/smartmontools/APKBUILD
@@ -0,0 +1,31 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=smartmontools
+pkgver=5.38
+pkgrel=0
+pkgdesc="Control and monitor S.M.A.R.T. enabled ATA and SCSI Hard Drives."
+url="http://smartmontools.sourceforge.net"
+license="GPL"
+depends=
+makedepends=
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
+ smartd.initd
+ smartd.confd
+ "
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir"/ install
+ rm -r "$pkgdir"/etc/rc.d
+ install -Dm755 ../smartd.initd "$pkgdir"/etc/init.d/smartd
+ install -Dm644 ../smartd.confd "$pkgdir"/etc/conf.d/smartd
+}
+md5sums="a282846532ecbd6b4a28072373b3a70b smartmontools-5.38.tar.gz
+64e6fc908146b885aa3f88796edf72f3 smartd.initd
+371cdb7cc9dc924b6d12224d66b193c6 smartd.confd"
diff --git a/testing/smartmontools/smartd.confd b/testing/smartmontools/smartd.confd
new file mode 100644
index 00000000..4b7db4df
--- /dev/null
+++ b/testing/smartmontools/smartd.confd
@@ -0,0 +1,4 @@
+# /etc/conf.d/smartd: config file for /etc/init.d/smartd
+
+# Insert any other options needed
+SMARTD_OPTS=""
diff --git a/testing/smartmontools/smartd.initd b/testing/smartmontools/smartd.initd
new file mode 100644
index 00000000..560e17d6
--- /dev/null
+++ b/testing/smartmontools/smartd.initd
@@ -0,0 +1,43 @@
+#!/sbin/runscript
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/smartmontools/files/smartd.rc,v 1.8 2009/10/11 00:43:58 vapier Exp $
+
+depend() {
+ need localmount
+ after bootmisc
+}
+
+opts="${opts} reload"
+
+checkconfig() {
+ if [ ! -f "/etc/smartd.conf" ] ; then
+ eerror "You should setup your /etc/smartd.conf file!"
+ eerror "See the smartd.conf(5) manpage."
+ return 1
+ fi
+ return 0
+}
+
+start() {
+ checkconfig || return 1
+
+ ebegin "Starting S.M.A.R.T. monitoring daemon"
+ start-stop-daemon --start --exec /usr/sbin/smartd \
+ --pidfile /var/run/smartd.pid \
+ -- -p /var/run/smartd.pid ${SMARTD_OPTS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping S.M.A.R.T. monitoring daemon"
+ start-stop-daemon --stop --exec /usr/sbin/smartd \
+ --pidfile /var/run/smartd.pid
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading configuration"
+ start-stop-daemon --oknodo --stop --signal HUP --pidfile /var/run/smartd.pid smartd
+ eend $?
+}
diff --git a/testing/spandsp/APKBUILD b/testing/spandsp/APKBUILD
new file mode 100644
index 00000000..dd1f227a
--- /dev/null
+++ b/testing/spandsp/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor:
+# Maintainer:
+pkgname=spandsp
+pkgver=0.0.5_pre4
+_ver=0.0.5pre4
+pkgrel=0
+pkgdesc="library to use DSP functions for telephony"
+url="http://www.soft-switch.org/"
+license="GPL"
+depends="uclibc tiff"
+makedepends="tiff-dev"
+install=
+subpackages="$pkgname-dev"
+source="http://www.soft-switch.org/downloads/spandsp/$pkgname-$_ver.tgz"
+
+build() {
+ cd "$srcdir/$pkgname-0.0.5"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make -j1 DESTDIR="$pkgdir" install
+
+}
+
+md5sums="fe83ed37a7831f0dd38e7ef4e7e6fd9e spandsp-0.0.5pre4.tgz"
diff --git a/testing/tcpflow/APKBUILD b/testing/tcpflow/APKBUILD
new file mode 100644
index 00000000..24473036
--- /dev/null
+++ b/testing/tcpflow/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=tcpflow
+pkgver=0.21
+pkgrel=0
+pkgdesc="A Tool for monitoring, capturing and storing TCP connections flows"
+url="http://www.circlemud.org/~jelson/software/tcpflow/"
+license="GPL"
+depends="libpcap"
+makedepends="libpcap-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://www.circlemud.org/pub/jelson/tcpflow/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR="$pkgdir" install
+
+}
+
+md5sums="45a5aef6f043312315b7f342afc4a9c5 tcpflow-0.21.tar.gz"
diff --git a/testing/twisted/APKBUILD b/testing/twisted/APKBUILD
new file mode 100644
index 00000000..684db097
--- /dev/null
+++ b/testing/twisted/APKBUILD
@@ -0,0 +1,18 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=twisted
+pkgver=8.2.0
+pkgrel=1
+pkgdesc="Asynchronous networking framework written in Python."
+url="http://twistedmatrix.com/"
+license="MIT"
+depends="python pycrypto zope-interface"
+makedepends="python-dev"
+source="http://tmrc.mit.edu/mirror/$pkgname/Twisted/8.2/Twisted-$pkgver.tar.bz2"
+
+build ()
+{
+ cd "$srcdir"/Twisted-$pkgver
+ python setup.py install --prefix=/usr --root="$pkgdir" || return 1
+ install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
+}
+md5sums="c85f151999df3ecf04c49a781b4438d2 Twisted-8.2.0.tar.bz2"
diff --git a/testing/ucspi-tcp/APKBUILD b/testing/ucspi-tcp/APKBUILD
new file mode 100644
index 00000000..9cdca875
--- /dev/null
+++ b/testing/ucspi-tcp/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Francesco Colista <francesco.colista@gmail.com>
+# Maintainer: Francesco Colista <francesco.colista@gmail.com>
+
+pkgname=ucspi-tcp
+pkgver=0.88
+pkgrel=0
+pkgdesc="Easy-to-use command-line tools for building TCP client-server applications."
+url="http://cr.yp.to/ucspi-tcp.html"
+license="public-domain"
+depends=""
+makedepends=""
+install=
+subpackages=""
+source="http://cr.yp.to/$pkgname/$pkgname-$pkgver.tar.gz
+ ucspi-tcp-0.88.a_record.patch
+ ucspi-tcp-0.88.errno.patch
+ "
+
+prepare() {
+ cd "$srcdir"/$pkgname-$pkgver
+ for i in ../*.patch;
+ do
+ msg "Applying $i"
+ patch -p1 -i $i || return 1
+ done
+}
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ echo "${CC:-"gcc"} ${CFLAGS}" > conf-cc
+ echo "${CC:-"gcc"} ${LDFLAGS}" > conf-ld
+ echo "/usr" > conf-home
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ mkdir -p "$pkgdir"/usr/bin
+ for f in tcpserver tcprules tcprulescheck argv0 recordio tcpclient \
+ *\@ tcpcat mconnect mconnect-io addcr delcr fixcrio \
+ rblsmtpd; do
+ cp $f "$pkgdir"/usr/bin/$f
+ done
+}
+
+md5sums="39b619147db54687c4a583a7a94c9163 ucspi-tcp-0.88.tar.gz
+554ec0eb60f619667efde3fb5325310d ucspi-tcp-0.88.a_record.patch
+759a11fafff188d9580be6498a028095 ucspi-tcp-0.88.errno.patch"
diff --git a/testing/ucspi-tcp/ucspi-tcp-0.88.a_record.patch b/testing/ucspi-tcp/ucspi-tcp-0.88.a_record.patch
new file mode 100644
index 00000000..903125ea
--- /dev/null
+++ b/testing/ucspi-tcp/ucspi-tcp-0.88.a_record.patch
@@ -0,0 +1,64 @@
+diff -ruN --exclude conf-* ucspi-tcp-0.88/rblsmtpd.c ucspi-tcp-0.88.fix/rblsmtpd.c
+--- ucspi-tcp-0.88/rblsmtpd.c Sat Mar 18 10:18:42 2000
++++ ucspi-tcp-0.88.fix/rblsmtpd.c Wed Aug 9 16:42:33 2000
+@@ -60,16 +60,54 @@
+
+ void rbl(char *base)
+ {
++ int i;
++ char *altreply = 0;
+ if (decision) return;
+ if (!stralloc_copy(&tmp,&ip_reverse)) nomem();
++ i = str_chr(base, ':');
++ if (base[i]) {
++ base[i] = 0;
++ altreply = base+i+1;
++ }
+ if (!stralloc_cats(&tmp,base)) nomem();
+- if (dns_txt(&text,&tmp) == -1) {
+- flagmustnotbounce = 1;
+- if (flagfailclosed) {
+- if (!stralloc_copys(&text,"temporary RBL lookup error")) nomem();
+- decision = 2;
++ if (altreply) {
++ if (dns_ip4(&text,&tmp) == -1) {
++ flagmustnotbounce = 1;
++ if (flagfailclosed) {
++ if (!stralloc_copys(&text,"temporary RBL lookup error")) nomem();
++ decision = 2;
++ }
++ return;
++ }
++ if (text.len) {
++ if(!stralloc_copys(&text, "")) nomem();
++ while(*altreply) {
++ char *x;
++ i = str_chr(altreply, '%');
++ if(!stralloc_catb(&text, altreply, i)) nomem();
++ if(altreply[i] &&
++ altreply[i+1]=='I' &&
++ altreply[i+2]=='P' &&
++ altreply[i+3]=='%') {
++ if(!stralloc_catb(&text, ip_env, str_len(ip_env))) nomem();
++ altreply+=i+4;
++ } else if(altreply[i]) {
++ if(!stralloc_cats(&text, "%")) nomem();
++ altreply+=i+1;
++ } else {
++ altreply+=i;
++ }
++ }
++ }
++ } else {
++ if (dns_txt(&text,&tmp) == -1) {
++ flagmustnotbounce = 1;
++ if (flagfailclosed) {
++ if (!stralloc_copys(&text,"temporary RBL lookup error")) nomem();
++ decision = 2;
++ }
++ return;
+ }
+- return;
+ }
+ if (text.len)
+ if (flagrblbounce)
diff --git a/testing/ucspi-tcp/ucspi-tcp-0.88.errno.patch b/testing/ucspi-tcp/ucspi-tcp-0.88.errno.patch
new file mode 100644
index 00000000..7654c783
--- /dev/null
+++ b/testing/ucspi-tcp/ucspi-tcp-0.88.errno.patch
@@ -0,0 +1,12 @@
+diff -u ucspi-tcp-0.88.old/error.h ucspi-tcp-0.88/error.h
+--- ucspi-tcp-0.88.old/error.h 2000-03-18 09:18:20.000000000 -0600
++++ ucspi-tcp-0.88/error.h 2003-01-08 13:39:12.000000000 -0600
+@@ -1,7 +1,7 @@
+ #ifndef ERROR_H
+ #define ERROR_H
+
+-extern int errno;
++#include <errno.h>
+
+ extern int error_intr;
+ extern int error_nomem;
diff --git a/testing/udev/APKBUILD b/testing/udev/APKBUILD
new file mode 100644
index 00000000..d25b5faa
--- /dev/null
+++ b/testing/udev/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=udev
+pkgver=142
+pkgrel=0
+pkgdesc="The userspace dev tools (udev)"
+url="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html"
+license="GPL"
+subpackages="$pkgname-dev $pkgname-doc"
+depends="uclibc"
+makedepends=""
+install=
+source="http://www.kernel.org/pub/linux/utils/kernel/hotplug/$pkgname-$pkgver.tar.bz2
+ write_root_link_rule
+ move_tmp_persistent_rules.sh
+ udev-mount.initd
+ udev-postmount.initd
+ udev.initd"
+
+build ()
+{
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --exec-prefix="" \
+ --with-libdir-name=/lib
+ make || return 1
+ make DESTDIR="$pkgdir" install
+ chmod +x "$pkgdir"/lib/udev/write_*_rules
+ for _i in write_root_link_rule move_tmp_persistent_rules.sh; do
+ install -Dm755 ../$_i "$pkgdir"/lib/udev/$_i
+ done
+ for _i in udev udev-mount udev-postmount; do
+ install -Dm755 ../$_i.initd "$pkgdir"/etc/init.d/$_i
+ done
+}
+md5sums="3edc4cf383dccb06d866c5156d59ddd5 udev-142.tar.bz2
+c9de7581099cdfdcd105666cd98a0f0a write_root_link_rule
+7bf11e11519117f743483c73e0767750 move_tmp_persistent_rules.sh
+12760065a66ccbddc9e3a86a6cd2231c udev-mount.initd
+bffb42859ca508cfe1d9fa0a169ba810 udev-postmount.initd
+e913f8f122e8879252d2a05de7dd7499 udev.initd"
diff --git a/testing/udev/move_tmp_persistent_rules.sh b/testing/udev/move_tmp_persistent_rules.sh
new file mode 100755
index 00000000..1a025979
--- /dev/null
+++ b/testing/udev/move_tmp_persistent_rules.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+. /etc/init.d/functions.sh
+
+# store persistent-rules that got created while booting
+# when / was still read-only
+store_persistent_rules() {
+ local file dest
+
+ for file in /dev/.udev/tmp-rules--*; do
+ dest=${file##*tmp-rules--}
+ [ "$dest" = '*' ] && break
+ type=${dest##70-persistent-}
+ type=${type%%.rules}
+ ebegin "Saving udev persistent ${type} rules to /etc/udev/rules.d"
+ cat "$file" >> /etc/udev/rules.d/"$dest" && rm -f "$file"
+ eend $? "Failed moving persistent rules!"
+ done
+}
+
+store_persistent_rules
+
+# vim:ts=4
diff --git a/testing/udev/udev-mount.initd b/testing/udev/udev-mount.initd
new file mode 100755
index 00000000..839565a5
--- /dev/null
+++ b/testing/udev/udev-mount.initd
@@ -0,0 +1,83 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="Mount tmpfs on /dev"
+[ -e /etc/conf.d/udev ] && . /etc/conf.d/udev
+
+mount_dev_directory()
+{
+ # No options are processed here as they should all be in /etc/fstab
+ ebegin "Mounting /dev"
+ if fstabinfo --quiet /dev; then
+ mount -n /dev
+ else
+ # Some devices require exec, Bug #92921
+ mount -n -t tmpfs -o "exec,nosuid,mode=0755,size=10M" udev /dev
+ fi
+ eend $?
+}
+
+seed_dev()
+{
+ # Seed /dev with some things that we know we need
+
+ # creating /dev/console, /dev/tty and /dev/tty1 to be able to write
+ # to $CONSOLE with/without bootsplash before udevd creates it
+ [ -c /dev/console ] || mknod -m 600 /dev/console c 5 1
+ [ -c /dev/tty1 ] || mknod -m 620 /dev/tty1 c 4 1
+ [ -c /dev/tty ] || mknod -m 666 /dev/tty c 5 0
+
+ # udevd will dup its stdin/stdout/stderr to /dev/null
+ # and we do not want a file which gets buffered in ram
+ [ -c /dev/null ] || mknod -m 666 /dev/null c 1 3
+
+ # so udev can add its start-message to dmesg
+ [ -c /dev/kmsg ] || mknod -m 660 /dev/kmsg c 1 11
+
+ # copy over any persistant things
+ if [ -d /lib/udev/devices ]; then
+ cp -RPp /lib/udev/devices/* /dev 2>/dev/null
+ fi
+
+ # Not provided by sysfs but needed
+ ln -snf /proc/self/fd /dev/fd
+ ln -snf fd/0 /dev/stdin
+ ln -snf fd/1 /dev/stdout
+ ln -snf fd/2 /dev/stderr
+ [ -e /proc/kcore ] && ln -snf /proc/kcore /dev/core
+
+ # Create problematic directories
+ mkdir -p /dev/pts /dev/shm
+ return 0
+}
+
+
+start()
+{
+ # do not run this on too old baselayout - udev-addon is already loaded!
+ if [ ! -f /etc/init.d/sysfs ]; then
+ eerror "The $SVCNAME init-script is written for baselayout-2!"
+ eerror "Please do not use it with baselayout-1!".
+ return 1
+ fi
+
+ _start
+}
+
+_start()
+{
+ mount_dev_directory || return 1
+
+ # Selinux lovin; /selinux should be mounted by selinux-patched init
+ if [ -x /sbin/restorecon -a -c /selinux/null ]; then
+ restorecon /dev > /selinux/null
+ fi
+
+ # make sure it exists
+ mkdir -p /dev/.udev
+
+ seed_dev
+
+ return 0
+}
diff --git a/testing/udev/udev-postmount.initd b/testing/udev/udev-postmount.initd
new file mode 100755
index 00000000..96beb845
--- /dev/null
+++ b/testing/udev/udev-postmount.initd
@@ -0,0 +1,31 @@
+#!/sbin/runscript
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-fs/udev/files/136/udev-postmount.initd,v 1.3 2009/02/23 16:30:53 zzam Exp $
+
+depend() {
+ need localmount
+}
+
+dir_writeable()
+{
+ mkdir "$1"/.test.$$ 2>/dev/null && rmdir "$1"/.test.$$
+}
+
+start() {
+ # check if this system uses udev
+ [ -d /dev/.udev/ ] || return 0
+
+ # only continue if rules-directory is writable
+ dir_writeable /etc/udev/rules.d || return 0
+
+ # store persistent-rules that got created while booting
+ # when / was still read-only
+ /lib/udev/move_tmp_persistent_rules.sh
+}
+
+stop() {
+ :
+}
+
+# vim:ts=4
diff --git a/testing/udev/udev-start.sh b/testing/udev/udev-start.sh
new file mode 100644
index 00000000..87c3a6ac
--- /dev/null
+++ b/testing/udev/udev-start.sh
@@ -0,0 +1,51 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+[ -e /etc/conf.d/udev ] && . /etc/conf.d/udev
+
+compat_volume_nodes()
+{
+ # Only do this for baselayout-1*
+ # This check is likely to get false positives due to some multilib stuff,
+ # but that should not matter, as this can only happen on old openrc versions
+ # no longer available as ebuilds.
+ if [ ! -e /lib/librc.so ]; then
+
+ # Create nodes that udev can't
+ [ -x /sbin/lvm ] && \
+ /sbin/lvm vgscan -P --mknodes --ignorelockingfailure &>/dev/null
+ # Running evms_activate on a LiveCD causes lots of headaches
+ [ -z "${CDBOOT}" -a -x /sbin/evms_activate ] && \
+ /sbin/evms_activate -q &>/dev/null
+ fi
+}
+
+start_initd()
+{
+ (
+ . /etc/init.d/"$1"
+ _start
+ )
+}
+
+# mount tmpfs on /dev
+start_initd udev-mount || exit 1
+
+# Create a file so that our rc system knows it's still in sysinit.
+# Existance means init scripts will not directly run.
+# rc will remove the file when done with sysinit.
+# this is no longer needed as of openrc-0.4.0
+touch /dev/.rcsysinit
+
+# load device tarball
+start_initd udev-dev-tarball
+
+# run udevd
+start_initd udev || exit 1
+
+compat_volume_nodes
+
+# inject into boot runlevel
+IN_HOTPLUG=1 /etc/init.d/udev-postmount start >/dev/null 2>&1
+
+# udev started successfully
diff --git a/testing/udev/udev.initd b/testing/udev/udev.initd
new file mode 100755
index 00000000..26774ab4
--- /dev/null
+++ b/testing/udev/udev.initd
@@ -0,0 +1,239 @@
+#!/sbin/runscript
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="Run udevd and create the device-nodes"
+
+[ -e /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+
+rc_coldplug=${rc_coldplug:-${RC_COLDPLUG:-YES}}
+
+depend()
+{
+ provide dev
+ if yesno "${rc_device_tarball:-no}"; then
+ need sysfs udev-mount udev-dev-tarball
+ else
+ need sysfs udev-mount
+ fi
+ before checkfs fsck
+
+ # udev does not work inside vservers
+ keyword novserver
+}
+
+cleanup()
+{
+ # fail more gracely and not leave udevd running
+ start-stop-daemon --stop --exec /sbin/udevd
+ exit 1
+}
+
+disable_hotplug_agent()
+{
+ if [ -e /proc/sys/kernel/hotplug ]; then
+ echo "" >/proc/sys/kernel/hotplug
+ fi
+}
+
+root_link()
+{
+ /lib/udev/write_root_link_rule
+}
+
+rules_disable_switch()
+{
+ # this function disables rules files
+ # by creating new files with the same name
+ # in a temp rules directory with higher priority
+ local d=/dev/.udev/rules.d bname="$1" onoff="$2"
+
+ if yesno "${onoff}"; then
+ mkdir -p "$d"
+ echo "# This file disables ${bname} due to /etc/conf.d/udev" \
+ > "${d}/${bname}"
+ else
+ rm -f "${d}/${bname}"
+ fi
+}
+
+start_udevd()
+{
+ # load unix domain sockets if built as module, Bug #221253
+ if [ -e /proc/modules ] ; then
+ modprobe -q unix 2>/dev/null
+ fi
+ ebegin "Starting udevd"
+ start-stop-daemon --start --exec /sbin/udevd -- --daemon
+ eend $?
+}
+
+# populate /dev with devices already found by the kernel
+populate_dev()
+{
+ if get_bootparam "nocoldplug" ; then
+ rc_coldplug="NO"
+ ewarn "Skipping udev coldplug as requested in kernel cmdline"
+ fi
+
+ ebegin "Populating /dev with existing devices through uevents"
+ if yesno "${rc_coldplug}"; then
+ udevadm trigger
+ else
+ # Do not run any init-scripts, Bug #206518
+ udevadm control --env do_not_run_plug_service=1
+
+ # only create device nodes
+ udevadm trigger --attr-match=dev
+
+ # run persistent-net stuff, bug 191466
+ udevadm trigger --subsystem-match=net
+ fi
+ eend $?
+
+ ebegin "Waiting for uevents to be processed"
+ udevadm settle --timeout=${udev_settle_timeout:-60}
+ eend $?
+
+ udevadm control --env do_not_run_plug_service=
+ return 0
+}
+
+# for debugging
+start_udevmonitor()
+{
+ yesno "${udev_monitor:-no}" || return 0
+
+ udevmonitor_log=/dev/.udev/udevmonitor.log
+ udevmonitor_pid=/dev/.udev/udevmonitor.pid
+
+ einfo "udev: Running udevadm monitor ${udev_monitor_opts} to get a log of all events"
+ start-stop-daemon --start --stdout "${udevmonitor_log}" \
+ --make-pidfile --pidfile "${udevmonitor_pid}" \
+ --background --exec /sbin/udevadm -- monitor ${udev_monitor_opts}
+}
+
+stop_udevmonitor()
+{
+ yesno "${udev_monitor:-no}" || return 0
+
+ if yesno "${udev_monitor_keep_running:-no}"; then
+ ewarn "udev: udevmonitor is still running and writing into ${udevmonitor_log}"
+ else
+ einfo "udev: Stopping udevmonitor: Log is in ${udevmonitor_log}"
+ start-stop-daemon --stop --pidfile "${udevmonitor_pid}" --exec /sbin/udevadm
+ fi
+}
+
+display_hotplugged_services() {
+ local svcfile= svc= services=
+ for svcfile in "${RC_SVCDIR}"/hotplugged/*; do
+ svc="${svcfile##*/}"
+ [ -x "${svcfile}" ] || continue
+
+ # do not display this - better: do only inject it later :)
+ [ "$svc" = "udev-postmount" ] && continue
+
+ services="${services} ${svc}"
+ done
+ [ -n "${services}" ] && einfo "Device initiated services:${HILITE}${services}${NORMAL}"
+}
+
+inject_postmount_initd() {
+ if ! mark_service_hotplugged udev-postmount; then
+ IN_HOTPLUG=1 /etc/init.d/udev-postmount start >/dev/null 2>&1
+ fi
+ #einfo "Injected udev-postmount service"
+}
+
+check_persistent_net()
+{
+ # check if there are problems with persistent-net
+ local syspath= devs= problem=false
+ for syspath in /sys/class/net/*_rename*; do
+ if [ -d "${syspath}" ]; then
+ devs="${devs} ${syspath##*/}"
+ problem=true
+ fi
+ done
+
+ ${problem} || return 0
+
+ eerror "UDEV: Your system has a problem assigning persistent names"
+ eerror "to these network interfaces: ${devs}"
+
+ einfo "Checking persistent-net rules:"
+ # the sed-expression lists all duplicate lines
+ # from the input, like "uniq -d" does, but uniq
+ # is installed into /usr/bin and not available at boot.
+ dups=$(
+ RULES_FILE='/etc/udev/rules.d/70-persistent-net.rules'
+ . /lib/udev/rule_generator.functions
+ find_all_rules 'NAME=' '.*' | \
+ tr ' ' '\n' | \
+ sort | \
+ sed '$!N; s/^\(.*\)\n\1$/\1/; t; D'
+ )
+ if [ -n "${dups}" ]; then
+ ewarn "The rules create multiple entries assigning these names:"
+ eindent
+ ewarn "${dups}"
+ eoutdent
+ else
+ ewarn "Found no duplicate names in persistent-net rules,"
+ ewarn "there must be some other problem!"
+ fi
+ return 1
+}
+
+check_udev_works()
+{
+ # should exist on every system, else udev failed
+ if [ ! -e /dev/zero ]; then
+ eerror "Assuming udev failed somewhere, as /dev/zero does not exist."
+ return 1
+ fi
+ return 0
+}
+
+start()
+{
+ # do not run this on old baselayout where udev-addon gets loaded
+ if [ ! -f /etc/init.d/sysfs ]; then
+ eerror "The $SVCNAME init-script is written for baselayout-2!"
+ eerror "Please do not use it with baselayout-1!".
+ return 1
+ fi
+
+ _start
+
+ display_hotplugged_services
+
+ inject_postmount_initd
+}
+
+_start()
+{
+ root_link
+ rules_disable_switch 75-persistent-net-generator.rules "${persistent_net_disable:-no}"
+ rules_disable_switch 75-cd-aliases-generator.rules ${persistent_cd_disable:-no}
+
+ disable_hotplug_agent
+ start_udevd || cleanup
+ start_udevmonitor
+ populate_dev || cleanup
+
+ check_persistent_net
+
+ check_udev_works || cleanup
+ stop_udevmonitor
+
+ return 0
+}
+
+stop() {
+ ebegin "Stopping udevd"
+ start-stop-daemon --stop --exec /sbin/udevd
+ eend $?
+}
+
diff --git a/testing/udev/write_root_link_rule b/testing/udev/write_root_link_rule
new file mode 100755
index 00000000..8eaea117
--- /dev/null
+++ b/testing/udev/write_root_link_rule
@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+# This script should run before doing udevtrigger at boot.
+# It will create a rule matching the device directory / is on, and
+# creating /dev/root symlink pointing on its device node.
+#
+# This is especially useful for hal looking at /proc/mounts containing
+# a line listing /dev/root as device:
+# /dev/root / reiserfs rw 0 0
+#
+# 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 version 2 of the License.
+#
+# (c) 2007-2008 Matthias Schwarzott <zzam@gentoo.org>
+
+eval $(udevadm info --export --export-prefix="ROOT_" --device-id-of-file=/)
+
+[ $? = 0 ] || exit 0
+[ "$ROOT_MAJOR" = 0 ] && exit 0
+
+DIR=/dev/.udev/rules.d
+[ -d "$DIR" ] || mkdir -p "$DIR"
+RULES=$DIR/10-root-link.rules
+
+echo "# Created by /lib/udev/write_root_link_rule" > "${RULES}"
+echo "# This rule should create /dev/root as link to real root device." >> "${RULES}"
+echo "SUBSYSTEM==\"block\", ENV{MAJOR}==\"$ROOT_MAJOR\", ENV{MINOR}==\"$ROOT_MINOR\", SYMLINK+=\"root\"" >> "${RULES}"
+
diff --git a/testing/ulogd/APKBUILD b/testing/ulogd/APKBUILD
new file mode 100644
index 00000000..6dad6b8d
--- /dev/null
+++ b/testing/ulogd/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+pkgname=ulogd
+pkgver=2.0.0_beta3
+_pkgver=2.0.0beta3
+pkgrel=1
+pkgdesc="A userspace logging daemon for netfilter/iptables related logging"
+url="http://netfilter.org/projects/ulogd/index.html"
+license="GPL"
+depends=
+makedepends="sqlite-dev mysql-dev postgresql-dev libpcap-dev libnfnetlink-dev
+libnetfilter_conntrack-dev libnetfilter_log-dev pkgconfig openssl-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-sqlite $pkgname-pgsql $pkgname-mysql"
+source="http://netfilter.org/projects/ulogd/files/ulogd-2.0.0beta3.tar.bz2
+ ulogd.initd"
+
+build() {
+ cd "$srcdir/$pkgname-$_pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+ make DESTDIR="$pkgdir" install
+ install -Dm644 ulogd.conf "$pkgdir"/etc/ulogd.conf
+ install -m755 -D "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
+}
+
+sqlite() {
+ depends="$pkgname sqlite"
+ mkdir -p "$subpkgdir"/usr/lib/ulogd/
+ mv "$pkgdir"/usr/lib/ulogd/ulogd_output_SQLITE3.so "$subpkgdir"/usr/lib/ulogd/
+}
+
+pgsql() {
+ depends="$pkgname libpq"
+ mkdir -p "$subpkgdir"/usr/lib/ulogd/
+ mv "$pkgdir"/usr/lib/ulogd/ulogd_output_PGSQL.so "$subpkgdir"/usr/lib/ulogd/
+}
+
+mysql() {
+ depends="$pkgname libmysqlclient openssl"
+ mkdir -p "$subpkgdir"/usr/lib/ulogd/
+ mv "$pkgdir"/usr/lib/ulogd/ulogd_output_MYSQL.so "$subpkgdir"/usr/lib/ulogd/
+}
+
+
+md5sums="be8137d3b7ae70ebbce7ca8852b9e901 ulogd-2.0.0beta3.tar.bz2
+5eedaae6102a4e90b3b89f051f54fbf1 ulogd.initd"
diff --git a/testing/ulogd/ulogd.initd b/testing/ulogd/ulogd.initd
new file mode 100644
index 00000000..4413327b
--- /dev/null
+++ b/testing/ulogd/ulogd.initd
@@ -0,0 +1,38 @@
+#!/sbin/runscript
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/www/viewcvs.gentoo.org/raw_cvs/gentoo-x86/app-admin/ulogd/files/ulogd,v 1.2 2004/07/13 16:32:25 aliz Exp $
+
+opts="reload"
+
+depend() {
+ need net
+ after firewall
+}
+
+checkconfig() {
+ if [ ! -e /etc/ulogd.conf ]; then
+ eerror "You need /etc/ulogd.conf"
+ return 1
+ fi
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Starting ulogd"
+ start-stop-daemon --start --quiet --exec /usr/sbin/ulogd >/dev/null 2>&1
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping ulogd"
+ start-stop-daemon --stop --quiet --exec /usr/sbin/ulogd >/dev/null 2>&1
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading ulogd.conf file"
+ killall -HUP ulogd &>/dev/null
+ eend $?
+}
+
diff --git a/testing/umix/APKBUILD b/testing/umix/APKBUILD
new file mode 100644
index 00000000..7eb262f7
--- /dev/null
+++ b/testing/umix/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Maintainer: Michael Mason <ms13sp@gmail.com>
+pkgname=umix
+pkgver=1.0.2
+pkgrel=0
+pkgdesc="Program for adjusting soundcard volumes"
+url="http://umix.sf.net"
+license="GPL"
+depends=
+makedepends="ncurses-dev"
+install=
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir/$pkgname-$pkgver"
+
+ ./configure --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make || return 1
+}
+
+package() {
+ cd "$srcdir/$pkgname-$pkgver"
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="e38fc288273cc8b5b34f8769f06b32ee umix-1.0.2.tar.gz"
diff --git a/testing/vlc/APKBUILD b/testing/vlc/APKBUILD
new file mode 100644
index 00000000..d28ddf07
--- /dev/null
+++ b/testing/vlc/APKBUILD
@@ -0,0 +1,90 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=vlc
+pkgver=1.0.0
+pkgrel=0
+pkgdesc="A multi-platform MPEG, VCD/DVD, and DivX player"
+url="http://www.videolan.org/vlc/"
+license="GPL-2"
+subpackages="$pkgname-dev $pkgname-doc"
+#depends="libnotify a52dec fluidsynth zvbi libdvbpsi lirc-utils libdca hal
+# libproxy sdl_image libdvdnav>=4.1.3 lua libxv libv4l libcddb smbclient
+# libmatroska taglib sysfsutils libmpcdec ffmpeg>=0.5 libshout libmad
+# qt fribidi libmpeg2 libmodplug avahi ttf-dejavu"
+depends="ttf-dejavu"
+makedepends="
+ a52dec-dev
+ alsa-lib-dev
+ dbus-dev
+ ffmpeg-dev
+ fribidi-dev
+ gtk+-dev
+ libgcrypt-dev
+ libice-dev
+ libiconv-dev
+ libmad-dev
+ libmpeg2-dev
+ libnotify-dev
+ libogg-dev
+ libsm-dev
+ libx11-dev
+ libxext-dev
+ libxv-dev
+ lua-dev
+ mesa-dev
+ pkgconfig
+ sdl-dev
+ sysfsutils-dev
+ x264-dev
+ "
+source="http://download.videolan.org/pub/videolan/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2
+ uclibc.patch
+ "
+
+build ()
+{
+ cd "$srcdir"/$pkgname-$pkgver
+ sed -i -e 's:/usr/share/fonts/truetype/freefont/FreeSerifBold.ttf:/usr/share/fonts/TTF/DejaVuSerif-Bold.ttf:' modules/misc/freetype.c
+
+ patch -p1 < ../uclibc.patch || return 1
+ export CFLAGS="$CFLAGS -D_GNU_SOURCE"
+
+ ./configure --prefix=/usr \
+ --disable-mmx \
+ --disable-nls \
+ --disable-optimizations \
+ --disable-qt4 --disable-skins2 \
+ --disable-rpath \
+ --enable-httpd \
+ --enable-realrtsp \
+ --enable-sout \
+ --enable-vlm \
+ || return 1
+
+# --enable-dvdread \
+# --enable-dvdnav \
+# --enable-qt4 \
+# --enable-faad \
+# --enable-skins2 \
+# --enable-dvb \
+# --enable-v4l \
+# --enable-theora \
+# --enable-flac \
+# --enable-snapshot \
+# --enable-hal \
+# --enable-dbus \
+# --enable-dbus-control \
+# --enable-lirc \
+# --enable-shout \
+# --enable-pvr \
+
+ make || return 1
+ make DESTDIR="$pkgdir"/ install || return 1
+ for res in 16 32 48 128; do
+ install -D -m644 share/vlc${res}x${res}.png \
+ "$pkgdir"/usr/share/icons/hicolor/${res}x${res}/apps/vlc.png || return 1
+ done
+ rm -rf "$pkgdir"/usr/lib/mozilla
+}
+
+md5sums="fc78904ab5fa73f518d8fe4e852e7f67 vlc-1.0.0.tar.bz2
+2a16bf6c14a94f41490872aa189db755 uclibc.patch"
diff --git a/testing/vlc/uclibc.patch b/testing/vlc/uclibc.patch
new file mode 100644
index 00000000..f71b189a
--- /dev/null
+++ b/testing/vlc/uclibc.patch
@@ -0,0 +1,65 @@
+--- a/src/misc/linux_specific.c 2009-07-08 09:29:41.000000000 +0000
++++ b/src/misc/linux_specific.c 2009-07-08 09:30:47.000000000 +0000
+@@ -72,14 +72,14 @@
+ }
+ #endif
+
+-#ifdef __GLIBC__
++#if defined(__GLIBC__) && !defined(__UCLIBC__)
+ # include <gnu/libc-version.h>
+ # include <stdlib.h>
+ #endif
+
+ void system_Init (libvlc_int_t *libvlc, int *argc, const char *argv[])
+ {
+-#ifdef __GLIBC__
++#if defined(__GLIBC__) && !defined(__UCLIBC__)
+ const char *glcv = gnu_get_libc_version ();
+
+ /* gettext in glibc 2.5-2.7 is not thread-safe. LibVLC keeps crashing,
+--- a/src/control/vlm.c 2009-07-09 09:21:55.000000000 +0000
++++ b/src/control/vlm.c 2009-07-09 09:22:24.000000000 +0000
+@@ -21,6 +21,10 @@
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
++#ifdef HAVE_CONFIG_H
++# include "config.h"
++#endif
++
+ #include <vlc/libvlc.h>
+ #include <vlc/libvlc_vlm.h>
+ #include <vlc_es.h>
+--- a/src/misc/mtime.c 2009-07-09 11:57:46.000000000 +0000
++++ b/src/misc/mtime.c 2009-07-09 13:48:16.000000000 +0000
+@@ -78,7 +78,7 @@
+ # define _POSIX_CLOCK_SELECTION (-1)
+ #endif
+
+-# if (_POSIX_CLOCK_SELECTION < 0)
++# if (_POSIX_CLOCK_SELECTION < 0) || defined(__UCLIBC__)
+ /*
+ * We cannot use the monotonic clock is clock selection is not available,
+ * as it would screw vlc_cond_timedwait() completely. Instead, we have to
+--- a/src/misc/threads.c 2009-07-09 13:54:08.000000000 +0000
++++ b/src/misc/threads.c 2009-07-09 13:54:32.000000000 +0000
+@@ -474,7 +474,7 @@
+ /* Fairly outdated POSIX support (that was defined in 2001) */
+ # define _POSIX_CLOCK_SELECTION (-1)
+ # endif
+-# if (_POSIX_CLOCK_SELECTION >= 0)
++# if (_POSIX_CLOCK_SELECTION >= 0) && !defined(__UCLIBC__)
+ /* NOTE: This must be the same clock as the one in mtime.c */
+ pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
+ # endif
+--- a/modules/stream_filter/decomp.c 2009-07-09 14:10:09.000000000 +0000
++++ b/modules/stream_filter/decomp.c 2009-07-09 14:11:37.000000000 +0000
+@@ -28,7 +28,7 @@
+ #include <vlc_network.h>
+ #include <assert.h>
+ #include <unistd.h>
+-#ifndef _POSIX_SPAWN
++#if !defined(_POSIX_SPAWN) || defined(__UCLIBC__)
+ # define _POSIX_SPAWN (-1)
+ #endif
+ #include <fcntl.h>
diff --git a/testing/wine/0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch b/testing/wine/0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch
new file mode 100644
index 00000000..05ac3141
--- /dev/null
+++ b/testing/wine/0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch
@@ -0,0 +1,39 @@
+From 0454ace14774654c3670a2a29613bed5039991c5 Mon Sep 17 00:00:00 2001
+From: Roderick Colenbrander <thunderbird2k@gmail.com>
+Date: Thu, 3 Sep 2009 13:51:44 +0200
+Subject: [PATCH] Always adjust the color_shifts pointer when SelectBitmap is called. This fixes a regression in Steam (bug 19916).
+
+---
+ dlls/winex11.drv/bitmap.c | 10 ++++++----
+ 1 files changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/dlls/winex11.drv/bitmap.c b/dlls/winex11.drv/bitmap.c
+index 4d635aa..fee2dbc 100644
+--- a/dlls/winex11.drv/bitmap.c
++++ b/dlls/winex11.drv/bitmap.c
+@@ -110,10 +110,6 @@ HBITMAP CDECL X11DRV_SelectBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap )
+ if (physDev->depth != physBitmap->pixmap_depth)
+ {
+ physDev->depth = physBitmap->pixmap_depth;
+- if(physDev->depth == 1)
+- physDev->color_shifts = NULL;
+- else
+- physDev->color_shifts = &physBitmap->pixmap_color_shifts;
+ wine_tsx11_lock();
+ XFreeGC( gdi_display, physDev->gc );
+ physDev->gc = XCreateGC( gdi_display, physDev->drawable, 0, NULL );
+@@ -122,6 +118,12 @@ HBITMAP CDECL X11DRV_SelectBitmap( X11DRV_PDEVICE *physDev, HBITMAP hbitmap )
+ XFlush( gdi_display );
+ wine_tsx11_unlock();
+ }
++
++ if(physDev->depth == 1)
++ physDev->color_shifts = NULL;
++ else
++ physDev->color_shifts = &physBitmap->pixmap_color_shifts;
++
+ return hbitmap;
+ }
+
+--
+1.6.0.4
diff --git a/testing/wine/APKBUILD b/testing/wine/APKBUILD
new file mode 100644
index 00000000..82ecba1b
--- /dev/null
+++ b/testing/wine/APKBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=wine
+pkgver=1.1.36
+pkgrel=0
+pkgdesc="A compatibility layer for running Windows programs"
+url="http://www.winehq.com"
+license="LGPL"
+subpackages="$pkgname-dev $pkgname-doc"
+makedepends="fontconfig-dev openldap-dev libxslt-dev libxxf86dga-dev
+ libxcursor-dev libxrandr-dev libxdamage-dev mesa-dev flex bison"
+# lcms
+source="http://ibiblio.org/pub/linux/system/emulators/$pkgname/$pkgname-$pkgver.tar.bz2
+ 0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ patch -Np1 -i "$srcdir"/0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch
+ ./configure --prefix=/usr --sysconfdir=/etc --with-x
+ make depend || return 1
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make prefix="$pkgdir"/usr install || return 1
+ mkdir -p "$pkgdir"/etc/wine
+}
+md5sums="2afa7846175c7c2ce4c7482aa1d82f0f wine-1.1.36.tar.bz2
+63c4a6aee199039d35e6b57fa505e887 0001-Always-adjust-the-color_shifts-pointer-when-SelectBi.patch"
diff --git a/testing/wzdftpd/APKBUILD b/testing/wzdftpd/APKBUILD
new file mode 100644
index 00000000..b9b46265
--- /dev/null
+++ b/testing/wzdftpd/APKBUILD
@@ -0,0 +1,46 @@
+# This is an example APKBUILD file. Use this as a start to creating your own,
+# and remove these comments.
+# NOTE: Please fill out the license field for your package! If it is unknown,
+# then please put 'unknown'.
+
+# Contributor: Your Name <youremail@domain.com>
+pkgname=wzdftpd-svn
+pkgver=2040
+pkgrel=2
+pkgdesc="A portable, modular, small, and efficient FTP server"
+url="http://www.wzdftpd.net"
+license='GPL'
+depends=
+makedepends="cmake mysql-dev sqlite-dev tcl-dev openssl-dev flex"
+source="http://alpine.nethq.org/clandmeter/src/wzdftpd-svn2040.tar.gz
+wzdftpd-svn.initd"
+subpackages="$pkgname-doc"
+
+build() {
+ mkdir "$srcdir/${pkgname}"
+ mv "$srcdir/wzdftpd-src" "$srcdir/${pkgname}/"
+ cd "$srcdir/${pkgname}/"
+ cmake \
+ -D CMAKE_INSTALL_PREFIX:PATH=/usr \
+ -D WITH_DUPECHECK:BOOL=ON \
+ -D WITH_SFV:BOOL=ON \
+ -D BUILD_TESTING:BOOL=OFF \
+ -D WITH_Zeroconf:BOOL=ON \
+ -D TCL_LIBRARY:FILEPATH=/usr/lib/libtcl8.5.so \
+ -D WITH_PAM:BOOL=OFF \
+ -D WITH_PerlDev:BOOL=OFF \
+ -D CONF_INSTALL_PATH:PATH=/etc/wzdftpd \
+ ./wzdftpd-src || return 1
+ make || return 1
+ make DESTDIR="$pkgdir/" install
+ mv $pkgdir/usr/var $pkgdir/
+ sed -i -e 's|usr/var|var|' \
+ -e 's|usr/etc|etc|' \
+ -e 's|usr//etc|etc|' \
+ -e 's|#pid_file|pid_file|' \
+ $pkgdir/etc/wzdftpd/wzd.cfg.sample
+ install -Dm 755 "$startdir"/$pkgname.initd $pkgdir/etc/init.d/wzdftpd
+}
+
+md5sums="4bdb2fcaa4ca316261e9f77380818769 wzdftpd-svn2040.tar.gz
+ae2b7497cc7729bfaf346ba0d3b607d2 wzdftpd-svn.initd"
diff --git a/testing/wzdftpd/wzdftpd-svn.initd b/testing/wzdftpd/wzdftpd-svn.initd
new file mode 100644
index 00000000..25f4da6f
--- /dev/null
+++ b/testing/wzdftpd/wzdftpd-svn.initd
@@ -0,0 +1,32 @@
+#!/sbin/runscript
+
+depend() {
+ need net
+ after firewall
+ use dns
+}
+
+checkconfig() {
+ if [ ! -f /etc/wzdftpd/wzd.cfg ] ; then
+ eerror "No /etc/wzdftpd/wzd.cnf file exists!"
+ return 1
+ fi
+ if [ ! -d /var/run/wzdftpd ] ; then
+ install -dD -o ftp -g ftp /var/run/wzdftpd
+ fi
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Starting wzdftpd"
+ /usr/sbin/wzdftpd >/dev/null 2>&1 &
+ eend $?
+}
+
+stop () {
+ ebegin "Stopping wzdftpd"
+ start-stop-daemon --stop --quiet \
+ --pidfile=/var/run/wzdftpd/wzdftpd.pid --retry 20
+ eend $?
+}
+
diff --git a/testing/xf86-video-openchrome-svn/APKBUILD b/testing/xf86-video-openchrome-svn/APKBUILD
new file mode 100644
index 00000000..692af749
--- /dev/null
+++ b/testing/xf86-video-openchrome-svn/APKBUILD
@@ -0,0 +1,33 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=xf86-video-openchrome-svn
+pkgver=811
+pkgrel=0
+pkgdesc="X.Org driver for VIA/S3G cards"
+url="http://xorg.freedesktop.org/"
+license="custom"
+subpackages="$pkgname-dev $pkgname-doc"
+depends=
+makedepends="pkgconfig xorg-server-dev libxi-dev libxvmc-dev fontsproto glproto
+ randrproto videoproto renderproto xf86driproto mesa-dev subversion
+ automake autoconf libtool"
+
+source=
+
+build ()
+{
+ cd "$srcdir"
+ if [ -d openchrome ]; then
+ cd openchrome
+ svn up
+ else
+ svn co -r $pkgver http://svn.openchrome.org/svn/trunk openchrome
+ cd openchrome
+ fi
+ export GCC_SPECS=/usr/share/gcc/hardenednoznow.specs
+
+ ./autogen.sh
+ ./configure --prefix=/usr || return 1
+ make || return 1
+ make DESTDIR="$pkgdir" install || return 1
+ install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+}
diff --git a/testing/zope-interface/APKBUILD b/testing/zope-interface/APKBUILD
new file mode 100644
index 00000000..8db2a557
--- /dev/null
+++ b/testing/zope-interface/APKBUILD
@@ -0,0 +1,18 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+pkgname=zope-interface
+pkgver=3.5.1
+pkgrel=0
+pkgdesc="Separate distribution of the zope.interface package used in Zope 3."
+url="http://www.zope.org/Products/ZopeInterface/"
+license="ZPL"
+depends="python"
+makedepends="python-dev"
+source="http://pypi.python.org/packages/source/z/zope.interface/zope.interface-$pkgver.tar.gz"
+
+build ()
+{
+ cd "$srcdir"/zope.interface-$pkgver
+ python setup.py install --prefix=/usr --root="$pkgdir"
+ rm "$pkgdir"/usr/lib/python2.6/site-packages/zope/interface/README*.txt
+}
+md5sums="685fc532550abb07cca6190c9cd2b901 zope.interface-3.5.1.tar.gz"