Skip to content

Commit 00b8616

Browse files
committed
apk: add package
APK (Alpine Package Keeper) is the package manager of Alpine Linux and has multiple advantages over OPKG. While Alpine uses APK version 2, this commit adds version 3 with a heavily optimised database structure and additional feature making it suitable for OpenWrt. This commit will be followed by many more to add APK build capabilities to the OpenWrt build system, firstly enabling side by side builds of APK and OPKG packages, later replacing OPKG entirely. Signed-off-by: Paul Spooren <mail@aparcar.org>
1 parent 7d5f7b8 commit 00b8616

3 files changed

Lines changed: 1025 additions & 0 deletions

File tree

package/system/apk/Makefile

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
include $(TOPDIR)/rules.mk
2+
3+
PKG_NAME:=apk
4+
PKG_RELEASE:=1
5+
6+
PKG_SOURCE_URL=https://gitlab.alpinelinux.org/alpine/apk-tools.git
7+
PKG_SOURCE_PROTO:=git
8+
PKG_SOURCE_DATE:=2024-04-16
9+
PKG_SOURCE_VERSION:=ba6c31a5469ef74fb85119508e55de9631ffef41
10+
PKG_MIRROR_HASH:=3455d5799481add9ece3db685576d58be6303f3a13140133979b965cbd3c9966
11+
12+
PKG_VERSION=3.0.0_pre$(subst -,,$(PKG_SOURCE_DATE))
13+
14+
PKG_MAINTAINER:=Paul Spooren <mail@aparcar.org>
15+
PKG_LICENSE:=GPL-2.0-only
16+
PKG_LICENSE_FILES:=LICENSE
17+
PKG_INSTALL:=1
18+
19+
HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
20+
HOST_BUILD_DEPENDS:=lua/host
21+
PKG_BUILD_DEPENDS:=$(HOST_BUILD_DEPENDS)
22+
23+
include $(INCLUDE_DIR)/package.mk
24+
include $(INCLUDE_DIR)/host-build.mk
25+
include $(INCLUDE_DIR)/meson.mk
26+
27+
define Package/apk/default
28+
SECTION:=base
29+
CATEGORY:=Base system
30+
TITLE:=apk package manager
31+
DEPENDS:=+zlib
32+
URL:=$(PKG_SOURCE_URL)
33+
endef
34+
35+
define Package/apk-mbedtls
36+
$(Package/apk/default)
37+
TITLE += (mbedtls)
38+
DEPENDS +=+libmbedtls
39+
VARIANT:=mbedtls
40+
DEFAULT_VARIANT:=1
41+
CONFLICTS:=apk-openssl
42+
endef
43+
44+
define Package/apk-openssl
45+
$(Package/apk/default)
46+
TITLE += (openssl)
47+
DEPENDS +=+libopenssl
48+
VARIANT:=openssl
49+
endef
50+
51+
MESON_HOST_VARS+=VERSION=$(PKG_VERSION)
52+
MESON_VARS+=VERSION=$(PKG_VERSION)
53+
54+
MESON_HOST_ARGS += \
55+
-Dlua_version=5.1 \
56+
-Dcompressed-help=false \
57+
-Ddocs=disabled \
58+
-Dcrypto_backend=openssl \
59+
-Dzstd=false
60+
61+
MESON_ARGS += \
62+
-Dlua_version=5.1 \
63+
-Dcompressed-help=false \
64+
-Ddocs=disabled \
65+
-Durl_backend=wget \
66+
-Dcrypto_backend=$(BUILD_VARIANT) \
67+
-Dzstd=false
68+
69+
HOST_LDFLAGS += \
70+
-Wl,-rpath $(STAGING_DIR_HOST)/lib
71+
72+
define Package/apk/default/install
73+
$(INSTALL_DIR) $(1)/lib/apk/db
74+
75+
$(INSTALL_DIR) $(1)/usr/bin
76+
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/apk $(1)/usr/bin/apk
77+
78+
$(INSTALL_DIR) $(1)/usr/lib
79+
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libapk.so.* $(1)/usr/lib/
80+
endef
81+
82+
Package/apk-mbedtls/install = $(Package/apk/default/install)
83+
Package/apk-openssl/install = $(Package/apk/default/install)
84+
85+
$(eval $(call BuildPackage,apk-mbedtls))
86+
$(eval $(call BuildPackage,apk-openssl))
87+
$(eval $(call HostBuild))
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
From 9918c683fcc2f148328332d58d030ec5750a1473 Mon Sep 17 00:00:00 2001
2+
From: Paul Spooren <mail@aparcar.org>
3+
Date: Sat, 19 Feb 2022 17:20:37 +0100
4+
Subject: [PATCH 1/4] openwrt: move layer db to temp folder
5+
6+
Signed-off-by: Paul Spooren <mail@aparcar.org>
7+
---
8+
src/database.c | 2 +-
9+
1 file changed, 1 insertion(+), 1 deletion(-)
10+
11+
--- a/src/database.c
12+
+++ b/src/database.c
13+
@@ -1604,7 +1604,7 @@ const char *apk_db_layer_name(int layer)
14+
{
15+
switch (layer) {
16+
case APK_DB_LAYER_ROOT: return "lib/apk/db";
17+
- case APK_DB_LAYER_UVOL: return "lib/apk/db-uvol";
18+
+ case APK_DB_LAYER_UVOL: return "tmp/run/uvol/.meta/apk";
19+
default:
20+
assert("invalid layer");
21+
return 0;

0 commit comments

Comments
 (0)