How do I build an APK for Alpine Linux in a Docker container?… here is a solution to the problem.
How do I build an APK for Alpine Linux in a Docker container?
I’ve been trying to build an APK package for Alpine using Docker containers and abuild tools. It gives the following error:
>>> hello: Building shared/hello 0.1.0-r0 (using abuild 3.8.0_rc4-r0) started Mon, 27 Sep 2021 13:44:06 +0000
>>> hello: Checking sanity of /shared/hello/APKBUILD...
>>> WARNING: hello: No maintainer
>>> hello: Analyzing dependencies...
>>> hello: Installing for build: build-base
WARNING: Ignoring /home/apk/packages//shared: No such file or directory
(1/1) Installing .makedepends-hello (20210927.134407)
OK: 280 MiB in 67 packages
>>> hello: Cleaning up srcdir
>>> hello: Cleaning up pkgdir
>>> hello: Checking sha512sums...
hello: OK
>>> hello: Entering fakeroot...
>>> hello*: Running postcheck for hello
find: /shared/hello/pkg/hello: No such file or directory
find: /shared/hello/pkg/hello: No such file or directory
find: /shared/hello/pkg/hello: No such file or directory
find: /shared/hello/pkg/hello: No such file or directory
find: /shared/hello/pkg/hello: No such file or directory
>>> hello*: Preparing package hello...
>>> ERROR: hello*: Missing /shared/hello/pkg/hello
>>> ERROR: hello: rootpkg failed
>>> hello: Uninstalling dependencies...
(1/1) Purging .makedepends-hello (20210927.134407)
OK: 280 MiB in 66 packages
MY APKBUILD LOOKS LIKE:
pkgname="hello"
pkgver="0.1.0"
pkgrel="0"
pkgdesc="Hello World"
url="https://example.com"
arch="noarch"
license="COPYING"
source=".. /dst/hello"
depends=""
check() {
:
}
package() {
:
}
I’VE PUT THE APKBUILD FILE INTO ITS OWN FOLDER CALLED “HELLO”, WHICH IS IN A SEPARATE FOLDER CALLED “DST”.
Solution
I figured it out :
THIS IS A VERY SIMPLE FIX FOR THE APKBUILD FILE
pkgname="hello"
pkgver="0.1.0"
pkgrel="0"
pkgdesc="Hello World"
url="https://example.com"
arch="noarch"
license="COPYING"
source=".. /dst/hello"
depends=""
check() {
:
}
package() {
# Add this line to create the $pkgdir folder
mkdir -p $pkgdir
}