/*.patch
/llvm-bpf*
key-build*
+private-key.pem
+public-key.pem
*.orig
*.rej
*~
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
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
# 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
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
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))
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))
endif
$$(eval $$(call BuildPackage,kmod-$(1)))
- $$(IPKG_kmod-$(1)): $$(wildcard $$(call version_filter,$$(FILES)))
+ $$(APK_kmod-$(1)): $$(wildcard $$(call version_filter,$$(FILES)))
endef
# 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
# 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
# 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
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
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)_$(PKGARCH).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))))
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))
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)
) || 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)),)
@( \
)
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
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 \
+ --no-scripts \
+ --preserve-env \
+ --repository file://$(PACKAGE_DIR_ALL)/packages.adb
TARGET_DIR_ORIG := $(TARGET_ROOTFS_DIR)/root.orig-$(BOARD)
@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; \
+ $(STAGING_DIR_HOST)/bin/tar -xf ./lib/apk/db/scripts.tar --wildcards "*.post-install" -O > script.sh; \
+ chmod +x script.sh; \
+ IPKG_INSTROOT=$(1) $$(command -v bash) script.sh; \
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 \
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))
# Default packages - the really basic set
DEFAULT_PACKAGES:=\
base-files \
+ apk \
ca-bundle \
dropbear \
fstools \
logd \
mtd \
netifd \
- opkg \
uci \
uclient-fetch \
urandom-seed \
$(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)
$(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
[ -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) ] || \
+ $(STAGING_DIR_HOST)/bin/openssl ecparam -name prime256v1 -genkey -noout -out $(BUILD_KEY_APK_SEC); \
+ $(STAGING_DIR_HOST)/bin/openssl ec -in $(BUILD_KEY_APK_SEC) -pubout > $(BUILD_KEY_APK_PUB)
+
endef
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
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)
}
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
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"
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/
fi
done
- return $ret
+ return 0
}
include() {
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
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
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
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)
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
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)
--- /dev/null
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=apk
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_SOURCE_DATE:=2023-01-31
+PKG_SOURCE_VERSION:=6b92da350bfb310e4e0ccfea8e870be476b9c1d7
+PKG_HASH:=a5d0d20ddba877a1dccd46b514c335fc199f74d28527494ca412375e15788fdb
+
+PKG_VERSION:=3.0.0_pre0_$(PKG_SOURCE_DATE)
+PKG_SOURCE:=apk-tools-v$(PKG_SOURCE_VERSION).tar.gz
+PKG_SOURCE_URL:=https://gitlab.alpinelinux.org/alpine/apk-tools/-/archive/$(PKG_SOURCE_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/apk-tools-$(PKG_SOURCE_VERSION)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/apk-tools-$(PKG_SOURCE_VERSION)
+
+PKG_MAINTAINER:=Paul Spooren <mail@aparcar.org>
+PKG_LICENSE:=GPL-2.0-only
+PKG_LICENSE_FILES:=LICENSE
+PKG_INSTALL:=1
+
+HOST_BUILD_PREFIX:=$(STAGING_DIR_HOST)
+HOST_BUILD_DEPENDS:=lua/host
+PKG_BUILD_DEPENDS:=$(HOST_BUILD_DEPENDS)
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/meson.mk
+
+define Package/apk
+ SECTION:=base
+ CATEGORY:=Base system
+ TITLE:=apk package manager
+ DEPENDS:=+zlib +libopenssl +libpthread @!arc
+ URL:=$(PKG_SOURCE_URL)
+endef
+
+MESON_HOST_ARGS += \
+ -Dlua_version=5.1 \
+ -Dcompressed-help=false \
+ -Ddocs=disabled
+MESON_ARGS += \
+ -Dlua_version=5.1 \
+ -Dcompressed-help=false \
+ -Ddocs=disabled
+
+HOST_LDFLAGS += \
+ -Wl,-rpath $(STAGING_DIR_HOST)/lib \
+ -lpthread
+
+TARGET_CFLAGS += $(FPIC)
+HOST_CFLAGS += $(HOST_FPIC)
+
+define Package/apk/install
+ $(INSTALL_DIR) $(1)/lib/apk/db
+
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/apk $(1)/usr/bin/apk
+
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libapk.so.* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,apk))
+$(eval $(call HostBuild))
--- /dev/null
+From 9918c683fcc2f148328332d58d030ec5750a1473 Mon Sep 17 00:00:00 2001
+From: Paul Spooren <mail@aparcar.org>
+Date: Sat, 19 Feb 2022 17:20:37 +0100
+Subject: [PATCH 1/4] openwrt: move layer db to temp folder
+
+Signed-off-by: Paul Spooren <mail@aparcar.org>
+---
+ src/database.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/database.c b/src/database.c
+index 6758e98..d8bcdfa 100644
+--- a/src/database.c
++++ b/src/database.c
+@@ -1621,7 +1621,7 @@ const char *apk_db_layer_name(int layer)
+ {
+ switch (layer) {
+ case APK_DB_LAYER_ROOT: return "lib/apk/db";
+- case APK_DB_LAYER_UVOL: return "lib/apk/db-uvol";
++ case APK_DB_LAYER_UVOL: return "tmp/run/uvol/.meta/apk";
+ default:
+ assert("invalid layer");
+ return 0;
+--
+2.35.1
+
--- /dev/null
+From 091488909354d3f6aabb3fe98379be9025ad04c1 Mon Sep 17 00:00:00 2001
+From: Paul Spooren <mail@aparcar.org>
+Date: Tue, 1 Feb 2022 09:30:20 +0100
+Subject: [PATCH 2/4] change naming to <name>_<version>_<arch>.apk
+
+OpenWrt allows dashes in package names but no underlines. The current
+cleanup mechanism in the build system uses those underlines to find
+suiting packages to cleanup via `<pkgname>_*.apk`.
+
+Also add the package architecture to package filenames. This allows a
+better overview when downloading packages manually i.e. from a CI.
+
+Signed-off-by: Paul Spooren <mail@aparcar.org>
+---
+ src/apk_package.h | 4 ++--
+ src/app_mkpkg.c | 2 +-
+ src/database.c | 6 ++++--
+ 3 files changed, 7 insertions(+), 5 deletions(-)
+
+diff --git a/src/apk_package.h b/src/apk_package.h
+index 8d9cba4..8cd33d8 100644
+--- a/src/apk_package.h
++++ b/src/apk_package.h
+@@ -102,8 +102,8 @@ APK_ARRAY(apk_package_array, struct apk_package *);
+ #define APK_PROVIDER_FROM_PACKAGE(pkg) (struct apk_provider){(pkg),(pkg)->version}
+ #define APK_PROVIDER_FROM_PROVIDES(pkg,p) (struct apk_provider){(pkg),(p)->version}
+
+-#define PKG_VER_FMT "%s-" BLOB_FMT
+-#define PKG_VER_PRINTF(pkg) pkg->name->name, BLOB_PRINTF(*pkg->version)
++#define PKG_VER_FMT "%s_" BLOB_FMT "_" BLOB_FMT
++#define PKG_VER_PRINTF(pkg) pkg->name->name, BLOB_PRINTF(*pkg->version), BLOB_PRINTF(*pkg->arch)
+ #define PKG_FILE_FMT PKG_VER_FMT ".apk"
+ #define PKG_FILE_PRINTF(pkg) PKG_VER_PRINTF(pkg)
+
+diff --git a/src/app_mkpkg.c b/src/app_mkpkg.c
+index e085090..a238250 100644
+--- a/src/app_mkpkg.c
++++ b/src/app_mkpkg.c
+@@ -213,7 +213,7 @@ static char *pkgi_filename(struct adb_obj *pkgi, char *buf, size_t n)
+ {
+ apk_blob_t to = APK_BLOB_PTR_LEN(buf, n);
+ apk_blob_push_blob(&to, adb_ro_blob(pkgi, ADBI_PI_NAME));
+- apk_blob_push_blob(&to, APK_BLOB_STR("-"));
++ apk_blob_push_blob(&to, APK_BLOB_STR("_"));
+ apk_blob_push_blob(&to, adb_ro_blob(pkgi, ADBI_PI_VERSION));
+ apk_blob_push_blob(&to, APK_BLOB_STR(".apk"));
+ apk_blob_push_blob(&to, APK_BLOB_PTR_LEN("", 1));
+diff --git a/src/database.c b/src/database.c
+index d8bcdfa..8fbcd25 100644
+--- a/src/database.c
++++ b/src/database.c
+@@ -561,10 +561,12 @@ struct apk_package *apk_db_pkg_add(struct apk_database *db, struct apk_package *
+
+ static int apk_pkg_format_cache_pkg(apk_blob_t to, struct apk_package *pkg)
+ {
+- /* pkgname-1.0_alpha1.12345678.apk */
++ /* pkgname_1.0_alpha1.12345678.apk */
+ apk_blob_push_blob(&to, APK_BLOB_STR(pkg->name->name));
+- apk_blob_push_blob(&to, APK_BLOB_STR("-"));
++ apk_blob_push_blob(&to, APK_BLOB_STR("_"));
+ apk_blob_push_blob(&to, *pkg->version);
++ apk_blob_push_blob(&to, APK_BLOB_STR("_"));
++ apk_blob_push_blob(&to, *pkg->arch);
+ apk_blob_push_blob(&to, APK_BLOB_STR("."));
+ apk_blob_push_hexdump(&to, APK_BLOB_PTR_LEN((char *) pkg->csum.data,
+ APK_CACHE_CSUM_BYTES));
+--
+2.35.1
+
--- /dev/null
+From c62fdcd9c931f5923abc5ffdecd4e2883a31e9ef Mon Sep 17 00:00:00 2001
+From: Paul Spooren <mail@aparcar.org>
+Date: Tue, 29 Mar 2022 15:44:37 +0100
+Subject: [PATCH 3/4] WIP: use opkg version compare algorithm
+
+Signed-off-by: Paul Spooren <mail@aparcar.org>
+---
+ src/version.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 68 insertions(+), 2 deletions(-)
+
+diff --git a/src/version.c b/src/version.c
+index f93e4c5..9e0a84c 100644
+--- a/src/version.c
++++ b/src/version.c
+@@ -12,6 +12,70 @@
+ #include "apk_defines.h"
+ #include "apk_version.h"
+
++/*
++ * libdpkg - Debian packaging suite library routines
++ * vercmp.c - comparison of version numbers
++ *
++ * Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk>
++ */
++
++/* assume ascii; warning: evaluates x multiple times! */
++#define order(x) ((x) == '~' ? -1 \
++ : isdigit((x)) ? 0 \
++ : !(x) ? 0 \
++ : isalpha((x)) ? (x) \
++ : (x) + 256)
++
++static int verrevcmp(apk_blob_t a, apk_blob_t b)
++{
++ char *val = a.ptr;
++ char *ref = b.ptr;
++
++ if (!val)
++ val = "";
++ if (!ref)
++ ref = "";
++
++ while ((val - a.ptr) < a.len || (ref - b.ptr) < b.len) {
++ int first_diff = 0;
++
++ while ((((val - a.ptr) < a.len) && !isdigit(*val)) || (((ref - b.ptr) < b.len) && !isdigit(*ref))) {
++ int vc = order(*val), rc = order(*ref);
++ if (vc != rc) {
++ if (vc - rc)
++ return APK_VERSION_LESS;
++ else
++ return APK_VERSION_GREATER;
++ }
++ val++;
++ ref++;
++ }
++
++ while (*val == '0')
++ val++;
++ while (*ref == '0')
++ ref++;
++ while (isdigit(*val) && isdigit(*ref)) {
++ if (!first_diff)
++ first_diff = *val - *ref;
++ val++;
++ ref++;
++ }
++ if (isdigit(*val))
++ return APK_VERSION_GREATER;
++ if (isdigit(*ref))
++ return APK_VERSION_LESS;
++ if (first_diff) {
++ if (first_diff > 0)
++ return APK_VERSION_GREATER;
++ else
++ return APK_VERSION_LESS;
++ }
++
++ }
++ return APK_VERSION_EQUAL;
++}
++
+ /* Gentoo version: {digit}{.digit}...{letter}{_suf{#}}...{-r#} */
+
+ enum PARTS {
+@@ -192,6 +256,7 @@ int apk_version_result_mask(const char *op)
+
+ int apk_version_validate(apk_blob_t ver)
+ {
++ return 1;
+ int t = TOKEN_DIGIT;
+
+ while (t != TOKEN_END && t != TOKEN_INVALID)
+@@ -251,10 +316,11 @@ int apk_version_compare_blob_fuzzy(apk_blob_t a, apk_blob_t b, int fuzzy)
+
+ int apk_version_compare_blob(apk_blob_t a, apk_blob_t b)
+ {
+- return apk_version_compare_blob_fuzzy(a, b, FALSE);
++ return verrevcmp(a, b);
++ // return apk_version_compare_blob_fuzzy(a, b, FALSE);
+ }
+
+ int apk_version_compare(const char *str1, const char *str2)
+ {
+- return apk_version_compare_blob(APK_BLOB_STR(str1), APK_BLOB_STR(str2));
++ return verrevcmp(APK_BLOB_STR(str1), APK_BLOB_STR(str2));
+ }
+--
+2.35.1
+
}
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
HOST_LDFLAGS:=-L$(STAGING_DIR_HOST)/lib $(if $(IS_PACKAGE_BUILD),-L$(STAGING_DIR_HOSTPKG)/lib -L$(STAGING_DIR)/host/lib)
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
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";
}
-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:
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
$(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
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) -L $(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; \
$(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))"; \
# 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 \
--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
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
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)") \
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)") \
@exit 1
endif
@$(MAKE) -s package_reload
- @$(OPKG) whatdepends -A $(PACKAGE)
+ @$(APK) list --depends $(PACKAGE)
package_depends: FORCE
ifeq ($(PACKAGE),)