build: replace OPKG with APK
authorPaul Spooren <mail@aparcar.org>
Mon, 14 Feb 2022 11:22:16 +0000 (12:22 +0100)
committerPaul Spooren <mail@aparcar.org>
Wed, 23 Feb 2022 19:23:56 +0000 (20:23 +0100)
The build system now uses APK to create firmware images.

Signed-off-by: Paul Spooren <mail@aparcar.org>
21 files changed:
.gitignore
README.md
include/download.mk
include/feeds.mk
include/image.mk
include/kernel.mk
include/package-defaults.mk
include/package-ipkg.mk
include/rootfs.mk
include/target.mk
package/Makefile
package/base-files/Makefile
package/base-files/files/lib/functions.sh
package/kernel/linux/Makefile
package/libs/toolchain/Makefile
package/network/services/hostapd/Makefile
package/system/fstools/files/snapshot
rules.mk
scripts/feeds
target/imagebuilder/Makefile
target/imagebuilder/files/Makefile

index a80cdbbea31029b612af83b0b5c75426caf4dab7..76b42e5015a4cd9572c3a487bb852d4639b7571b 100644 (file)
@@ -20,6 +20,8 @@
 /*.patch
 /llvm-bpf*
 key-build*
+private-key.pem
+public-key.pem
 *.orig
 *.rej
 *~
index 2eff29232108cf648f406216bd58e34094ecb509..6604b57b81484353a10b4036cf415347ec47fc8a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ make4.1+ perl python3.6+ rsync subversion unzip which
 
 The main repository uses multiple sub-repositories to manage packages of
 different categories. All packages are installed via the OpenWrt package
-manager called `opkg`. If you're looking to develop the web interface or port
+manager called `apk`. If you're looking to develop the web interface or port
 packages to OpenWrt, please find the fitting repository below.
 
 * [LuCI Web Interface](https://github.com/openwrt/luci): Modern and modular
index 76bd374cf7e349f31196401725c170df9262cf88..08f84f5de76fa69d9f46f09ed7b21b87cf08cda0 100644 (file)
@@ -10,7 +10,7 @@ LEDE_GIT = $(PROJECT_GIT)
 
 ifdef PKG_SOURCE_VERSION
   ifndef PKG_VERSION
-    PKG_VERSION := $(if $(PKG_SOURCE_DATE),$(PKG_SOURCE_DATE)-)$(call version_abbrev,$(PKG_SOURCE_VERSION))
+    PKG_VERSION := 0_git$(subst -,,$(subst .,,$(PKG_SOURCE_DATE)))
   endif
   PKG_SOURCE_SUBDIR ?= $(PKG_NAME)-$(PKG_VERSION)
   PKG_SOURCE ?= $(PKG_SOURCE_SUBDIR).tar.xz
index 632fecb4a3aaece1cada2b8d2ae089c85dc2d1a6..a27aa709c4167f8078b6eaac3c367143f4226161 100644 (file)
@@ -14,9 +14,9 @@ ifneq ($(CONFIG_PER_FEED_REPO),)
   PACKAGE_SUBDIRS += $(foreach FEED,$(FEEDS_AVAILABLE),$(OUTPUT_DIR)/packages/$(ARCH_PACKAGES)/$(FEED))
 endif
 
-opkg_package_files = $(wildcard \
+apk_package_files = $(wildcard \
        $(foreach dir,$(PACKAGE_SUBDIRS), \
-         $(foreach pkg,$(1), $(dir)/$(pkg)_*.ipk)))
+         $(foreach pkg,$(1), $(dir)/$(pkg)_*.apk)))
 
 # 1: package name
 define FeedPackageDir
@@ -30,14 +30,14 @@ endef
 # 1: destination file
 define FeedSourcesAppend
 ( \
-  echo 'src/gz %d_core %U/targets/%S/packages'; \
+  echo '%U/targets/%S/packages/packages.adb'; \
   $(strip $(if $(CONFIG_PER_FEED_REPO), \
-       echo 'src/gz %d_base %U/packages/%A/base'; \
+       echo '%U/packages/%A/base/packages.adb'; \
        $(if $(filter %SNAPSHOT-y,$(VERSION_NUMBER)-$(CONFIG_BUILDBOT)), \
-               echo 'src/gz %d_kmods %U/targets/%S/kmods/$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)';) \
+               echo '%U/targets/%S/kmods/$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)/packages.adb';) \
        $(foreach feed,$(FEEDS_AVAILABLE), \
                $(if $(CONFIG_FEED_$(feed)), \
-                       echo '$(if $(filter m,$(CONFIG_FEED_$(feed))),# )src/gz %d_$(feed) %U/packages/%A/$(feed)';)))) \
+                       echo '$(if $(filter m,$(CONFIG_FEED_$(feed))),# )%U/packages/%A/$(feed)/packages.adb';)))) \
 ) >> $(1)
 endef
 
index 275a0adcac9e7581153791c876a565d535450b7a..ce82acd76355c800b370afead718a7a36b653ac5 100644 (file)
@@ -272,7 +272,7 @@ define Image/mkfs/ext4
 endef
 
 define Image/Manifest
-       $(call opkg,$(TARGET_DIR_ORIG)) list-installed > \
+       $(call apk,$(TARGET_DIR_ORIG)) list --quiet --manifest | sort > \
                $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).manifest
 endef
 
@@ -312,25 +312,19 @@ mkfs_packages_add = $(foreach pkg,$(filter-out -%,$(mkfs_packages)),$(pkg)$(call
 mkfs_packages_remove = $(foreach pkg,$(patsubst -%,%,$(filter -%,$(mkfs_packages))),$(pkg)$(call GetABISuffix,$(pkg)))
 mkfs_cur_target_dir = $(call mkfs_target_dir,pkg=$(target_params))
 
-opkg_target = \
-       $(call opkg,$(mkfs_cur_target_dir)) \
-               -f $(mkfs_cur_target_dir).conf
+apk_target = $(call apk,$(mkfs_cur_target_dir))
 
 target-dir-%: FORCE
-       rm -rf $(mkfs_cur_target_dir) $(mkfs_cur_target_dir).opkg
+       rm -rf $(mkfs_cur_target_dir) $(mkfs_cur_target_dir).apk
        $(CP) $(TARGET_DIR_ORIG) $(mkfs_cur_target_dir)
-       -mv $(mkfs_cur_target_dir)/etc/opkg $(mkfs_cur_target_dir).opkg
-       echo 'src default file://$(PACKAGE_DIR_ALL)' > $(mkfs_cur_target_dir).conf
+       mv $(mkfs_cur_target_dir)/etc/apk/repositories $(mkfs_cur_target_dir).repositories
        $(if $(mkfs_packages_remove), \
-               -$(call opkg,$(mkfs_cur_target_dir)) remove \
-                       $(mkfs_packages_remove))
-       $(if $(call opkg_package_files,$(mkfs_packages_add)), \
-               $(opkg_target) update && \
-               $(opkg_target) install \
-                       $(call opkg_package_files,$(mkfs_packages_add)))
-       -$(CP) -T $(mkfs_cur_target_dir).opkg/ $(mkfs_cur_target_dir)/etc/opkg/
-       rm -rf $(mkfs_cur_target_dir).opkg $(mkfs_cur_target_dir).conf
+               $(apk_target) del $(mkfs_packages_remove))
+       $(if $(mkfs_packages_add), \
+               $(apk_target) add $(mkfs_packages_add))
+       mv $(mkfs_cur_target_dir).repositories $(mkfs_cur_target_dir)/etc/apk/repositories
        $(call prepare_rootfs,$(mkfs_cur_target_dir),$(TOPDIR)/files)
+       $(apk_target) list --quiet --manifest | sort > $(mkfs_cur_target_dir).manifest
 
 $(KDIR)/root.%: kernel_prepare
        $(call Image/mkfs/$(word 1,$(target_params)),$(target_params))
index e4074a48f4b27b3522b95b239af0817b5bacfec9..e940b2eb638097b8605db12452f50218e513a460 100644 (file)
@@ -206,8 +206,8 @@ define KernelPackage
     SECTION:=kernel
     CATEGORY:=Kernel modules
     DESCRIPTION:=$(DESCRIPTION)
-    EXTRA_DEPENDS:=kernel (=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC))
-    VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),$(PKG_RELEASE),$(LINUX_RELEASE))
+    EXTRA_DEPENDS:=kernel-$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
+    VERSION:=$(LINUX_VERSION)$(if $(PKG_VERSION),+$(PKG_VERSION))-$(if $(PKG_RELEASE),r$(PKG_RELEASE),r$(LINUX_RELEASE))
     PKGFLAGS:=$(PKGFLAGS)
     $(call KernelPackage/$(1))
     $(call KernelPackage/$(1)/$(BOARD))
@@ -264,7 +264,7 @@ $(call KernelPackage/$(1)/config)
   endif
   $$(eval $$(call BuildPackage,kmod-$(1)))
 
-  $$(IPKG_kmod-$(1)): $$(wildcard $$(call version_filter,$$(FILES)))
+  $$(APK_kmod-$(1)): $$(wildcard $$(call version_filter,$$(FILES)))
 
 endef
 
index 3ee3a965f20a4ebe3f9a723e76d7a1b9aa42a8bc..a25f8c30eba76d5de5e8590f9aab519663824b45 100644 (file)
@@ -23,7 +23,7 @@ define Package/Default
   SOURCE:=$(patsubst $(TOPDIR)/%,%,$(CURDIR))
   ifneq ($(PKG_VERSION),)
     ifneq ($(PKG_RELEASE),)
-      VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
+      VERSION:=$(PKG_VERSION)-r$(PKG_RELEASE)
     else
       VERSION:=$(PKG_VERSION)
     endif
index 3063a86a28c19516bd23654a9798be3519b45d0f..ec4d42608cb110863b32076199b11a3dcbdb3ce8 100644 (file)
@@ -1,16 +1,11 @@
 # SPDX-License-Identifier: GPL-2.0-only
 #
-# Copyright (C) 2006-2020 OpenWrt.org
+# Copyright (C) 2006-2022 OpenWrt.org
 
 ifndef DUMP
   include $(INCLUDE_DIR)/feeds.mk
 endif
 
-IPKG_REMOVE:= \
-  $(SCRIPT_DIR)/ipkg-remove
-
-IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg
-
 # Generates a make statement to return a wildcard for candidate ipkg files
 # 1: package name
 define gen_ipkg_wildcard
@@ -20,7 +15,9 @@ endef
 # 1: package name
 # 2: candidate ipk files
 define remove_ipkg_files
-  $(if $(strip $(2)),$(IPKG_REMOVE) $(1) $(2))
+for pkg in $(2); do \
+  $(STAGING_DIR_HOST)/bin/apk adbdump "$$pkg" | grep "^  name: $(1)" && rm "$$pkg" || true; \
+done
 endef
 
 # 1: package name
@@ -29,7 +26,7 @@ endef
 # 4: file is a script
 define BuildIPKGVariable
 ifdef Package/$(1)/$(2)
-  $$(IPKG_$(1)) : VAR_$(2)$(3)=$$(Package/$(1)/$(2))
+  $$(APK_$(1)) : VAR_$(2)$(3)=$$(Package/$(1)/$(2))
   $(call shexport,Package/$(1)/$(2))
   $(1)_COMMANDS += echo "$$$$$$$$$(call shvar,Package/$(1)/$(2))" > $(2)$(3); $(if $(4),chmod 0755 $(2)$(3);)
 endif
@@ -50,7 +47,7 @@ strip_deps=$(strip $(subst +,,$(filter-out @%,$(1))))
 filter_deps=$(foreach dep,$(call strip_deps,$(1)),$(if $(findstring :,$(dep)),$(call dep_if,$(dep)),$(dep)))
 
 define AddDependency
-  $$(if $(1),$$(if $(2),$$(foreach pkg,$(1),$$(IPKG_$$(pkg))): $$(foreach pkg,$(2),$$(IPKG_$$(pkg)))))
+  $$(if $(1),$$(if $(2),$$(foreach pkg,$(1),$$(APK_$$(pkg))): $$(foreach pkg,$(2),$$(APK_$$(pkg)))))
 endef
 
 define FixupReverseDependencies
@@ -101,8 +98,9 @@ ifeq ($(DUMP),)
   define BuildTarget/ipkg
     ABIV_$(1):=$(call FormatABISuffix,$(1),$(ABI_VERSION))
     PDIR_$(1):=$(call FeedPackageDir,$(1))
-    IPKG_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).ipk
+    APK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION).apk
     IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)
+    ADIR_$(1):=$(PKG_BUILD_DIR)/apk-$(PKGARCH)/$(1)
     KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))
 
     TARGET_VARIANT:=$$(if $(ALL_VARIANTS),$$(if $$(VARIANT),$$(filter-out *,$$(VARIANT)),$(firstword $(ALL_VARIANTS))))
@@ -117,8 +115,8 @@ ifeq ($(DUMP),)
     ifdef do_install
       ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
         IPKGS += $(1)
-        $(_pkg_target)compile: $$(IPKG_$(1)) $(PKG_INFO_DIR)/$(1).provides $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
-        prepare-package-install: $$(IPKG_$(1))
+        $(_pkg_target)compile: $$(APK_$(1)) $(PKG_INFO_DIR)/$(1).provides $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
+        prepare-package-install: $$(APK_$(1))
         compile: $(STAGING_DIR_ROOT)/stamp/.$(1)_installed
       else
         $(if $(CONFIG_PACKAGE_$(1)),$$(info WARNING: skipping $(1) -- package not selected))
@@ -194,14 +192,14 @@ $$(call addfield,Depends,$$(Package/$(1)/DEPENDS)
 Installed-Size: 0
 $(_endef)
 
-    $$(IPKG_$(1)) : export CONTROL=$$(Package/$(1)/CONTROL)
-    $$(IPKG_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
-    $$(IPKG_$(1)) : export PATH=$$(TARGET_PATH_PKG)
-    $$(IPKG_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
-    $(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk
-       @rm -rf $$(IDIR_$(1)); \
-               $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
-       mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR)
+    $$(APK_$(1)) : export CONTROL=$$(Package/$(1)/CONTROL)
+    $$(APK_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
+    $$(APK_$(1)) : export PATH=$$(TARGET_PATH_PKG)
+    $$(APK_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
+    $(PKG_INFO_DIR)/$(1).provides $$(APK_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk
+       rm -rf $$(IDIR_$(1)); \
+               $$(call remove_ipkg_files,$(1),$$(call apk_package_files,$(call gen_ipkg_wildcard,$(1))))
+       mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1)) $(PKG_INFO_DIR)
        $(call Package/$(1)/install,$$(IDIR_$(1)))
        $(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay)
        $(call Package/$(1)/install-overlay,$$(IDIR_$(1))/rootfs-overlay)
@@ -227,28 +225,6 @@ $(_endef)
                ) || true \
        )
     endif
-       (cd $$(IDIR_$(1))/CONTROL; \
-               ( \
-                       echo "$$$$CONTROL"; \
-                       printf "Description: "; echo "$$$$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; \
-               ) > control; \
-               chmod 644 control; \
-               ( \
-                       echo "#!/bin/sh"; \
-                       echo "[ \"\$$$${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; \
-                       echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
-                       echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
-                       echo "default_postinst \$$$$0 \$$$$@"; \
-               ) > postinst; \
-               ( \
-                       echo "#!/bin/sh"; \
-                       echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
-                       echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
-                       echo "default_prerm \$$$$0 \$$$$@"; \
-               ) > prerm; \
-               chmod 0755 postinst prerm; \
-               $($(1)_COMMANDS) \
-       )
 
     ifneq ($$(KEEP_$(1)),)
                @( \
@@ -263,12 +239,59 @@ $(_endef)
                )
     endif
 
-       $(INSTALL_DIR) $$(PDIR_$(1))
-       $(FAKEROOT) $(STAGING_DIR_HOST)/bin/bash $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1))
-       @[ -f $$(IPKG_$(1)) ]
+       $(INSTALL_DIR) $$(PDIR_$(1))/tmp
+       mkdir -p $$(ADIR_$(1))/
+       mkdir -p $$(IDIR_$(1))/lib/apk/packages/
+
+       (cd $$(ADIR_$(1)); $($(1)_COMMANDS))
+
+       ( \
+               echo "#!/bin/sh"; \
+               echo "[ \"\$$$${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; \
+               echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
+               echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
+               echo 'export root="$$$${IPKG_INSTROOT}"'; \
+               echo 'export pkgname="$(1)"'; \
+               echo "add_group_and_user"; \
+               [ ! -f $$(ADIR_$(1))/postinst-pkg ] || cat "$$(ADIR_$(1))/postinst-pkg"; \
+               echo "default_postinst"; \
+       ) > $$(ADIR_$(1))/post-install;
+
+       ( \
+               echo "#!/bin/sh"; \
+               echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
+               echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
+               echo 'export root="$$$${IPKG_INSTROOT}"'; \
+               echo 'export pkgname="$(1)"'; \
+               [ ! -f $$(ADIR_$(1))/prerm-pkg ] || cat "$$(ADIR_$(1))/prerm-pkg"; \
+               echo "default_prerm"; \
+       ) > $$(ADIR_$(1))/pre-deinstall;
+
+       if [ -n "$(USERID)" ]; then echo $(USERID) > $$(IDIR_$(1))/lib/apk/packages/$(1).rusers; fi;
+       if [ -n "$(ALTERNATIVES)" ]; then echo $(ALTERNATIVES) > $$(IDIR_$(1))/lib/apk/packages/$(1).alternatives; fi;
+       (cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" > $$(IDIR_$(1))/lib/apk/packages/$(1).list)
+       if [ -f $$(ADIR_$(1))/conffiles ]; then mv $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; fi;
+
+       $(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk mkpkg \
+         --info "name:$(1)$$(ABIV_$(1))" \
+         --info "version:$(VERSION)" \
+         --info "description:" \
+         --info "arch:$(PKGARCH)" \
+         --info "license:$(LICENSE)" \
+         --info "origin:$(SOURCE)" \
+         --info "provides:$$(foreach prov,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), \
+               $(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))),$$(prov)=0 )" \
+         --script "post-install:$$(ADIR_$(1))/post-install" \
+         --script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall" \
+         --info "depends:$$(subst $$(comma),,$$(Package/$(1)/DEPENDS))" \
+         --files "$$(IDIR_$(1))" \
+         --output "$$(APK_$(1))" \
+         --sign "$(BUILD_KEY_APK_SEC)"
+
+       @[ -f $$(APK_$(1)) ]
 
     $(1)-clean:
-       $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
+       $$(call remove_ipkg_files,$(1),$$(call apk_package_files,$(call gen_ipkg_wildcard,$(1))))
 
     clean: $(1)-clean
 
index f2ed648d2f3eb51a31115d4d3d22dc4982959d97..bee43799fee68b6e68cff15c723d3b79a83a5458 100644 (file)
@@ -31,17 +31,16 @@ ifdef CONFIG_USE_MKLIBS
   endef
 endif
 
-# where to build (and put) .ipk packages
-opkg = \
-  IPKG_NO_SCRIPT=1 \
+apk = \
   IPKG_INSTROOT=$(1) \
-  TMPDIR=$(1)/tmp \
-  $(STAGING_DIR_HOST)/bin/opkg \
-       --offline-root $(1) \
-       --force-postinstall \
-       --add-dest root:/ \
-       --add-arch all:100 \
-       --add-arch $(if $(ARCH_PACKAGES),$(ARCH_PACKAGES),$(BOARD)):200
+  $(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk \
+       --root $(1) \
+       --keys-dir $(TOPDIR) \
+       --no-cache \
+       --no-logfile \
+       --force-no-chroot \
+       --preserve-env \
+       --repository file://$(PACKAGE_DIR_ALL)/packages.adb
 
 TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
 
@@ -68,14 +67,6 @@ define prepare_rootfs
        @mkdir -p $(1)/var/lock
        @( \
                cd $(1); \
-               for script in ./usr/lib/opkg/info/*.postinst; do \
-                       IPKG_INSTROOT=$(1) $$(command -v bash) $$script; \
-                       ret=$$?; \
-                       if [ $$ret -ne 0 ]; then \
-                               echo "postinst script $$script has failed with exit code $$ret" >&2; \
-                               exit 1; \
-                       fi; \
-               done; \
                for script in ./etc/init.d/*; do \
                        grep '#!/bin/sh /etc/rc.common' $$script >/dev/null || continue; \
                        if ! echo " $(3) " | grep -q " $$(basename $$script) "; then \
@@ -87,13 +78,11 @@ define prepare_rootfs
                        fi; \
                done || true \
        )
-       $(if $(SOURCE_DATE_EPOCH),sed -i "s/Installed-Time: .*/Installed-Time: $(SOURCE_DATE_EPOCH)/" $(1)/usr/lib/opkg/status)
        @-find $(1) -name CVS -o -name .svn -o -name .git -o -name '.#*' | $(XARGS) rm -rf
+       @-find $(1)/usr/cache/apk/ -name '*.apk' -delete
        rm -rf \
                $(1)/boot \
                $(1)/tmp/* \
-               $(1)/usr/lib/opkg/info/*.postinst* \
-               $(1)/usr/lib/opkg/lists/* \
                $(1)/var/lock/*.lock
        $(call clean_ipkg,$(1))
        $(call mklibs,$(1))
index 72fe493776b91a4a424819c274e192e270a330f2..0e70ae18675c80249b951c7939f7372e6e20eb66 100644 (file)
@@ -12,6 +12,7 @@ DEVICE_TYPE?=router
 # Default packages - the really basic set
 DEFAULT_PACKAGES:=\
        base-files \
+       apk \
        ca-bundle \
        dropbear \
        fstools \
@@ -21,7 +22,6 @@ DEFAULT_PACKAGES:=\
        logd \
        mtd \
        netifd \
-       opkg \
        uci \
        uclient-fetch \
        urandom-seed \
index 209be34674747a728606f0c8b2d7dbcd2930ba7b..04945f731aeca753c566c5940acd1fe04cfab5cd 100644 (file)
@@ -53,29 +53,30 @@ $(curdir)/cleanup: $(TMP_DIR)/.build
 $(curdir)/merge:
        rm -rf $(PACKAGE_DIR_ALL)
        mkdir -p $(PACKAGE_DIR_ALL)
-       -$(foreach pdir,$(PACKAGE_SUBDIRS),$(if $(wildcard $(pdir)/*.ipk),ln -s $(pdir)/*.ipk $(PACKAGE_DIR_ALL);))
+       -$(foreach pdir,$(PACKAGE_SUBDIRS),$(if $(wildcard $(pdir)/*.apk),ln -s $(pdir)/*.apk $(PACKAGE_DIR_ALL);))
 
 $(curdir)/merge-index: $(curdir)/merge
-       (cd $(PACKAGE_DIR_ALL) && $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages; )
+       (cd $(PACKAGE_DIR_ALL) && $(STAGING_DIR_HOST)/bin/apk mkndx \
+                       --root $(TOPDIR) \
+                       --keys-dir $(TOPDIR) \
+                       --sign $(BUILD_KEY_APK_SEC) \
+                       --output packages.adb \
+                       *.apk; \
+       )
 
 ifndef SDK
-  $(curdir)/compile: $(curdir)/system/opkg/host/compile
+  $(curdir)/compile: $(curdir)/system/apk/host/compile
 endif
 
-$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index)
+$(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(curdir)/merge-index
        - find $(STAGING_DIR_ROOT) -type d | $(XARGS) chmod 0755
        rm -rf $(TARGET_DIR) $(TARGET_DIR_ORIG)
        mkdir -p $(TARGET_DIR)/tmp
-       $(file >$(TMP_DIR)/opkg_install_list,\
-         $(call opkg_package_files,\
-           $(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg)))))
-       $(call opkg,$(TARGET_DIR)) install $$(cat $(TMP_DIR)/opkg_install_list)
-       @for file in $(PACKAGE_INSTALL_FILES); do \
-               [ -s $$file.flags ] || continue; \
-               for flag in `cat $$file.flags`; do \
-                       $(call opkg,$(TARGET_DIR)) flag $$flag `cat $$file`; \
-               done; \
-       done || true
+
+       $(file >$(TMP_DIR)/apk_install_list,\
+           $(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg))))
+       
+       $(call apk,$(TARGET_DIR)) add --initdb --arch $(ARCH_PACKAGES) $$(cat $(TMP_DIR)/apk_install_list)
 
        $(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG)
 
@@ -83,25 +84,16 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DE
 
 $(curdir)/index: FORCE
        @echo Generating package index...
-       @for d in $(PACKAGE_SUBDIRS); do ( \
+       -for d in $(PACKAGE_SUBDIRS); do ( \
                mkdir -p $$d; \
                cd $$d || continue; \
-               $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages.manifest; \
-               grep -vE '^(Maintainer|LicenseFiles|Source|SourceName|Require|SourceDateEpoch)' Packages.manifest > Packages; \
-               case "$$(((64 + $$(stat -L -c%s Packages)) % 128))" in 110|111) \
-                       $(call ERROR_MESSAGE,WARNING: Applying padding in $$d/Packages to workaround usign SHA-512 bug!); \
-                       { echo ""; echo ""; } >> Packages;; \
-               esac; \
-               gzip -9nc Packages > Packages.gz; \
+               $(STAGING_DIR_HOST)/bin/apk mkndx \
+                       --root $(TOPDIR) \
+                       --keys-dir $(TOPDIR) \
+                       --sign $(BUILD_KEY_APK_SEC) \
+                       --output packages.adb \
+                       *.apk; \
        ); done
-ifdef CONFIG_SIGNED_PACKAGES
-       @echo Signing package index...
-       @for d in $(PACKAGE_SUBDIRS); do ( \
-               [ -d $$d ] && \
-                       cd $$d || continue; \
-               $(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY); \
-       ); done
-endif
 
 $(curdir)/flags-install:= -j1
 
index 914f0598ff9c181952f20f769e64d2b1121b6ae2..a95764d3b08ac8ecc58aa02a9361658d3151bc4c 100644 (file)
@@ -108,6 +108,10 @@ ifdef CONFIG_SIGNED_PACKAGES
        [ -s $(BUILD_KEY).ucert ] || \
                $(STAGING_DIR_HOST)/bin/ucert -I -c $(BUILD_KEY).ucert -p $(BUILD_KEY).pub -s $(BUILD_KEY)
 
+       [ -s $(BUILD_KEY_APK_SEC) -a -s $(BUILD_KEY_APK_PUB) ] || \
+               openssl ecparam -name prime256v1 -genkey -noout -out $(BUILD_KEY_APK_SEC); \
+               openssl ec -in $(BUILD_KEY_APK_SEC) -pubout > $(BUILD_KEY_APK_PUB)
+
   endef
 
 ifndef CONFIG_BUILDBOT
@@ -115,6 +119,9 @@ ifndef CONFIG_BUILDBOT
        mkdir -p $(1)/etc/opkg/keys
        $(CP) $(BUILD_KEY).pub $(1)/etc/opkg/keys/`$(STAGING_DIR_HOST)/bin/usign -F -p $(BUILD_KEY).pub`
 
+       mkdir -p $(1)/etc/apk/keys
+       $(CP) $(BUILD_KEY_APK_PUB) $(1)/etc/apk/keys/
+
   endef
 endif
 endif
@@ -217,15 +224,12 @@ endif
                cat $(BIN_DIR)/feeds.buildinfo >>$(1)/etc/build.feeds; \
                cat $(BIN_DIR)/version.buildinfo >>$(1)/etc/build.version)
 
-       $(if $(CONFIG_CLEAN_IPKG),, \
-               mkdir -p $(1)/etc/opkg; \
-               $(call FeedSourcesAppend,$(1)/etc/opkg/distfeeds.conf); \
-               $(VERSION_SED_SCRIPT) $(1)/etc/opkg/distfeeds.conf)
-       $(if $(CONFIG_IPK_FILES_CHECKSUMS),, \
-               rm -f $(1)/sbin/pkg_check)
-
        $(if $(CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE), \
                rm -f $(1)/etc/banner.failsafe,)
+
+       mkdir -p $(1)/etc/apk/
+       $(call FeedSourcesAppend,$(1)/etc/apk/repositories)
+       $(VERSION_SED_SCRIPT) $(1)/etc/apk/repositories
 endef
 
 ifneq ($(DUMP),1)
index ee0c33845c508790578524c06cc3fc50450e3e58..ef923c50a19d908f060480e11aeac089c61a5a87 100644 (file)
@@ -178,17 +178,10 @@ config_list_foreach() {
 }
 
 default_prerm() {
-       local root="${IPKG_INSTROOT}"
-       local pkgname="$(basename ${1%.*})"
-       local ret=0
-
-       if [ -f "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" ]; then
-               ( . "$root/usr/lib/opkg/info/${pkgname}.prerm-pkg" )
-               ret=$?
-       fi
+       update_alternatives remove
 
        local shell="$(command -v bash)"
-       for i in $(grep -s "^/etc/init.d/" "$root/usr/lib/opkg/info/${pkgname}.list"); do
+       for i in $(grep -s "^/etc/init.d/" "$root/lib/apk/packages/${pkgname}.list"); do
                if [ -n "$root" ]; then
                        ${shell:-/bin/sh} "$root/etc/rc.common" "$root$i" disable
                else
@@ -199,12 +192,13 @@ default_prerm() {
                fi
        done
 
-       return $ret
+       return 0
 }
 
 add_group_and_user() {
-       local pkgname="$1"
-       local rusers="$(sed -ne 's/^Require-User: *//p' $root/usr/lib/opkg/info/${pkgname}.control 2>/dev/null)"
+       if [ -f "$root/lib/apk/packages/${pkgname}.rusers" ]; then
+               local rusers="$(cat $root/lib/apk/packages/${pkgname}.rusers)"
+       fi
 
        if [ -n "$rusers" ]; then
                local tuple oIFS="$IFS"
@@ -254,18 +248,58 @@ add_group_and_user() {
        fi
 }
 
-default_postinst() {
-       local root="${IPKG_INSTROOT}"
-       local pkgname="$(basename ${1%.*})"
-       local filelist="/usr/lib/opkg/info/${pkgname}.list"
-       local ret=0
-
-       add_group_and_user "${pkgname}"
+update_alternatives() {
+       local action="$1"
+
+       if [ -f "$root/lib/apk/packages/${pkgname}.alternatives" ]; then
+               for pkg_alt in $(cat $root/lib/apk/packages/${pkgname}.alternatives); do
+                       local best_prio=0;
+                       local best_src="/bin/busybox";
+                       pkg_prio=${pkg_alt%%:*};
+                       pkg_target=${pkg_alt#*:};
+                       pkg_target=${pkg_target%:*};
+                       pkg_src=${pkg_alt##*:};
+
+                       if [ -e "$root/$target" ]; then
+                               for alts in $root/lib/apk/packages/*.alternatives; do
+                    for alt in $(cat $alts); do
+                        prio=${alt%%:*};
+                        target=${alt#*:};
+                        target=${target%:*};
+                        src=${alt##*:};
+
+                        if [ "$target" = "$pkg_target" ] && \
+                                [ "$src" != "$pkg_src" ] && \
+                                [ "$best_prio" -lt "$prio" ]; then
+                            best_prio=$prio;
+                            best_src=$src;
+                        fi
+                    done
+                               done
+                       fi
 
-       if [ -f "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" ]; then
-               ( . "$root/usr/lib/opkg/info/${pkgname}.postinst-pkg" )
-               ret=$?
+                       case "$action" in
+                               install)
+                                       if [ "$best_prio" -lt "$pkg_prio" ]; then
+                                               ln -sf "$pkg_src" "$root/$pkg_target"
+                        echo "add alternative: $pkg_target -> $pkg_src"
+                                       fi
+                               ;;
+                               remove)
+                                       if [ "$best_prio" -lt "$pkg_prio" ]; then
+                                               ln -sf "$best_src" "$root/$pkg_target"
+                        echo "add alternative: $pkg_target -> $best_src"
+                                       fi
+                               ;;
+                       esac
+               done
        fi
+}
+
+default_postinst() {
+       local filelist="$root/lib/apk/packages/${pkgname}.list"
+
+       update_alternatives install
 
        if [ -d "$root/rootfs-overlay" ]; then
                cp -R $root/rootfs-overlay/. $root/
@@ -304,7 +338,7 @@ default_postinst() {
                fi
        done
 
-       return $ret
+       return 0
 }
 
 include() {
index 9fa68d78f722f414de60a01467615fa2220a20b1..67063726b1c513f8bae31179ce3076190f4d18ae 100644 (file)
@@ -48,6 +48,7 @@ define Package/kernel
   DEFAULT:=y
   TITLE:=Virtual kernel package
   VERSION:=$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)
+  PROVIDES:="kernel-$(LINUX_VERSION)-$(LINUX_RELEASE)-$(LINUX_VERMAGIC)"
   URL:=http://www.kernel.org/
   PKG_FLAGS:=nonshared
 endef
index 682efd1970fffd5a4afc290ff15c47f6261b5f8a..ba6c588b15567f47531c88bafccb39036fbf5582 100644 (file)
@@ -27,7 +27,7 @@ define Package/gcc/Default
   SECTION:=libs
   CATEGORY:=Base system
   URL:=http://gcc.gnu.org/
-  VERSION:=$(LIBGCC_VERSION)-$(PKG_RELEASE)
+  VERSION:=$(LIBGCC_VERSION)-r$(PKG_RELEASE)
 endef
 
 define Package/libgcc
@@ -230,7 +230,7 @@ endef
 define Package/libc/Default
   SECTION:=libs
   CATEGORY:=Base system
-  VERSION:=$(LIBC_VERSION)-$(PKG_RELEASE)
+  VERSION:=$(LIBC_VERSION)-r$(PKG_RELEASE)
   DEPENDS:=+libgcc
   URL:=$(LIBC_URL)
 endef
index 584695786f15b9b7004da9b2a0230a9ad7cf1485..4627685b9737a71b8c4988a9047dd9782a75c71c 100644 (file)
@@ -143,7 +143,7 @@ define Package/hostapd/Default
   TITLE:=IEEE 802.1x Authenticator
   URL:=http://hostap.epitest.fi/
   DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
-  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
+  EXTRA_DEPENDS:=hostapd-common=$(PKG_VERSION)-$(PKG_RELEASE)
   USERID:=network=101:network=101
   PROVIDES:=hostapd
   CONFLICTS:=$(HOSTAPD_PROVIDERS)
@@ -228,7 +228,7 @@ define Package/wpad/Default
   SUBMENU:=WirelessAPD
   TITLE:=IEEE 802.1x Auth/Supplicant
   DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
-  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
+  EXTRA_DEPENDS:=hostapd-common=$(PKG_VERSION)-$(PKG_RELEASE)
   USERID:=network=101:network=101
   URL:=http://hostap.epitest.fi/
   PROVIDES:=hostapd wpa-supplicant
@@ -344,7 +344,7 @@ define Package/wpa-supplicant/Default
   TITLE:=WPA Supplicant
   URL:=http://hostap.epitest.fi/wpa_supplicant/
   DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
-  EXTRA_DEPENDS:=hostapd-common (=$(PKG_VERSION)-$(PKG_RELEASE))
+  EXTRA_DEPENDS:=hostapd-common=$(PKG_VERSION)-$(PKG_RELEASE)
   USERID:=network=101:network=101
   PROVIDES:=wpa-supplicant
   CONFLICTS:=$(SUPPLICANT_PROVIDERS)
index a495e3434523b7a4b1b2f1bc3f4c9298197fc745..a5e4b9bc91c69c74bca984da838e0a504a5028b1 100644 (file)
@@ -37,17 +37,7 @@ do_config_push() {
 }
 
 do_snapshot_upgrade() {
-       opkg update
-       [ $? -eq 0 ] || exit 1
-
-       opkg list-upgradable
-       [ $? -eq 0 ] || exit 2
-
-       UPDATES=`opkg list-upgradable | cut -d" " -f1`
-       [ -z "${UPDATES}" ] && exit 0
-
-       opkg upgrade ${UPDATES}
-       [ $? -eq 0 ] || exit 3
+       apk upgrade
 
        do_snapshot_push
        sleep 5
index 8d4f61921192c92fd771800c092e1cc0cefff5be..05a3265ae6125237294f7616d373a4de9a083870 100644 (file)
--- a/rules.mk
+++ b/rules.mk
@@ -255,6 +255,8 @@ else
 endif
 
 BUILD_KEY=$(TOPDIR)/key-build
+BUILD_KEY_APK_SEC=$(TOPDIR)/private-key.pem
+BUILD_KEY_APK_PUB=$(TOPDIR)/public-key.pem
 
 FAKEROOT:=$(STAGING_DIR_HOST)/bin/fakeroot
 
index aee73e793f54ecbea6da8fab98e936a91a9ceb8a..e8cc346e130fd00ceccf5edd58f49b48345d163d 100755 (executable)
@@ -865,7 +865,7 @@ sub feed_config() {
                printf "\t\tdepends on PER_FEED_REPO\n";
                printf "\t\tdefault y\n" if $installed;
                printf "\t\thelp\n";
-               printf "\t\t Enable the \\\"%s\\\" feed in opkg distfeeds.conf.\n", $feed->[1];
+               printf "\t\t Enable the \\\"%s\\\" feed in apk repositories.\n", $feed->[1];
                printf "\t\t Say M to add the feed commented out.\n";
                printf "\n";
        }
@@ -884,7 +884,7 @@ Commands:
            -s :            List of feed names and their URL.
            -r <feedname>:  List packages of specified feed.
            -d <delimiter>: Use specified delimiter to distinguish rows (default: spaces)
-           -f :            List feeds in feeds.conf compatible format (when using -s).
+           -f :            List feeds in opkg feeds.conf compatible format (when using -s).
 
        install [options] <package>: Install a package
        Options:
index 8607a2d7094c6bd63e12b65f44ce717d32bcc768..db88ee346e17c4d554cc09b6af8d457ec93751e2 100644 (file)
@@ -25,7 +25,7 @@ BUNDLER_COMMAND := PATH=$(BUNDLER_PATH) $(XARGS) $(SCRIPT_DIR)/bundle-libraries.
 all: compile
 
 $(BIN_DIR)/$(IB_NAME).tar.xz: clean
-       rm -rf $(PKG_BUILD_DIR)
+       #rm -rf $(PKG_BUILD_DIR)
        mkdir -p $(IB_KDIR) $(IB_LDIR) $(PKG_BUILD_DIR)/staging_dir/host/lib \
                $(PKG_BUILD_DIR)/target $(PKG_BUILD_DIR)/scripts $(IB_DTSDIR)
        -cp $(TOPDIR)/.config $(PKG_BUILD_DIR)/.config
@@ -35,15 +35,13 @@ $(BIN_DIR)/$(IB_NAME).tar.xz: clean
                $(INCLUDE_DIR) $(SCRIPT_DIR) \
                $(TOPDIR)/rules.mk \
                ./files/Makefile \
-               ./files/repositories.conf \
                $(TMP_DIR)/.targetinfo \
                $(TMP_DIR)/.packageinfo \
                $(PKG_BUILD_DIR)/
 
 ifeq ($(CONFIG_IB_STANDALONE),)
-       echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
-       $(call FeedSourcesAppend,$(PKG_BUILD_DIR)/repositories.conf)
-       $(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
+       $(call FeedSourcesAppend,$(PKG_BUILD_DIR)/repositories)
+       $(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories
 endif
 
        $(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
@@ -58,26 +56,18 @@ endif
 ifeq ($(CONFIG_BUILDBOT),)
   ifeq ($(CONFIG_IB_STANDALONE),)
        $(FIND) $(call FeedPackageDir,libc) -type f \
-               \( -name 'libc_*.ipk' -or -name 'kernel_*.ipk' -or -name 'kmod-*.ipk' \) \
+               \( -name 'libc_*.apk' -or -name 'kernel_*.apk' -or -name 'kmod-*.apk' \) \
                -exec $(CP) -t $(PKG_BUILD_DIR)/packages {} +
   else
-       $(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.ipk' \
+       $(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.apk' \
                -exec $(CP) -t $(PKG_BUILD_DIR)/packages/ {} +
   endif
 else
        $(FIND) $(call FeedPackageDir,libc) -type f \
-               \( -name 'libc_*.ipk' -or -name 'kernel_*.ipk' \) \
+               \( -name 'libc_*.apk' -or -name 'kernel_*.apk' \) \
                -exec $(CP) -t $(IB_LDIR)/ {} +
 endif
 
-ifneq ($(CONFIG_SIGNATURE_CHECK),)
-       echo ''                                                        >> $(PKG_BUILD_DIR)/repositories.conf
-       echo 'option check_signature'                                  >> $(PKG_BUILD_DIR)/repositories.conf
-       $(INSTALL_DIR) $(PKG_BUILD_DIR)/keys
-       $(CP) -L $(STAGING_DIR_ROOT)/etc/opkg/keys/ $(PKG_BUILD_DIR)/
-       $(CP) -L $(STAGING_DIR_ROOT)/usr/sbin/opkg-key $(PKG_BUILD_DIR)/scripts/
-endif
-
        $(CP) $(TOPDIR)/target/linux $(PKG_BUILD_DIR)/target/
        if [ -d $(TOPDIR)/staging_dir/host/lib/grub ]; then \
                $(CP) $(TOPDIR)/staging_dir/host/lib/grub/ $(PKG_BUILD_DIR)/staging_dir/host/lib; \
@@ -108,8 +98,11 @@ endif
        $(CP) $(STAGING_DIR_HOST)/bin/* $(PKG_BUILD_DIR)/staging_dir/host/bin/
        (cd $(PKG_BUILD_DIR); find staging_dir/host/bin/ $(IB_LDIR)/scripts/dtc/ -type f | \
                $(BUNDLER_COMMAND))
+
+       $(INSTALL_DIR) $(PKG_BUILD_DIR)/staging_dir/hostpkg/bin
        $(CP) $(TOPDIR)/staging_dir/host/lib/libfakeroot* $(PKG_BUILD_DIR)/staging_dir/host/lib
        STRIP=$(STAGING_DIR_HOST)/bin/sstrip $(SCRIPT_DIR)/rstrip.sh $(PKG_BUILD_DIR)/staging_dir/host/bin/
+
        (cd $(BUILD_DIR); \
                tar -I '$(STAGING_DIR_HOST)/bin/xz -7e -T$(if $(filter 1,$(NPROC)),2,0)' -cf $@ $(IB_NAME) \
                --mtime="$(shell date --date=@$(SOURCE_DATE_EPOCH))"; \
index 871a40b3a1f261d0e69c75eedb1474bbe9eb03a8..6ef1b9df180c525dc228f858d3c98fc38c4ac767 100644 (file)
@@ -66,6 +66,7 @@ help: FORCE
 # override variables from rules.mk
 PACKAGE_DIR:=$(TOPDIR)/packages
 LISTS_DIR:=$(subst $(space),/,$(patsubst %,..,$(subst /,$(space),$(TARGET_DIR))))$(DL_DIR)
+PACKAGE_DIR_ALL:=$(TOPDIR)/packages
 export OPKG_KEYS:=$(TOPDIR)/keys
 OPKG:=$(call opkg,$(TARGET_DIR)) \
        -f $(TOPDIR)/repositories.conf \
@@ -73,6 +74,11 @@ OPKG:=$(call opkg,$(TARGET_DIR)) \
        --cache $(DL_DIR) \
        --lists-dir $(LISTS_DIR)
 
+APK:=$(call apk,$(TARGET_DIR)) \
+       --cache-dir $(DL_DIR) \
+       --allow-untrusted
+
+
 include $(INCLUDE_DIR)/target.mk
 -include .profiles.mk
 
@@ -131,41 +137,36 @@ _call_manifest: FORCE
        mkdir -p $(TARGET_DIR) $(BIN_DIR) $(TMP_DIR) $(DL_DIR)
        $(MAKE) package_reload >/dev/null
        $(MAKE) package_install >/dev/null
-       $(OPKG) list-installed $(if $(STRIP_ABI),--strip-abi)
+       $(APK) list --manifest 
 
 package_index: FORCE
        @echo >&2
        @echo Building package index... >&2
        @mkdir -p $(TMP_DIR) $(TARGET_DIR)/tmp
-       (cd $(PACKAGE_DIR); $(SCRIPT_DIR)/ipkg-make-index.sh . > Packages && \
-               gzip -9nc Packages > Packages.gz; \
-               $(if $(CONFIG_SIGNATURE_CHECK), \
-                       $(STAGING_DIR_HOST)/bin/usign -S -m Packages -s $(BUILD_KEY)) \
-       ) >/dev/null 2>/dev/null
-       $(OPKG) update >&2 || true
+       $(APK) add --initdb >&2 || true
+       $(APK) update >&2 || true
 
 package_reload:
        if [ -d "$(PACKAGE_DIR)" ] && ( \
-                       [ ! -f "$(PACKAGE_DIR)/Packages" ] || \
-                       [ ! -f "$(PACKAGE_DIR)/Packages.gz" ] || \
-                       [ "`find $(PACKAGE_DIR) -cnewer $(PACKAGE_DIR)/Packages.gz`" ] ); then \
+                       [ ! -f "$(PACKAGE_DIR)/packages.adb" ] || \
+                       [ "`find $(PACKAGE_DIR) -cnewer $(PACKAGE_DIR)/packages.adb`" ] ); then \
                echo "Package list missing or not up-to-date, generating it." >&2 ;\
                $(MAKE) package_index; \
        else \
                mkdir -p $(TARGET_DIR)/tmp; \
-               $(OPKG) update >&2 || true; \
+               $(APK) update >&2 || true; \
        fi
 
 package_list: FORCE
        @$(MAKE) -s package_reload
-       @$(OPKG) list --size 2>/dev/null
+       @$(APK) list --size 2>/dev/null
 
 package_install: FORCE
        @echo
        @echo Installing packages...
-       $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/libc_*.ipk $(PACKAGE_DIR)/libc_*.ipk))
-       $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk))
-       $(OPKG) install $(BUILD_PACKAGES)
+       $(APK) add $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc_*.apk))
+       $(APK) add $(firstword $(wildcard $(LINUX_DIR)/kernel-*.apk $(PACKAGE_DIR)/kernel_*.apk))
+       $(APK) add $(BUILD_PACKAGES)
 
 prepare_rootfs: FORCE
        @echo
@@ -237,7 +238,7 @@ endif
 
 image:
        $(MAKE) -s _check_profile
-       $(MAKE) -s _check_keys
+       #$(MAKE) -s _check_keys
        (unset PROFILE FILES PACKAGES MAKEFLAGS; \
        $(MAKE) -s _call_image \
                $(if $(PROFILE),USER_PROFILE="$(PROFILE_FILTER)") \
@@ -248,7 +249,7 @@ image:
 
 manifest: FORCE
        $(MAKE) -s _check_profile
-       $(MAKE) -s _check_keys
+       #$(MAKE) -s _check_keys
        (unset PROFILE FILES PACKAGES MAKEFLAGS; \
        $(MAKE) -s _call_manifest \
                $(if $(PROFILE),USER_PROFILE="$(PROFILE_FILTER)") \
@@ -260,6 +261,6 @@ ifeq ($(PACKAGE),)
        @exit 1
 endif
        @$(MAKE) -s package_reload
-       @$(OPKG) whatdepends -A $(PACKAGE)
+       @$(APK) list --depends $(PACKAGE)
 
 .SILENT: help info image manifest whatdepends