diff --git a/main/lua-xctrl/APKBUILD b/main/lua-xctrl/APKBUILD
index 734b8ea62547f6234b3cbf7a91b8bcee5c0929e8..542751eaff4907c4ed8746512611bc5519bb9074 100644
--- a/main/lua-xctrl/APKBUILD
+++ b/main/lua-xctrl/APKBUILD
@@ -1,63 +1,69 @@
 # Maintainer: Natanael Copa <ncopa@alpinelinux.org>
 pkgname=lua-xctrl
 pkgver=2015.04.10
-_x=${pkgver%%.*}
-_y=${pkgver%.*}
-_y=${_y#*.}
-_z=${pkgver##*.}
-_ver=${_x}-${_y}-${_z}
-pkgrel=2
-_luaversions="5.1 5.2 5.3"
+pkgrel=3
 pkgdesc="Lua module that allows you to query and manipulate various aspects of an X11 window manager"
 url="https://github.com/yetanothergeek/xctrl"
 arch="all"
-license="GPL-2.0"
-depends=
+license="GPL-2.0-or-later"
 makedepends="lua-dev libx11-dev libxmu-dev"
-for _i in $_luaversions; do
-        makedepends="$makedepends lua$_i-dev"
-        subpackages="$subpackages lua$_i-xctrl:split_${_i/./_}"
-done
-install=
 subpackages="$pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://github.com/yetanothergeek/xctrl/archive/$pkgver.tar.gz"
-
+source="$pkgname-$pkgver.tar.gz::https://github.com/yetanothergeek/xctrl/archive/$pkgver.tar.gz
+	fix-linking.patch
+	"
 builddir="$srcdir"/xctrl-$pkgver
-_lua_libdir=/usr/lib/lua/5.1
+
+# higher versions fail to import (lua_pcall not found)
+_luaversions="5.1"
+for _i in $_luaversions; do
+	makedepends="$makedepends lua$_i-dev"
+	subpackages="$subpackages lua$_i-xctrl:_subpackage"
+done
 
 prepare() {
-	cd "$builddir"
+	default_prepare
+	local lver; for lver in $_luaversions; do
+		cp -r "$builddir" "$builddir-$lver"
+	done
 }
 
 build() {
-        for _i in $_luaversions; do
-                msg "Build for Lua $_i"
-		cd "$builddir"
-		export EXTRA_CFLAGS="-fPIC"
-		make LUAPKG="lua$_i" || return 1
+	local lver; for lver in $_luaversions; do
+		msg "building for Lua $lver..."
+		cd "$builddir-$lver"
+		make EXTRA_CFLAGS="$CFLAGS -fPIC" LUA="lua$lver"
 	done
 }
 
-package() {
-        cd "$builddir"
-        for _i in $_luaversions; do
-		install -d "$pkgdir"/usr/lib/lua/$_i "$pkgdir"/usr/share/doc/$pkgname
-		install src/xctrl.so "$pkgdir"/usr/lib/lua/$_i/xctrl.so
-		install doc/lxctrl.html "$pkgdir"/usr/share/doc/$pkgname/lxctrl.html
-        done
+check() {
+	local lver; for lver in $_luaversions; do
+		msg "Checking lua $lver build"
+		(
+		cd "$builddir-$lver"/src
+		# check if importable
+		lua$lver -e 'require("xctrl")'
+		)
+	done
 }
 
-_split() {
-        local d=usr/lib/lua _ver=$1
-        pkgdesc="$pkgdesc for Lua $_ver"
-        install_if="lua$_ver $pkgname=$pkgver-r$pkgrel"
-        depends=
-        mkdir -p "$subpkgdir/$d" || return 1
-        mv "$pkgdir/$d/$1" "$subpkgdir/$d"
+package() {
+	local lver; for lver in $_luaversions; do
+		install -Dm644 "$builddir-$lver"/src/xctrl.so \
+			-t "$pkgdir"/usr/lib/lua/$lver
+		install -Dm644 doc/lxctrl.html \
+			-t "$pkgdir"/usr/share/doc/$pkgname
+	done
 }
 
-for _v in $_luaversions; do
-        eval "split_${_v/./_}() { _split $_v; }"
-done
+_subpackage() {
+	local lver="${subpkgname:3:3}"
+	pkgdesc="$pkgdesc $lver"
+	depends="lua$lver"
+
+	amove usr/lib/lua/$lver
+}
 
-sha512sums="11a48641ebc71ab56201a707b844ee0d0475167fe4f4bd96f4d8296db00dc806c6d3889a5447bb41cec787b0de6d0351f77b45a8505fac5a5e184e3b80482acb  lua-xctrl-2015.04.10.tar.gz"
+sha512sums="
+11a48641ebc71ab56201a707b844ee0d0475167fe4f4bd96f4d8296db00dc806c6d3889a5447bb41cec787b0de6d0351f77b45a8505fac5a5e184e3b80482acb  lua-xctrl-2015.04.10.tar.gz
+37707f5a5a697eed1f3776fd33dc5140d0b0480ec39503d79f2793cb338fa28f68740b3f80443d957cfeeaca2593036e8b22a47b89bd445826b7515463489320  fix-linking.patch
+"
diff --git a/main/lua-xctrl/fix-linking.patch b/main/lua-xctrl/fix-linking.patch
new file mode 100644
index 0000000000000000000000000000000000000000..682b85f1e114fc078418428aa41395c504a47072
--- /dev/null
+++ b/main/lua-xctrl/fix-linking.patch
@@ -0,0 +1,16 @@
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -33,11 +33,11 @@
+ lib: $(LIBNAME)_clean $(LIBNAME)
+ 
+ $(LIBNAME): xctrl.c
+-	$(CC) $(CFLAGS) $(LDFLAGS) -shared $^ -o $@
++	$(CC) $(CFLAGS) -shared $^ -o $@ $(LDFLAGS)
+ 
+ 
+ $(MODNAME): lxctrl.c
+-	$(CC) $(CFLAGS) $(LDFLAGS) -shared $^ -o $@
++	$(CC) $(CFLAGS) -shared $^ -o $@ $(LDFLAGS)
+ 
+ 
+ %.o: %.c