build: add APK package build capabilities
A new option called `USE_APK` is added which generated APK packages (.apk) instead of OPKG packages (.ipk). Some features like fstools `snapshot` command are not yet ported Signed-off-by: Paul Spooren <mail@aparcar.org>
This commit is contained in:
@@ -22,6 +22,8 @@ IB_IDIR:=$(patsubst $(TOPDIR)/%,$(PKG_BUILD_DIR)/%,$(STAGING_DIR_IMAGE))
|
||||
BUNDLER_PATH := $(subst $(space),:,$(filter-out $(TOPDIR)/%,$(subst :,$(space),$(PATH))))
|
||||
BUNDLER_COMMAND := PATH=$(BUNDLER_PATH) $(XARGS) $(SCRIPT_DIR)/bundle-libraries.sh $(PKG_BUILD_DIR)/staging_dir/host
|
||||
|
||||
PACKAGE_SUFFIX:=$(if $(CONFIG_USE_APK),apk,ipk)
|
||||
|
||||
all: compile
|
||||
|
||||
$(BIN_DIR)/$(IB_NAME).tar.zst: clean
|
||||
@@ -35,18 +37,21 @@ $(BIN_DIR)/$(IB_NAME).tar.zst: 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
|
||||
endif
|
||||
|
||||
$(INSTALL_DIR) $(PKG_BUILD_DIR)/packages
|
||||
|
||||
ifeq ($(CONFIG_IB_STANDALONE),)
|
||||
ifneq ($(CONFIG_USE_APK),)
|
||||
$(call FeedSourcesAppendAPK,$(PKG_BUILD_DIR)/repositories)
|
||||
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories
|
||||
else
|
||||
echo '## Remote package repositories' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
$(call FeedSourcesAppendOPKG,$(PKG_BUILD_DIR)/repositories.conf)
|
||||
$(VERSION_SED_SCRIPT) $(PKG_BUILD_DIR)/repositories.conf
|
||||
|
||||
# create an empty package index so `opkg` doesn't report an error
|
||||
touch $(PKG_BUILD_DIR)/packages/Packages
|
||||
$(INSTALL_DATA) ./files/README.md $(PKG_BUILD_DIR)/packages/
|
||||
@@ -54,28 +59,32 @@ endif
|
||||
echo '' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
echo '## This is the local package repository, do not remove!' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
echo 'src imagebuilder file:packages' >> $(PKG_BUILD_DIR)/repositories.conf
|
||||
endif
|
||||
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_*.$(PACKAGE_SUFFIX)' -or -name 'kernel_*.$(PACKAGE_SUFFIX)' -or -name 'kmod-*.$(PACKAGE_SUFFIX)' \) \
|
||||
-exec $(CP) -t $(PKG_BUILD_DIR)/packages {} +
|
||||
else
|
||||
$(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.ipk' \
|
||||
$(FIND) $(wildcard $(PACKAGE_SUBDIRS)) -type f -name '*.$(PACKAGE_SUFFIX)' \
|
||||
-exec $(CP) -t $(PKG_BUILD_DIR)/packages/ {} +
|
||||
endif
|
||||
else
|
||||
$(FIND) $(call FeedPackageDir,libc) -type f \
|
||||
\( -name 'libc_*.ipk' -or -name 'kernel_*.ipk' \) \
|
||||
\( -name 'libc_*.$(PACKAGE_SUFFIX)' -or -name 'kernel_*.$(PACKAGE_SUFFIX)' \) \
|
||||
-exec $(CP) -t $(IB_LDIR)/ {} +
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_USE_APK),y)
|
||||
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
|
||||
endif
|
||||
|
||||
$(CP) -L $(TOPDIR)/target/linux/Makefile $(PKG_BUILD_DIR)/target/linux
|
||||
|
||||
@@ -85,6 +85,8 @@ 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 \
|
||||
@@ -92,6 +94,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
|
||||
|
||||
@@ -152,20 +159,25 @@ _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 --quiet --manifest --no-network
|
||||
|
||||
package_index: FORCE
|
||||
@echo >&2
|
||||
@echo Building package index... >&2
|
||||
@mkdir -p $(TMP_DIR) $(TARGET_DIR)/tmp
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
(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
|
||||
else
|
||||
(cd $(PACKAGE_DIR); $(APK) mkndx --output packages.adb *.apk) >&2
|
||||
endif
|
||||
|
||||
package_reload:
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
if [ -d "$(PACKAGE_DIR)" ] && ( \
|
||||
[ ! -f "$(PACKAGE_DIR)/Packages" ] || \
|
||||
[ ! -f "$(PACKAGE_DIR)/Packages.gz" ] || \
|
||||
@@ -176,29 +188,48 @@ package_reload:
|
||||
mkdir -p $(TARGET_DIR)/tmp; \
|
||||
$(OPKG) update >&2 || true; \
|
||||
fi
|
||||
else
|
||||
if [ -d "$(PACKAGE_DIR)" ] && ( \
|
||||
[ ! -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; \
|
||||
$(APK) update >&2 || true; \
|
||||
fi
|
||||
endif
|
||||
|
||||
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...
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
$(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)
|
||||
else
|
||||
$(APK) add --initdb --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)
|
||||
endif
|
||||
|
||||
prepare_rootfs: FORCE
|
||||
@echo
|
||||
@echo Finalizing root filesystem...
|
||||
|
||||
$(CP) $(TARGET_DIR) $(TARGET_DIR_ORIG)
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
$(if $(CONFIG_SIGNATURE_CHECK), \
|
||||
$(if $(ADD_LOCAL_KEY), \
|
||||
OPKG_KEYS=$(TARGET_DIR)/etc/opkg/keys/ \
|
||||
$(SCRIPT_DIR)/opkg-key add $(BUILD_KEY).pub \
|
||||
) \
|
||||
)
|
||||
endif
|
||||
$(call prepare_rootfs,$(TARGET_DIR),$(USER_FILES),$(DISABLED_SERVICES))
|
||||
|
||||
build_image: FORCE
|
||||
@@ -245,6 +276,9 @@ ifneq ($(PROFILE),)
|
||||
endif
|
||||
|
||||
_check_keys: FORCE
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
# TODO
|
||||
else
|
||||
ifneq ($(CONFIG_SIGNATURE_CHECK),)
|
||||
@if [ ! -s $(BUILD_KEY) -o ! -s $(BUILD_KEY).pub ]; then \
|
||||
echo Generate local signing keys... >&2; \
|
||||
@@ -260,6 +294,7 @@ ifneq ($(CONFIG_SIGNATURE_CHECK),)
|
||||
-s $(BUILD_KEY); \
|
||||
fi
|
||||
endif
|
||||
endif
|
||||
|
||||
image:
|
||||
$(MAKE) -s _check_profile
|
||||
@@ -287,7 +322,11 @@ ifeq ($(PACKAGE),)
|
||||
@exit 1
|
||||
endif
|
||||
@$(MAKE) -s package_reload
|
||||
@$(OPKG) whatdepends -A $(PACKAGE)
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
@$(OPKG) list --depends $(PACKAGE)
|
||||
else
|
||||
@$(APK) list --depends $(PACKAGE)
|
||||
endif
|
||||
|
||||
package_depends: FORCE
|
||||
ifeq ($(PACKAGE),)
|
||||
@@ -295,7 +334,10 @@ ifeq ($(PACKAGE),)
|
||||
@exit 1
|
||||
endif
|
||||
@$(MAKE) -s package_reload
|
||||
ifeq ($(CONFIG_USE_APK),)
|
||||
@$(OPKG) depends -A $(PACKAGE)
|
||||
|
||||
else
|
||||
@$(OPKG) whatdepends -A $(PACKAGE)
|
||||
endif
|
||||
|
||||
.SILENT: help info image manifest package_whatdepends package_depends
|
||||
|
||||
Reference in New Issue
Block a user