aboutsummaryrefslogtreecommitdiffstats
path: root/testing
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-07-16 08:06:29 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2012-07-16 08:06:29 +0000
commite3adef570713c21c7902f5df0369978e18c445e6 (patch)
treeaacb874946be80ecd3839b2e87ddd6b7ae22dec9 /testing
parent5701f80cfd383c97473a40e81e7b7bb2caeb263f (diff)
parentf1e02f6428610a74f1919f258779729cd90225ee (diff)
downloadaports-e3adef570713c21c7902f5df0369978e18c445e6.tar.bz2
aports-e3adef570713c21c7902f5df0369978e18c445e6.tar.xz
Merge https://github.com/Barthalion/aports
New aports, calcurse, monkey, nethogs, ranger, cmus, abook and mlocate
Diffstat (limited to 'testing')
-rw-r--r--testing/abook/APKBUILD33
-rw-r--r--testing/abook/vcard-compat.patch346
-rw-r--r--testing/calcurse/APKBUILD29
-rw-r--r--testing/cmus/APKBUILD26
-rw-r--r--testing/mlocate/APKBUILD48
-rw-r--r--testing/mlocate/mlocate.pre-install3
-rw-r--r--testing/mlocate/updatedb.conf4
-rw-r--r--testing/mlocate/updatedb.cron.daily29
-rw-r--r--testing/monkey/APKBUILD61
-rw-r--r--testing/monkey/monkey.confd5
-rw-r--r--testing/monkey/monkey.initd25
-rw-r--r--testing/monkey/strsignal.patch12
-rw-r--r--testing/nethogs/APKBUILD24
-rw-r--r--testing/ranger/APKBUILD23
14 files changed, 668 insertions, 0 deletions
diff --git a/testing/abook/APKBUILD b/testing/abook/APKBUILD
new file mode 100644
index 0000000000..54f0256c17
--- /dev/null
+++ b/testing/abook/APKBUILD
@@ -0,0 +1,33 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=abook
+pkgver=0.6.0_pre2
+_ver=0.6.0pre2
+pkgrel=0
+pkgdesc='Text-based addressbook designed for use with Mutt'
+url='http://abook.sourceforge.net/'
+license='GPL2'
+arch='all'
+makedepends='libiconv-dev ncurses-dev readline-dev'
+subpackages="$pkgname-doc"
+source="http://$pkgname.sourceforge.net/devel/$pkgname-${_ver}.tar.gz
+ vcard-compat.patch"
+
+prepare() {
+ cd "$srcdir/$pkgname-$_ver"
+ patch -Np1 -i "$srcdir"/vcard-compat.patch
+}
+
+build() {
+ cd "$srcdir/$pkgname-$_ver"
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd "$srcdir/$pkgname-$_ver"
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="1e4a7210b3507db7b3d47ee7a2457934 abook-0.6.0pre2.tar.gz
+c7c4972eab913483198d86697ecbbaa1 vcard-compat.patch"
diff --git a/testing/abook/vcard-compat.patch b/testing/abook/vcard-compat.patch
new file mode 100644
index 0000000000..c73240a5e6
--- /dev/null
+++ b/testing/abook/vcard-compat.patch
@@ -0,0 +1,346 @@
+diff -aur old/filter.c new/filter.c
+--- old/filter.c 2006-09-06 15:26:10.000000000 +1000
++++ new/filter.c 2012-05-31 17:48:18.644744197 +1000
+@@ -44,6 +44,7 @@
+ static int csv_parse_file(FILE *in);
+ static int allcsv_parse_file(FILE *in);
+ static int palmcsv_parse_file(FILE *in);
++static int vcard_parse_file(FILE *in);
+
+ /*
+ * export filter prototypes
+@@ -75,6 +76,7 @@
+ { "csv", N_("comma separated values"), csv_parse_file },
+ { "allcsv", N_("comma separated values (all fields)"), allcsv_parse_file },
+ { "palmcsv", N_("Palm comma separated values"), palmcsv_parse_file },
++ { "vcard", N_("vCard file"), vcard_parse_file },
+ { "\0", NULL, NULL }
+ };
+
+@@ -1331,6 +1333,263 @@
+ */
+
+ /*
++ * vCard import filter
++ */
++
++static char *vcard_fields[] = {
++ "FN", /* NAME */
++ "EMAIL", /* EMAIL */
++ "ADR", /* ADDRESS */
++ "ADR", /* ADDRESS2 - not used */
++ "ADR", /* CITY */
++ "ADR", /* STATE */
++ "ADR", /* ZIP */
++ "ADR", /* COUNTRY */
++ "TEL", /* PHONE */
++ "TEL", /* WORKPHONE */
++ "TEL", /* FAX */
++ "TEL", /* MOBILEPHONE */
++ "NICKNAME", /* NICK */
++ "URL", /* URL */
++ "NOTE", /* NOTES */
++ "BDAY", /* ANNIVERSARY */
++ NULL
++};
++
++/*
++ * mappings between vCard ADR field and abook's ADDRESS
++ * see rfc2426 section 3.2.1
++ */
++static int vcard_address_fields[] = {
++ -1, /* vCard(post office box) - not used */
++ -1, /* vCard(the extended address) - not used */
++ 2, /* vCard(the street address) - ADDRESS */
++ 4, /* vCard(the locality) - CITY */
++ 5, /* vCard(the region) - STATE */
++ 6, /* vCard(the postal code) - ZIP */
++ 7 /* vCard(the country name) - COUNTRY */
++};
++
++enum {
++ VCARD_KEY = 0,
++ VCARD_KEY_ATTRIBUTE,
++ VCARD_VALUE,
++};
++
++static char *
++vcard_get_line_element(char *line, int element)
++{
++ int i;
++ char *line_copy = 0;
++ char *result = 0;
++ char *key = 0;
++ char *key_attr = 0;
++ char *value = 0;
++
++ line_copy = xstrdup(line);
++
++ /* make newline characters if exist end of string */
++ for(i=0; line_copy[i]; i++) {
++ if(line_copy[i] == '\r' || line_copy[i] == '\n') {
++ line_copy[i] = '\0';
++ break;
++ }
++ }
++
++ /* separate key from value */
++ for(i=0; line_copy[i]; i++) {
++ if(line_copy[i] == ':') {
++ line_copy[i] = '\0';
++ key = line_copy;
++ value = &line_copy[i+1];
++ break;
++ }
++ }
++
++ /* separate key from key attributes */
++ if (key) {
++ for(i=0; key[i]; i++) {
++ if(key[i] == ';') {
++ key[i] = '\0';
++ key_attr = &key[i+1];
++ break;
++ }
++ }
++ }
++
++ switch(element) {
++ case VCARD_KEY:
++ if(key)
++ result = xstrdup(key);
++ break;
++ case VCARD_KEY_ATTRIBUTE:
++ if(key_attr)
++ result = xstrdup(key_attr);
++ break;
++ case VCARD_VALUE:
++ if(value)
++ result = xstrdup(value);
++ break;
++ }
++
++ xfree(line_copy);
++ return result;
++}
++
++static void
++vcard_parse_email(list_item item, char *line)
++{
++ char *email;
++
++ email = vcard_get_line_element(line, VCARD_VALUE);
++
++ if(item[1]) {
++ item[1] = strconcat(item[1], ",", email, 0);
++ xfree(email);
++ }
++ else {
++ item[1] = email;
++ }
++}
++
++static void
++vcard_parse_address(list_item item, char *line)
++{
++ int i;
++ int k;
++ char *value;
++ char *address_field;
++
++ value = vcard_get_line_element(line, VCARD_VALUE);
++ if(!value)
++ return;
++
++ address_field = value;
++ for(i=k=0; value[i]; i++) {
++ if(value[i] == ';') {
++ value[i] = '\0';
++ if(vcard_address_fields[k] >= 0) {
++ item[vcard_address_fields[k]] = xstrdup(address_field);
++ }
++ address_field = &value[i+1];
++ k++;
++ if((k+1)==(sizeof(vcard_address_fields)/sizeof(*vcard_address_fields)))
++ break;
++ }
++ }
++ item[vcard_address_fields[k]] = xstrdup(address_field);
++ xfree(value);
++}
++
++static void
++vcard_parse_phone(list_item item, char *line)
++{
++ int index = 8;
++ char *type = vcard_get_line_element(line, VCARD_KEY_ATTRIBUTE);
++ char *value = vcard_get_line_element(line, VCARD_VALUE);
++
++ /* set the standard number */
++ if (!type) {
++ item[index] = value;
++ }
++
++ /*
++ * see rfc2426 section 3.3.1
++ */
++ else if (strstr(type, "TYPE=") == type){
++ if (strcasestr(type, "home")) {
++ item[index] = xstrdup(value);
++ }
++ if (strcasestr(type, "work")) {
++ item[index+1] = xstrdup(value);
++ }
++ if (strcasestr(type, "fax")) {
++ item[index+2] = xstrdup(value);
++ }
++ if (strcasestr(type, "cell")) {
++ item[index+3] = xstrdup(value);
++ }
++
++ xfree(type);
++ xfree(value);
++ }
++}
++
++static void
++vcard_parse_line(list_item item, char *line)
++{
++ int i;
++ char *key;
++
++ for(i=0; vcard_fields[i]; i++) {
++ key = vcard_fields[i];
++
++ if(!strncmp(key, line, strlen(key))) {
++ if(i == 1) {
++ vcard_parse_email(item, line);
++ }
++ else if(i == 2) {
++ vcard_parse_address(item, line);
++ }
++ else if(i == 8) {
++ vcard_parse_phone(item, line);
++ }
++ else {
++ item[i] = vcard_get_line_element(line, VCARD_VALUE);
++ }
++ break;
++ }
++ }
++}
++
++static void
++vcard_parse_item(FILE *in)
++{
++ char *line = NULL;
++ list_item item = item_create();
++
++ while(!feof(in)) {
++ line = getaline(in);
++
++ if(line && !strncmp("END:VCARD", line, 9)) {
++ xfree(line);
++ break;
++ }
++ else if(line) {
++ vcard_parse_line(item, line);
++ xfree(line);
++ }
++ }
++
++ add_item2database(item);
++ item_free(&item);
++}
++
++static int
++vcard_parse_file(FILE *in)
++{
++ char *line = NULL;
++
++ while(!feof(in)) {
++ line = getaline(in);
++
++ if(line && !strncmp("BEGIN:VCARD", line, 11)) {
++ xfree(line);
++ vcard_parse_item(in);
++ }
++ else if(line) {
++ xfree(line);
++ }
++ }
++
++ return 0;
++}
++
++/*
++ * end of vCard import filter
++ */
++
++/*
+ * csv addressbook export filters
+ */
+
+@@ -1547,10 +1806,18 @@
+
+ free(name);
+
++ if(db_fget(e.item, NICK))
++ fprintf(out, "NICKNAME:%s\r\n",
++ db_fget(e.item, NICK));
++
++ if(db_fget(e.item, ANNIVERSARY))
++ fprintf(out, "BDAY:%s\r\n",
++ db_fget(e.item, ANNIVERSARY));
++
+ if(db_fget(e.item, ADDRESS))
+- fprintf(out, "ADR:;;%s;%s;%s;%s;%s;%s\r\n",
+- safe_str(db_fget(e.item, ADDRESS)),
++ fprintf(out, "ADR:;%s;%s;%s;%s;%s;%s\r\n",
+ safe_str(db_fget(e.item, ADDRESS2)),
++ safe_str(db_fget(e.item, ADDRESS)),
+ safe_str(db_fget(e.item, CITY)),
+ safe_str(db_fget(e.item, STATE)),
+ safe_str(db_fget(e.item, ZIP)),
+diff -aur old/misc.c new/misc.c
+--- old/misc.c 2006-09-05 05:24:18.000000000 +1000
++++ new/misc.c 2012-05-31 17:40:46.241284874 +1000
+@@ -77,6 +77,27 @@
+ return 1;
+ }
+
++char *
++strcasestr(char *haystack, char *needle)
++{
++ int i;
++ int k;
++
++ assert(haystack != NULL);
++ assert(needle != NULL);
++
++ for(i=0; i<strlen(haystack)-strlen(needle)+1; i++) {
++ for(k=0; k<strlen(needle); k++, i++) {
++ if (tolower(haystack[i]) != tolower(needle[k]))
++ break;
++ else if ((k+1) == strlen(needle))
++ return &haystack[i];
++ }
++ }
++
++ return NULL;
++}
++
+
+ #ifdef HAVE_CONFIG_H
+ # include "config.h"
+diff -aur old/misc.h new/misc.h
+--- old/misc.h 2006-09-05 05:24:18.000000000 +1000
++++ new/misc.h 2012-05-31 17:40:46.241284874 +1000
+@@ -18,6 +18,8 @@
+
+ int is_number(char *s);
+
++char *strcasestr(char *haystack, char *needle);
++
+ char *strdup_printf(const char *format, ... );
+ char *strconcat(const char *str, ...);
diff --git a/testing/calcurse/APKBUILD b/testing/calcurse/APKBUILD
new file mode 100644
index 0000000000..064db112cf
--- /dev/null
+++ b/testing/calcurse/APKBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=calcurse
+pkgver=3.0.0
+pkgrel=1
+pkgdesc='A text-based personal organizer.'
+url='http://calcurse.org/'
+license='BSD'
+arch='all'
+makedepends='libiconv-dev ncurses-dev'
+subpackages="$pkgname-doc"
+source="http://calcurse.org/files/${pkgname}-${pkgver}.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --enable-docs \
+ --without-asciidoc
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="3e25d04afeecd8f21e064e8b1db8f02b calcurse-3.0.0.tar.gz"
diff --git a/testing/cmus/APKBUILD b/testing/cmus/APKBUILD
new file mode 100644
index 0000000000..88decd21eb
--- /dev/null
+++ b/testing/cmus/APKBUILD
@@ -0,0 +1,26 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=cmus
+pkgver=2.4.3
+pkgrel=0
+pkgdesc='A very feature-rich ncurses-based music player'
+url='http://cmus.sourceforge.net/'
+license='GPL'
+arch='all'
+makedepends='alsa-lib-dev faad2-dev flac-dev libiconv-dev libmad-dev libogg-dev libvorbis-dev ncurses-dev wavpack-dev'
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-v$pkgver.tar.bz2"
+
+build() {
+ LDFLAGS="$LDFLAGS -liconv"
+ cd "$srcdir"/$pkgname-v$pkgver
+ ./configure prefix=/usr
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname-v$pkgver
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums="75452cf007637214c4ab5444e076114b cmus-v2.4.3.tar.bz2"
diff --git a/testing/mlocate/APKBUILD b/testing/mlocate/APKBUILD
new file mode 100644
index 0000000000..f23c465789
--- /dev/null
+++ b/testing/mlocate/APKBUILD
@@ -0,0 +1,48 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=mlocate
+pkgver=0.25
+pkgrel=0
+pkgdesc='An utility to index and quickly search for files by name'
+url='https://fedorahosted.org/mlocate/'
+arch='all'
+license='GPL'
+install="$pkgname.pre-install"
+makedepends='uclibc-dev sed'
+subpackages="$pkgname-doc"
+source="https://fedorahosted.org/releases/m/l/mlocate/mlocate-$pkgver.tar.xz
+ updatedb.conf
+ updatedb.cron.daily"
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ sed -i '/^groupname /s/mlocate/locate/' Makefile.in
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib
+ make
+}
+
+check() {
+ cd $srcdir/$pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+
+ make DESTDIR=$pkgdir install
+
+ ln -s locate $pkgdir/usr/bin/slocate
+ chgrp locate $pkgdir/usr/bin/locate
+ chmod 2755 $pkgdir/usr/bin/locate
+
+ install -dm755 $pkgdir/var/lib
+ install -dm750 -g locate $pkgdir/var/lib/locate
+
+ install -Dm644 ${srcdir}/updatedb.conf $pkgdir/etc/updatedb.conf
+ install -Dm744 ${srcdir}/updatedb.cron.daily $pkgdir/etc/cron.daily/updatedb
+}
+
+md5sums="c6d043b170613b0e327a815b497f680a mlocate-0.25.tar.xz
+465315bfa3380a23fae9a383270cb2ec updatedb.conf
+cde5da81bebad2de556ef2e43d895e13 updatedb.cron.daily"
diff --git a/testing/mlocate/mlocate.pre-install b/testing/mlocate/mlocate.pre-install
new file mode 100644
index 0000000000..18aa121d07
--- /dev/null
+++ b/testing/mlocate/mlocate.pre-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+addgroup -S locate 2>/dev/null
+exit 0
diff --git a/testing/mlocate/updatedb.conf b/testing/mlocate/updatedb.conf
new file mode 100644
index 0000000000..ea33c32cf8
--- /dev/null
+++ b/testing/mlocate/updatedb.conf
@@ -0,0 +1,4 @@
+PRUNE_BIND_MOUNTS = "yes"
+PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset cramfs debugfs devpts devtmpfs ecryptfs exofs ftpfs fuse fuse.encfs fuse.sshfs fusectl gfs gfs2 hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs rpc_pipefs securityfs selinuxfs sfs shfs smbfs sockfs sshfs sysfs tmpfs ubifs udf usbfs vboxsf"
+PRUNENAMES = ".git .hg .svn"
+PRUNEPATHS = "/afs /media /mnt /net /sfs /tmp /udev /var/cache /var/lock /var/run /var/spool /var/tmp"
diff --git a/testing/mlocate/updatedb.cron.daily b/testing/mlocate/updatedb.cron.daily
new file mode 100644
index 0000000000..cac9bb0630
--- /dev/null
+++ b/testing/mlocate/updatedb.cron.daily
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# nicenesses range from -20 (most favorable scheduling) to 19 (least favorable)
+NICE=19
+
+# 0 for none, 1 for real time, 2 for best-effort, 3 for idle
+IONICE_CLASS=2
+
+# 0-7 (for IONICE_CLASS 1 and 2 only), 0=highest, 7=lowest
+IONICE_PRIORITY=7
+
+UPDATEDB="/usr/bin/updatedb"
+
+if [ -x /usr/bin/nice ]; then
+ UPDATEDB="/usr/bin/nice -n ${NICE:-19} ${UPDATEDB}"
+fi
+
+if [ -x /usr/bin/ionice ]; then
+ UPDATEDB="/usr/bin/ionice -c ${IONICE_CLASS:-2} -n ${IONICE_PRIORITY:-7} ${UPDATEDB}"
+fi
+
+# Update the "locate" database
+if [ -x /usr/bin/updatedb ]; then
+ if [ -f /etc/updatedb.conf ]; then
+ ${UPDATEDB}
+ else
+ ${UPDATEDB} -f proc
+ fi
+fi
diff --git a/testing/monkey/APKBUILD b/testing/monkey/APKBUILD
new file mode 100644
index 0000000000..32082b7ccf
--- /dev/null
+++ b/testing/monkey/APKBUILD
@@ -0,0 +1,61 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=monkey
+pkgver=1.0.1
+pkgrel=0
+pkgdesc='A fast and lightweight HTTP server designed for embedded devices.'
+url='http://monkey-project.com/'
+license='GPL2'
+arch='all'
+makedepends='bash'
+subpackages="$pkgname-doc"
+source="http://monkey-project.com/releases/1.0/$pkgname-$pkgver.tar.gz
+ strsignal.patch
+ monkey.initd
+ monkey.confd"
+
+prepare() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ # Use POSIX-compliant strsignal instead SYS_SIGLIST
+ patch -Np0 -i "$srcdir"/strsignal.patch || return 1
+
+ # Don't install the banana script, use OpenRC daemon instead
+ sed -i '/install -m 755 bin\/banana/d' configure || return 1
+ rm man/banana.1 || return 1
+
+ # Run monkey as http user
+ sed -i '737s/nobody/http/' configure || return 1
+}
+
+
+build() {
+ cd "$srcdir"/$pkgname-$pkgver
+
+ ./configure \
+ --prefix=/usr \
+ --bindir=/usr/bin \
+ --sysconfdir=/etc/$pkgname \
+ --mandir=/usr/share/man \
+ --datadir=/var/www \
+ --logdir=/var/log/$pkgname \
+ --plugdir=/usr/lib/$pkgname \
+ || return 1
+
+ make || return 1
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ make DESTDIR=$pkgdir install || return 1
+
+ install -D -m0755 "$srcdir"/monkey.initd \
+ "$pkgdir"/etc/init.d/monkey || return 1
+ install -D -m0644 "$srcdir"/monkey.confd \
+ "$pkgdir"/etc/conf.d/monkey || return 1
+}
+
+md5sums="5e08e4089e8b41ea90b0c98d6ca6433e monkey-1.0.1.tar.gz
+4e99ccbfbd00b17023c7b82e466c7aee strsignal.patch
+6630131d3ea75dbbf1033a4acc8cf983 monkey.initd
+71805f446a12d747c52e18b8ac4b4704 monkey.confd"
diff --git a/testing/monkey/monkey.confd b/testing/monkey/monkey.confd
new file mode 100644
index 0000000000..818957c979
--- /dev/null
+++ b/testing/monkey/monkey.confd
@@ -0,0 +1,5 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# Add any additional command line arguments here
+MONKEY_ARGS=""
diff --git a/testing/monkey/monkey.initd b/testing/monkey/monkey.initd
new file mode 100644
index 0000000000..7ab26aa2ab
--- /dev/null
+++ b/testing/monkey/monkey.initd
@@ -0,0 +1,25 @@
+#!/sbin/runscript
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+DAEMON="/usr/bin/monkey"
+CONFFILE="/etc/monkey/monkey.conf"
+
+depend() {
+ use net
+}
+
+start() {
+ ebegin "Starting monkey"
+ start-stop-daemon --start --exec "${DAEMON}" -- "-D" "${MONKEY_ARGS}" >/dev/null
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping monkey"
+ local PORT=$(awk '/^ *Port/ { print $2 }' "${CONFFILE}")
+ local PIDFILE=$(awk '/^ *PidFile/ { print $2 }' "${CONFFILE}")
+ PIDFILE="${PIDFILE}"."${PORT}"
+ start-stop-daemon --stop --quiet --pidfile "${PIDFILE}"
+ eend $?
+}
diff --git a/testing/monkey/strsignal.patch b/testing/monkey/strsignal.patch
new file mode 100644
index 0000000000..6908fe6b3a
--- /dev/null
+++ b/testing/monkey/strsignal.patch
@@ -0,0 +1,12 @@
+--- ./src/mk_signals.c.orig
++++ ./src/mk_signals.c
+@@ -87,7 +87,7 @@
+ mk_utils_stacktrace();
+ #endif
+ mk_err("%s (%d), code=%d, addr=%p",
+- sys_siglist[signo], signo, si->si_code, si->si_addr);
++ strsignal(signo), signo, si->si_code, si->si_addr);
+ pthread_exit(NULL);
+ default:
+ /* let the kernel handle it */
+
diff --git a/testing/nethogs/APKBUILD b/testing/nethogs/APKBUILD
new file mode 100644
index 0000000000..aa6399fd86
--- /dev/null
+++ b/testing/nethogs/APKBUILD
@@ -0,0 +1,24 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=nethogs
+pkgver=0.8.0
+pkgrel=0
+pkgdesc='Top-like monitor for network traffic'
+url='http://nethogs.sourceforge.net'
+arch='all'
+license='GPL'
+makedepends='libpcap-dev ncurses-dev'
+subpackages="$pkgname-doc"
+source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ cd "$srcdir"/$pkgname
+ make
+}
+
+package() {
+ cd "$srcdir"/$pkgname
+ make DESTDIR="$pkgdir/usr" install
+}
+
+md5sums="d6fb12b46e80a50c9b9f91dd48e2b234 nethogs-0.8.0.tar.gz"
diff --git a/testing/ranger/APKBUILD b/testing/ranger/APKBUILD
new file mode 100644
index 0000000000..85a68183e4
--- /dev/null
+++ b/testing/ranger/APKBUILD
@@ -0,0 +1,23 @@
+# Maintainer: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+
+pkgname=ranger
+pkgver=1.5.4
+pkgrel=0
+pkgdesc='A simple, vim-like file manager'
+url='http://ranger.nongnu.org'
+arch='any'
+license='GPL'
+depends='python'
+subpackages="$pkgname-doc"
+source="http://ranger.nongnu.org/${pkgname}-${pkgver}.tar.gz"
+
+build() {
+ return 0
+}
+
+package() {
+ cd "$srcdir"/$pkgname-$pkgver
+ python setup.py -q install --root="${pkgdir}" --optimize=1 || return 1
+}
+
+md5sums="1fbc629b7a2c7e3e4695fb218eed7240 ranger-1.5.4.tar.gz"