imagebuilder: fix APK for packages dir and cache

This commit solves multiple issues. First of just install the three
special packages base-files, libc and kernel directly from the index. In
upstream indexes, those will never appear to prevent accidental upgrades
may breaking the system.

Next, enable caching for the ImageBuilder, which speeds up consecutive
builds from ~33 seconds to ~5 seconds. Using cache however makes APK
create the folder `/var/cache/apk/` which conflicts with the base-files
installation, which ships a symlink from `/var` to `/tmp`, so specify
`--no-cache` for the rootfs initialization.

Lastly, drop the use of `apk update` since APK automatically does that.

Signed-off-by: Paul Spooren <mail@aparcar.org>
This commit is contained in:
Paul Spooren 2024-11-01 12:33:49 +01:00
parent 15de218a56
commit ad1c1b7047
4 changed files with 11 additions and 10 deletions

View File

@ -48,7 +48,6 @@ apk = \
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk \ $(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk \
--root $(1) \ --root $(1) \
--keys-dir $(if $(APK_KEYS),$(APK_KEYS),$(TOPDIR)) \ --keys-dir $(if $(APK_KEYS),$(APK_KEYS),$(TOPDIR)) \
--no-cache \
--no-logfile \ --no-logfile \
--preserve-env --preserve-env

View File

@ -98,7 +98,7 @@ $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(curdir)/merge-index
ifneq ($(CONFIG_USE_APK),) ifneq ($(CONFIG_USE_APK),)
$(file >$(TMP_DIR)/apk_install_list,\ $(file >$(TMP_DIR)/apk_install_list,\
$(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg)))) $(foreach pkg,$(shell cat $(PACKAGE_INSTALL_FILES) 2>/dev/null),$(pkg)$(call GetABISuffix,$(pkg))))
$(call apk,$(TARGET_DIR)) add --initdb --no-scripts --arch $(ARCH_PACKAGES) \ $(call apk,$(TARGET_DIR)) add --no-cache --initdb --no-scripts --arch $(ARCH_PACKAGES) \
--repositories-file /dev/zero --repository file://$(PACKAGE_DIR_ALL)/packages.adb \ --repositories-file /dev/zero --repository file://$(PACKAGE_DIR_ALL)/packages.adb \
$$(cat $(TMP_DIR)/apk_install_list) $$(cat $(TMP_DIR)/apk_install_list)
else else
@ -130,7 +130,7 @@ ifneq ($(CONFIG_USE_APK),)
--keys-dir $(TOPDIR) \ --keys-dir $(TOPDIR) \
--sign $(BUILD_KEY_APK_SEC) \ --sign $(BUILD_KEY_APK_SEC) \
--output packages.adb \ --output packages.adb \
$$(ls *.apk | grep -v 'kernel\|libc'); \ $$(ls *.apk | grep -v 'base-files\|kernel\|libc'); \
done done
else else
@for d in $(PACKAGE_SUBDIRS); do ( \ @for d in $(PACKAGE_SUBDIRS); do ( \

View File

@ -71,7 +71,10 @@ endif
ifeq ($(CONFIG_BUILDBOT),) ifeq ($(CONFIG_BUILDBOT),)
ifeq ($(CONFIG_IB_STANDALONE),) ifeq ($(CONFIG_IB_STANDALONE),)
$(FIND) $(call FeedPackageDir,libc) -type f \ $(FIND) $(call FeedPackageDir,libc) -type f \
\( -name 'libc*.$(PACKAGE_SUFFIX)' -or -name 'kernel*.$(PACKAGE_SUFFIX)' -or -name 'kmod-*.$(PACKAGE_SUFFIX)' \) \ \( \
-name 'base-files*.$(PACKAGE_SUFFIX)' -or \
-name 'libc*.$(PACKAGE_SUFFIX)' -or \
-name 'kernel*.$(PACKAGE_SUFFIX)' \) \
-exec $(CP) -t $(PKG_BUILD_DIR)/packages {} + -exec $(CP) -t $(PKG_BUILD_DIR)/packages {} +
else else
$(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.$(PACKAGE_SUFFIX)' \ $(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.$(PACKAGE_SUFFIX)' \
@ -79,7 +82,10 @@ ifeq ($(CONFIG_BUILDBOT),)
endif endif
else else
$(FIND) $(call FeedPackageDir,libc) -type f \ $(FIND) $(call FeedPackageDir,libc) -type f \
\( -name 'libc*.$(PACKAGE_SUFFIX)' -or -name 'kernel*.$(PACKAGE_SUFFIX)' \) \ \( \
-name 'base-files*.$(PACKAGE_SUFFIX)' -or \
-name 'libc*.$(PACKAGE_SUFFIX)' -or \
-name 'kernel*.$(PACKAGE_SUFFIX)' \) \
-exec $(CP) -t $(IB_LDIR)/ {} + -exec $(CP) -t $(IB_LDIR)/ {} +
endif endif

View File

@ -185,7 +185,6 @@ else
(cd $(PACKAGE_DIR); $(APK) mkndx \ (cd $(PACKAGE_DIR); $(APK) mkndx \
$(if $(CONFIG_SIGNATURE_CHECK), --keys-dir $(APK_KEYS) --sign $(BUILD_KEY_APK_SEC)) \ $(if $(CONFIG_SIGNATURE_CHECK), --keys-dir $(APK_KEYS) --sign $(BUILD_KEY_APK_SEC)) \
--allow-untrusted --output packages.adb *.apk) >/dev/null 2>/dev/null || true --allow-untrusted --output packages.adb *.apk) >/dev/null 2>/dev/null || true
$(APK) update >&2 || true
endif endif
package_reload: package_reload:
@ -208,7 +207,6 @@ else
$(MAKE) package_index; \ $(MAKE) package_index; \
else \ else \
mkdir -p $(TARGET_DIR)/tmp; \ mkdir -p $(TARGET_DIR)/tmp; \
$(APK) update >&2 || true; \
fi fi
endif endif
@ -228,8 +226,6 @@ ifeq ($(CONFIG_USE_APK),)
$(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk)) $(OPKG) install $(firstword $(wildcard $(LINUX_DIR)/kernel_*.ipk $(PACKAGE_DIR)/kernel_*.ipk))
$(OPKG) install $(BUILD_PACKAGES) $(OPKG) install $(BUILD_PACKAGES)
else else
$(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/libc-*.apk $(PACKAGE_DIR)/libc-*.apk))
$(APK) add --no-scripts $(firstword $(wildcard $(LINUX_DIR)/kernel-*.apk $(PACKAGE_DIR)/kernel-*.apk))
$(APK) add --no-scripts $(BUILD_PACKAGES) $(APK) add --no-scripts $(BUILD_PACKAGES)
endif endif