diff --git a/testing/i3blocks/APKBUILD b/testing/i3blocks/APKBUILD
index e6c48452fd1cd61e1a0dae9cacd5600eb49c971b..7c33d13a77d334a7d85de45dfb7c86e4d892c7ac 100644
--- a/testing/i3blocks/APKBUILD
+++ b/testing/i3blocks/APKBUILD
@@ -1,29 +1,44 @@
 # Contributor: Marvin Steadfast <marvin@xsteadfastx.org>
 # Maintainer: Marvin Steadfast <marvin@xsteadfastx.org>
 pkgname=i3blocks
-pkgver=1.4
+pkgver=1.5
 pkgrel=0
 pkgdesc="A minimalist scheduler for your status line scripts"
 url="https://github.com/vivien/i3blocks"
 arch="all"
 license="GPL-3.0-or-later"
 options="!check" # no test suite
-makedepends="ronn"
-subpackages="$pkgname-doc"
+makedepends="ronn autoconf automake"
+subpackages="$pkgname-doc
+	$pkgname-bash-completion:bashcomp:noarch"
 source="$pkgname-$pkgver.tar.gz::https://github.com/vivien/i3blocks/archive/$pkgver.tar.gz
-	fix-musl.patch
 	"
-builddir="$srcdir/$pkgname-$pkgver"
+
+prepare() {
+	default_prepare
+	autoreconf -fi
+}
 
 build() {
-	cd "$builddir"
+	./configure \
+		--build=$CBUILD \
+		--host=$CHOST \
+		--prefix=/usr \
+		--sysconfdir=/etc \
+		--mandir=/usr/share/man
 	make
 }
 
 package() {
-	cd "$builddir"
 	make DESTDIR="$pkgdir" PREFIX=/usr install
 }
 
-sha512sums="f04fd68d59097b21bc88f3097dff137de656dd3fa696d9c04b987ba25136e5e5d9cacb63998e8635fe55fcf94f47900aec8c79d98e1d1d8847856a89ad9a6578  i3blocks-1.4.tar.gz
-ea4e76637d3112f4529558e04bb93007297678360052be4a28932e9389afe98f538a09008f92fcf0a68312c1c60ac5ad0687f467555ebccc4ac833c489856017  fix-musl.patch"
+bashcomp() {
+	pkgdesc="Bash completion for $pkgname"
+	depends=""
+	install_if="bash-completion $pkgname=$pkgver-r$pkgrel"
+
+	mkdir -p "$subpkgdir"/usr/share
+	mv "$pkgdir"/usr/share/bash-completion "$subpkgdir"/usr/share/
+}
+sha512sums="759829d59f94070251378d437891c2df05715fbd0b734c34dd41767d61957f301c6125b0058668295b8eeac29038fae6b2e8c194f903398ee736662213d1d534  i3blocks-1.5.tar.gz"
diff --git a/testing/i3blocks/fix-musl.patch b/testing/i3blocks/fix-musl.patch
deleted file mode 100644
index 28d5af9df32b4127b264968b7df9e3a66063d79f..0000000000000000000000000000000000000000
--- a/testing/i3blocks/fix-musl.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 28c2b092f7d41aa723dad18b0484dca0da1cbbf5 Mon Sep 17 00:00:00 2001
-From: Leorize <alaviss@users.noreply.github.com>
-Date: Wed, 5 Jul 2017 11:07:07 +0700
-Subject: [PATCH] sched: fix musl libc build
-
-This commit solves the following error when building with musl libc
-```
-src/sched.c:34:17: error: 'sigset' redeclared as different kind of symbol
- static sigset_t sigset;
-                 ^~~~~~
-In file included from src/sched.c:21:0:
-/usr/include/signal.h:231:8: note: previous declaration of 'sigset' was here
- void (*sigset(int, void (*)(int)))(int);
-        ^~~~~~
-make: *** [<builtin>: src/sched.o] Error 1
-make: *** Waiting for unfinished jobs....
-```
-
-Based on the patch by @E100Beta
----
- src/sched.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/sched.c b/src/sched.c
-index d1c4634..dabdeef 100644
---- a/src/sched.c
-+++ b/src/sched.c
-@@ -31,7 +31,7 @@
- #include "json.h"
- #include "log.h"
- 
--static sigset_t sigset;
-+static sigset_t set;
- 
- static int
- gcd(int a, int b)
-@@ -88,13 +88,13 @@ setup_timer(struct bar *bar)
- static int
- setup_signals(void)
- {
--	if (sigemptyset(&sigset) == -1) {
-+	if (sigemptyset(&set) == -1) {
- 		errorx("sigemptyset");
- 		return 1;
- 	}
- 
- #define ADD_SIG(_sig) \
--	if (sigaddset(&sigset, _sig) == -1) { errorx("sigaddset(%d)", _sig); return 1; }
-+	if (sigaddset(&set, _sig) == -1) { errorx("sigaddset(%d)", _sig); return 1; }
- 
- 	/* Control signals */
- 	ADD_SIG(SIGTERM);
-@@ -125,7 +125,7 @@ setup_signals(void)
- #undef ADD_SIG
- 
- 	/* Block signals for which we are interested in waiting */
--	if (sigprocmask(SIG_SETMASK, &sigset, NULL) == -1) {
-+	if (sigprocmask(SIG_SETMASK, &set, NULL) == -1) {
- 		errorx("sigprocmask");
- 		return 1;
- 	}
-@@ -164,7 +164,7 @@ sched_start(struct bar *bar)
- 	bar_poll_timed(bar);
- 
- 	while (1) {
--		sig = sigwaitinfo(&sigset, &siginfo);
-+		sig = sigwaitinfo(&set, &siginfo);
- 		if (sig == -1) {
- 			/* Hiding the bar may interrupt this system call */
- 			if (errno == EINTR)
-@@ -212,7 +212,7 @@ sched_start(struct bar *bar)
- 	 * Unblock signals (so subsequent syscall can be interrupted)
- 	 * and wait for child processes termination.
- 	 */
--	if (sigprocmask(SIG_UNBLOCK, &sigset, NULL) == -1)
-+	if (sigprocmask(SIG_UNBLOCK, &set, NULL) == -1)
- 		errorx("sigprocmask");
- 	while (waitpid(-1, NULL, 0) > 0)
- 		continue;