2020-09-22 02:48:37 +00:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
2011-12-05 17:27:00 +00:00
|
|
|
#
|
2024-05-14 10:36:59 +00:00
|
|
|
# Copyright (C) 2006-2022 OpenWrt.org
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2016-06-16 09:56:14 +00:00
|
|
|
ifndef DUMP
|
|
|
|
include $(INCLUDE_DIR)/feeds.mk
|
|
|
|
endif
|
2014-08-05 11:24:24 +00:00
|
|
|
|
2009-01-29 20:13:01 +00:00
|
|
|
IPKG_STATE_DIR:=$(TARGET_DIR)/usr/lib/opkg
|
|
|
|
|
2024-11-17 18:09:31 +00:00
|
|
|
define description_escape
|
|
|
|
$(subst `,\`,$(subst $$,\$$,$(subst ",\",$(subst \,\\,$(1)))))
|
|
|
|
endef
|
|
|
|
|
2020-02-20 21:29:04 +00:00
|
|
|
# Generates a make statement to return a wildcard for candidate ipkg files
|
|
|
|
# 1: package name
|
2024-05-14 10:36:59 +00:00
|
|
|
define gen_package_wildcard
|
2025-07-15 18:47:31 +00:00
|
|
|
$(1)$$(if $$(filter -%,$$(ABIV_$(1))),,[^a-z$(if $(CONFIG_USE_APK),,-)])*
|
2020-02-20 21:29:03 +00:00
|
|
|
endef
|
|
|
|
|
2025-07-24 17:09:04 +00:00
|
|
|
# 1: command and initial arguments
|
|
|
|
# 2: arguments list
|
|
|
|
# 3: tmp filename
|
|
|
|
define maybe_use_xargs
|
|
|
|
$(if $(word 512,$(2)), \
|
|
|
|
$(file >$(3),$(2)) $(XARGS) $(1) < "$(3)"; rm "$(3)", \
|
|
|
|
$(1) $(2))
|
|
|
|
endef
|
|
|
|
|
2020-02-20 21:29:02 +00:00
|
|
|
# 1: package name
|
|
|
|
# 2: candidate ipk files
|
|
|
|
define remove_ipkg_files
|
2025-07-24 17:09:04 +00:00
|
|
|
$(if $(strip $(2)), \
|
|
|
|
$(call maybe_use_xargs,$(SCRIPT_DIR)/ipkg-remove $(1),$(2),$(TMP_DIR)/$(1).in))
|
2020-02-20 21:29:02 +00:00
|
|
|
endef
|
|
|
|
|
2014-10-24 09:24:51 +00:00
|
|
|
# 1: package name
|
|
|
|
# 2: variable name
|
|
|
|
# 3: variable suffix
|
2015-03-31 15:13:27 +00:00
|
|
|
# 4: file is a script
|
2024-05-14 10:36:59 +00:00
|
|
|
define BuildPackVariable
|
2011-04-03 02:07:59 +00:00
|
|
|
ifdef Package/$(1)/$(2)
|
2024-05-14 10:36:59 +00:00
|
|
|
$$(PACK_$(1)) : VAR_$(2)$(3)=$$(Package/$(1)/$(2))
|
2014-10-24 09:24:51 +00:00
|
|
|
$(call shexport,Package/$(1)/$(2))
|
2015-03-31 18:31:08 +00:00
|
|
|
$(1)_COMMANDS += echo "$$$$$$$$$(call shvar,Package/$(1)/$(2))" > $(2)$(3); $(if $(4),chmod 0755 $(2)$(3);)
|
2011-04-03 02:07:59 +00:00
|
|
|
endif
|
2007-03-15 23:57:18 +00:00
|
|
|
endef
|
|
|
|
|
2010-03-28 19:22:59 +00:00
|
|
|
PARENL :=(
|
|
|
|
PARENR :=)
|
|
|
|
|
2008-10-03 14:37:55 +00:00
|
|
|
dep_split=$(subst :,$(space),$(1))
|
2010-03-28 19:22:59 +00:00
|
|
|
dep_rem=$(subst !,,$(subst $(strip $(PARENL)),,$(subst $(strip $(PARENR)),,$(word 1,$(call dep_split,$(1))))))
|
2019-04-24 22:29:43 +00:00
|
|
|
dep_and=dep_and_res:=$$(and $(subst $(space),$(comma),$(foreach cond,$(subst &&, ,$(1)),$$(CONFIG_$(cond)))))
|
|
|
|
dep_confvar=$(strip $(foreach cond,$(subst ||, ,$(call dep_rem,$(1))),$(eval $(call dep_and,$(cond)))$(dep_and_res)))
|
2010-03-28 19:22:59 +00:00
|
|
|
dep_pos=$(if $(call dep_confvar,$(1)),$(call dep_val,$(1)))
|
|
|
|
dep_neg=$(if $(call dep_confvar,$(1)),,$(call dep_val,$(1)))
|
|
|
|
dep_if=$(if $(findstring !,$(1)),$(call dep_neg,$(1)),$(call dep_pos,$(1)))
|
2008-10-03 14:37:55 +00:00
|
|
|
dep_val=$(word 2,$(call dep_split,$(1)))
|
2008-10-27 17:24:27 +00:00
|
|
|
strip_deps=$(strip $(subst +,,$(filter-out @%,$(1))))
|
2010-03-28 19:22:59 +00:00
|
|
|
filter_deps=$(foreach dep,$(call strip_deps,$(1)),$(if $(findstring :,$(dep)),$(call dep_if,$(dep)),$(dep)))
|
2008-10-03 14:37:55 +00:00
|
|
|
|
2012-06-10 20:27:41 +00:00
|
|
|
define AddDependency
|
2024-05-14 10:36:59 +00:00
|
|
|
$$(if $(1),$$(if $(2),$$(foreach pkg,$(1),$$(PACK_$$(pkg))): $$(foreach pkg,$(2),$$(PACK_$$(pkg)))))
|
2012-06-10 20:27:41 +00:00
|
|
|
endef
|
|
|
|
|
|
|
|
define FixupReverseDependencies
|
|
|
|
DEPS := $$(filter %:$(1),$$(IDEPEND))
|
|
|
|
DEPS := $$(patsubst %:$(1),%,$$(DEPS))
|
|
|
|
DEPS := $$(filter $$(DEPS),$$(IPKGS))
|
|
|
|
$(call AddDependency,$$(DEPS),$(1))
|
|
|
|
endef
|
|
|
|
|
|
|
|
define FixupDependencies
|
|
|
|
DEPS := $$(filter $(1):%,$$(IDEPEND))
|
|
|
|
DEPS := $$(patsubst $(1):%,%,$$(DEPS))
|
|
|
|
DEPS := $$(filter $$(DEPS),$$(IPKGS))
|
|
|
|
$(call AddDependency,$(1),$$(DEPS))
|
|
|
|
endef
|
|
|
|
|
2012-06-11 00:57:36 +00:00
|
|
|
ifneq ($(PKG_NAME),toolchain)
|
|
|
|
define CheckDependencies
|
|
|
|
@( \
|
|
|
|
rm -f $(PKG_INFO_DIR)/$(1).missing; \
|
|
|
|
( \
|
2013-07-18 11:18:37 +00:00
|
|
|
export \
|
|
|
|
READELF=$(TARGET_CROSS)readelf \
|
|
|
|
OBJCOPY=$(TARGET_CROSS)objcopy \
|
|
|
|
XARGS="$(XARGS)"; \
|
2012-06-11 00:57:36 +00:00
|
|
|
$(SCRIPT_DIR)/gen-dependencies.sh "$$(IDIR_$(1))"; \
|
|
|
|
) | while read FILE; do \
|
2015-02-03 10:11:06 +00:00
|
|
|
grep -qxF "$$$$FILE" $(PKG_INFO_DIR)/$(1).provides || \
|
2012-06-11 00:57:36 +00:00
|
|
|
echo "$$$$FILE" >> $(PKG_INFO_DIR)/$(1).missing; \
|
|
|
|
done; \
|
|
|
|
if [ -f "$(PKG_INFO_DIR)/$(1).missing" ]; then \
|
2013-07-18 11:29:18 +00:00
|
|
|
echo "Package $(1) is missing dependencies for the following libraries:" >&2; \
|
|
|
|
cat "$(PKG_INFO_DIR)/$(1).missing" >&2; \
|
2012-06-11 00:57:36 +00:00
|
|
|
false; \
|
|
|
|
fi; \
|
|
|
|
)
|
|
|
|
endef
|
|
|
|
endif
|
|
|
|
|
2014-10-22 08:57:16 +00:00
|
|
|
_addsep=$(word 1,$(1))$(foreach w,$(wordlist 2,$(words $(1)),$(1)),$(strip $(2) $(w)))
|
|
|
|
_cleansep=$(subst $(space)$(2)$(space),$(2)$(space),$(1))
|
|
|
|
mergelist=$(call _cleansep,$(call _addsep,$(1),$(comma)),$(comma))
|
|
|
|
addfield=$(if $(strip $(2)),$(1): $(2))
|
|
|
|
_define=define
|
|
|
|
_endef=endef
|
|
|
|
|
2007-03-15 23:57:18 +00:00
|
|
|
ifeq ($(DUMP),)
|
2007-09-28 01:23:56 +00:00
|
|
|
define BuildTarget/ipkg
|
2021-06-14 12:58:37 +00:00
|
|
|
ABIV_$(1):=$(call FormatABISuffix,$(1),$(ABI_VERSION))
|
2016-04-22 10:02:53 +00:00
|
|
|
PDIR_$(1):=$(call FeedPackageDir,$(1))
|
2024-05-14 10:36:59 +00:00
|
|
|
ifeq ($(CONFIG_USE_APK),)
|
|
|
|
PACK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).ipk
|
|
|
|
else
|
|
|
|
PACK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))-$(VERSION).apk
|
|
|
|
endif
|
2009-08-20 14:04:40 +00:00
|
|
|
IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)
|
2024-05-14 10:36:59 +00:00
|
|
|
ADIR_$(1):=$(PKG_BUILD_DIR)/apk-$(PKGARCH)/$(1)
|
2010-10-05 19:20:27 +00:00
|
|
|
KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))
|
2024-11-21 13:34:03 +00:00
|
|
|
|
2025-04-18 18:38:17 +00:00
|
|
|
APK_SCRIPTS_$(1):=
|
|
|
|
|
|
|
|
ifdef Package/$(1)/preinst
|
|
|
|
APK_SCRIPTS_$(1)+=--script "pre-install:$$(ADIR_$(1))/preinst"
|
|
|
|
endif
|
|
|
|
APK_SCRIPTS_$(1)+=--script "post-install:$$(ADIR_$(1))/post-install"
|
|
|
|
|
|
|
|
ifdef Package/$(1)/preinst
|
|
|
|
APK_SCRIPTS_$(1)+=--script "pre-upgrade:$$(ADIR_$(1))/pre-upgrade"
|
|
|
|
endif
|
|
|
|
APK_SCRIPTS_$(1)+=--script "post-upgrade:$$(ADIR_$(1))/post-upgrade"
|
|
|
|
|
|
|
|
APK_SCRIPTS_$(1)+=--script "pre-deinstall:$$(ADIR_$(1))/pre-deinstall"
|
2024-11-21 13:34:03 +00:00
|
|
|
ifdef Package/$(1)/postrm
|
2025-04-18 18:38:17 +00:00
|
|
|
APK_SCRIPTS_$(1)+=--script "post-deinstall:$$(ADIR_$(1))/postrm"
|
2024-11-21 13:34:03 +00:00
|
|
|
endif
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2021-11-03 18:51:32 +00:00
|
|
|
TARGET_VARIANT:=$$(if $(ALL_VARIANTS),$$(if $$(VARIANT),$$(filter-out *,$$(VARIANT)),$(firstword $(ALL_VARIANTS))))
|
2021-10-22 19:12:10 +00:00
|
|
|
ifeq ($(BUILD_VARIANT),$$(if $$(TARGET_VARIANT),$$(TARGET_VARIANT),$(BUILD_VARIANT)))
|
2016-12-07 15:19:08 +00:00
|
|
|
do_install=
|
2007-03-16 06:12:53 +00:00
|
|
|
ifdef Package/$(1)/install
|
2016-12-07 15:19:08 +00:00
|
|
|
do_install=yes
|
|
|
|
endif
|
|
|
|
ifdef Package/$(1)/install-overlay
|
|
|
|
do_install=yes
|
|
|
|
endif
|
|
|
|
ifdef do_install
|
2014-07-02 11:39:28 +00:00
|
|
|
ifneq ($(CONFIG_PACKAGE_$(1))$(DEVELOPER),)
|
2012-06-10 20:27:41 +00:00
|
|
|
IPKGS += $(1)
|
2024-05-14 10:36:59 +00:00
|
|
|
$(_pkg_target)compile: $$(PACK_$(1)) $(PKG_INFO_DIR)/$(1).provides $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
|
|
|
|
prepare-package-install: $$(PACK_$(1))
|
2017-01-18 15:19:03 +00:00
|
|
|
compile: $(STAGING_DIR_ROOT)/stamp/.$(1)_installed
|
2016-10-13 00:54:34 +00:00
|
|
|
else
|
|
|
|
$(if $(CONFIG_PACKAGE_$(1)),$$(info WARNING: skipping $(1) -- package not selected))
|
|
|
|
endif
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2016-10-13 00:54:34 +00:00
|
|
|
.PHONY: $(PKG_INSTALL_STAMP).$(1)
|
|
|
|
ifeq ($(CONFIG_PACKAGE_$(1)),y)
|
2017-02-21 17:27:22 +00:00
|
|
|
compile: $(PKG_INSTALL_STAMP).$(1)
|
2007-03-16 06:12:53 +00:00
|
|
|
endif
|
2017-02-21 17:27:22 +00:00
|
|
|
$(PKG_INSTALL_STAMP).$(1): prepare-package-install
|
|
|
|
echo "$(1)" >> $(PKG_INSTALL_STAMP)
|
2019-06-22 12:02:27 +00:00
|
|
|
else
|
|
|
|
$(if $(CONFIG_PACKAGE_$(1)),$$(warning WARNING: skipping $(1) -- package has no install section))
|
2007-03-16 06:12:53 +00:00
|
|
|
endif
|
2009-11-22 07:08:39 +00:00
|
|
|
endif
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2012-06-10 20:27:41 +00:00
|
|
|
DEPENDS:=$(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS))
|
2008-10-27 17:24:27 +00:00
|
|
|
IDEPEND_$(1):=$$(call filter_deps,$$(DEPENDS))
|
2012-06-10 20:27:41 +00:00
|
|
|
IDEPEND += $$(patsubst %,$(1):%,$$(IDEPEND_$(1)))
|
|
|
|
$(FixupDependencies)
|
|
|
|
$(FixupReverseDependencies)
|
2011-12-05 17:27:00 +00:00
|
|
|
|
2024-05-14 10:36:59 +00:00
|
|
|
$(eval $(call BuildPackVariable,$(1),conffiles))
|
|
|
|
$(eval $(call BuildPackVariable,$(1),preinst,,1))
|
|
|
|
$(eval $(call BuildPackVariable,$(1),postinst,-pkg,1))
|
|
|
|
$(eval $(call BuildPackVariable,$(1),prerm,-pkg,1))
|
|
|
|
$(eval $(call BuildPackVariable,$(1),postrm,,1))
|
2009-08-20 15:48:41 +00:00
|
|
|
|
2017-01-18 15:19:03 +00:00
|
|
|
$(PKG_BUILD_DIR)/.pkgdir/$(1).installed : export PATH=$$(TARGET_PATH_PKG)
|
|
|
|
$(PKG_BUILD_DIR)/.pkgdir/$(1).installed: $(STAMP_BUILT)
|
|
|
|
rm -rf $$@ $(PKG_BUILD_DIR)/.pkgdir/$(1)
|
|
|
|
mkdir -p $(PKG_BUILD_DIR)/.pkgdir/$(1)
|
|
|
|
$(call Package/$(1)/install,$(PKG_BUILD_DIR)/.pkgdir/$(1))
|
|
|
|
$(call Package/$(1)/install_lib,$(PKG_BUILD_DIR)/.pkgdir/$(1))
|
|
|
|
touch $$@
|
|
|
|
|
|
|
|
$(STAGING_DIR_ROOT)/stamp/.$(1)_installed: $(PKG_BUILD_DIR)/.pkgdir/$(1).installed
|
|
|
|
mkdir -p $(STAGING_DIR_ROOT)/stamp
|
2021-02-15 17:53:42 +00:00
|
|
|
$(if $(ABI_VERSION),echo '$(ABI_VERSION)' | cmp -s - $(PKG_INFO_DIR)/$(1).version || { \
|
|
|
|
echo '$(ABI_VERSION)' > $(PKG_INFO_DIR)/$(1).version; \
|
|
|
|
$(foreach pkg,$(filter-out $(1),$(PROVIDES)), \
|
|
|
|
cp $(PKG_INFO_DIR)/$(1).version $(PKG_INFO_DIR)/$(pkg).version; \
|
2021-02-12 10:16:35 +00:00
|
|
|
) \
|
2021-02-15 17:53:42 +00:00
|
|
|
} )
|
2017-01-18 15:19:03 +00:00
|
|
|
$(call locked,$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(STAGING_DIR_ROOT)/,root-copy)
|
2009-08-20 15:48:41 +00:00
|
|
|
touch $$@
|
|
|
|
|
2019-01-17 16:31:09 +00:00
|
|
|
Package/$(1)/DEPENDS := $$(call mergelist,$$(foreach dep,$$(filter-out @%,$$(IDEPEND_$(1))),$$(dep)$$(call GetABISuffix,$$(dep))))
|
2014-10-22 08:57:16 +00:00
|
|
|
ifneq ($$(EXTRA_DEPENDS),)
|
|
|
|
Package/$(1)/DEPENDS := $$(EXTRA_DEPENDS)$$(if $$(Package/$(1)/DEPENDS),$$(comma) $$(Package/$(1)/DEPENDS))
|
|
|
|
endif
|
|
|
|
|
|
|
|
$(_define) Package/$(1)/CONTROL
|
2019-01-17 16:31:09 +00:00
|
|
|
Package: $(1)$$(ABIV_$(1))
|
2014-10-22 08:57:16 +00:00
|
|
|
Version: $(VERSION)
|
|
|
|
$$(call addfield,Depends,$$(Package/$(1)/DEPENDS)
|
|
|
|
)$$(call addfield,Conflicts,$$(call mergelist,$(CONFLICTS))
|
2021-02-18 18:51:05 +00:00
|
|
|
)$$(call addfield,Provides,$$(call mergelist,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), $(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))))
|
2017-03-05 08:19:46 +00:00
|
|
|
)$$(call addfield,Alternatives,$$(call mergelist,$(ALTERNATIVES))
|
2014-10-22 08:57:16 +00:00
|
|
|
)$$(call addfield,Source,$(SOURCE)
|
2023-09-08 12:01:15 +00:00
|
|
|
)$$(call addfield,SourceName,$(PKG_NAME)
|
2017-10-31 20:29:50 +00:00
|
|
|
)$$(call addfield,License,$(LICENSE)
|
|
|
|
)$$(call addfield,LicenseFiles,$(LICENSE_FILES)
|
2014-10-22 08:57:16 +00:00
|
|
|
)$$(call addfield,Section,$(SECTION)
|
|
|
|
)$$(call addfield,Require-User,$(USERID)
|
2020-09-05 09:19:11 +00:00
|
|
|
)$$(call addfield,SourceDateEpoch,$(PKG_SOURCE_DATE_EPOCH)
|
2024-01-06 17:48:46 +00:00
|
|
|
)$$(call addfield,URL,$(URL)
|
2021-03-08 04:09:32 +00:00
|
|
|
)$$(if $$(ABIV_$(1)),ABIVersion: $$(ABIV_$(1))
|
2018-12-16 20:30:20 +00:00
|
|
|
)$(if $(PKG_CPE_ID),CPE-ID: $(PKG_CPE_ID)
|
2014-10-22 08:57:16 +00:00
|
|
|
)$(if $(filter hold,$(PKG_FLAGS)),Status: unknown hold not-installed
|
|
|
|
)$(if $(filter essential,$(PKG_FLAGS)),Essential: yes
|
|
|
|
)$(if $(MAINTAINER),Maintainer: $(MAINTAINER)
|
|
|
|
)Architecture: $(PKGARCH)
|
|
|
|
Installed-Size: 0
|
|
|
|
$(_endef)
|
|
|
|
|
2024-05-14 10:36:59 +00:00
|
|
|
$$(PACK_$(1)) : export CONTROL=$$(Package/$(1)/CONTROL)
|
|
|
|
$$(PACK_$(1)) : export DESCRIPTION=$$(Package/$(1)/description)
|
|
|
|
$$(PACK_$(1)) : export PATH=$$(TARGET_PATH_PKG)
|
|
|
|
$$(PACK_$(1)) : export PKG_SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
|
2025-10-04 18:53:51 +00:00
|
|
|
$$(PACK_$(1)) : export SOURCE_DATE_EPOCH:=$(PKG_SOURCE_DATE_EPOCH)
|
2024-05-14 10:36:59 +00:00
|
|
|
$(PKG_INFO_DIR)/$(1).provides $$(PACK_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-pack.mk
|
|
|
|
rm -rf $$(IDIR_$(1))
|
|
|
|
ifeq ($$(CONFIG_USE_APK),)
|
|
|
|
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_package_wildcard,$(1))))
|
2024-05-22 17:33:52 +00:00
|
|
|
else
|
|
|
|
$$(call remove_ipkg_files,$(1),$$(call apk_package_files,$(call gen_package_wildcard,$(1))))
|
2024-05-14 10:36:59 +00:00
|
|
|
endif
|
|
|
|
mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1)) $(PKG_INFO_DIR)
|
2010-08-19 12:49:46 +00:00
|
|
|
$(call Package/$(1)/install,$$(IDIR_$(1)))
|
2016-12-07 15:19:08 +00:00
|
|
|
$(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay)
|
|
|
|
$(call Package/$(1)/install-overlay,$$(IDIR_$(1))/rootfs-overlay)
|
2011-12-10 22:02:50 +00:00
|
|
|
-find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| $(XARGS) rm -rf
|
2012-06-10 20:27:41 +00:00
|
|
|
@( \
|
2013-07-18 10:47:00 +00:00
|
|
|
find $$(IDIR_$(1)) -name lib\*.so\* -or -name \*.ko | awk -F/ '{ print $$$$NF }'; \
|
2012-06-10 20:27:41 +00:00
|
|
|
for file in $$(patsubst %,$(PKG_INFO_DIR)/%.provides,$$(IDEPEND_$(1))); do \
|
|
|
|
if [ -f "$$$$file" ]; then \
|
|
|
|
cat $$$$file; \
|
|
|
|
fi; \
|
2013-07-18 10:47:00 +00:00
|
|
|
done; $(Package/$(1)/extra_provides) \
|
2012-06-10 20:27:41 +00:00
|
|
|
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
|
2018-07-20 08:40:43 +00:00
|
|
|
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
|
2012-06-11 00:57:36 +00:00
|
|
|
$(CheckDependencies)
|
|
|
|
|
2010-08-19 12:49:46 +00:00
|
|
|
$(RSTRIP) $$(IDIR_$(1))
|
2018-01-17 12:25:43 +00:00
|
|
|
|
2024-06-20 03:49:21 +00:00
|
|
|
ifneq ($$(CONFIG_IPK_FILES_CHECKSUMS),)
|
|
|
|
(cd $$(IDIR_$(1)); \
|
|
|
|
( \
|
|
|
|
find . -type f \! -path ./CONTROL/\* -exec $(MKHASH) sha256 -n \{\} \; 2> /dev/null | \
|
|
|
|
sed 's|\([[:blank:]]\)\./| \1/|' > $$(IDIR_$(1))/CONTROL/files-sha256sum \
|
|
|
|
) || true \
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
2024-05-14 10:36:59 +00:00
|
|
|
ifneq ($$(KEEP_$(1)),)
|
|
|
|
@( \
|
|
|
|
keepfiles=""; \
|
|
|
|
for x in $$(KEEP_$(1)); do \
|
|
|
|
[ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \
|
|
|
|
done; \
|
|
|
|
[ -z "$$$$keepfiles" ] || { \
|
|
|
|
mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \
|
|
|
|
for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \
|
|
|
|
}; \
|
|
|
|
)
|
|
|
|
endif
|
|
|
|
|
|
|
|
$(INSTALL_DIR) $$(PDIR_$(1))/tmp
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_USE_APK),)
|
|
|
|
mkdir -p $$(IDIR_$(1))/CONTROL
|
2014-10-22 08:57:16 +00:00
|
|
|
(cd $$(IDIR_$(1))/CONTROL; \
|
|
|
|
( \
|
|
|
|
echo "$$$$CONTROL"; \
|
2014-10-22 08:57:45 +00:00
|
|
|
printf "Description: "; echo "$$$$DESCRIPTION" | sed -e 's,^[[:space:]]*, ,g'; \
|
2014-10-22 08:57:16 +00:00
|
|
|
) > control; \
|
|
|
|
chmod 644 control; \
|
|
|
|
( \
|
|
|
|
echo "#!/bin/sh"; \
|
|
|
|
echo "[ \"\$$$${IPKG_NO_SCRIPT}\" = \"1\" ] && exit 0"; \
|
2021-01-25 11:48:43 +00:00
|
|
|
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
|
2014-10-22 08:57:16 +00:00
|
|
|
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
|
|
|
|
echo "default_postinst \$$$$0 \$$$$@"; \
|
|
|
|
) > postinst; \
|
|
|
|
( \
|
|
|
|
echo "#!/bin/sh"; \
|
2021-01-25 11:48:43 +00:00
|
|
|
echo "[ -s "\$$$${IPKG_INSTROOT}/lib/functions.sh" ] || exit 0"; \
|
2014-10-22 08:57:16 +00:00
|
|
|
echo ". \$$$${IPKG_INSTROOT}/lib/functions.sh"; \
|
|
|
|
echo "default_prerm \$$$$0 \$$$$@"; \
|
|
|
|
) > prerm; \
|
2015-03-29 07:35:19 +00:00
|
|
|
chmod 0755 postinst prerm; \
|
2007-03-15 23:57:18 +00:00
|
|
|
$($(1)_COMMANDS) \
|
|
|
|
)
|
2010-10-05 19:20:27 +00:00
|
|
|
|
2022-01-27 12:25:39 +00:00
|
|
|
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/bash $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1))
|
2024-05-14 10:36:59 +00:00
|
|
|
else
|
|
|
|
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"; \
|
|
|
|
echo "default_postinst"; \
|
2024-12-30 23:54:55 +00:00
|
|
|
[ ! -f $$(ADIR_$(1))/postinst-pkg ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/postinst-pkg"; \
|
2024-05-14 10:36:59 +00:00
|
|
|
) > $$(ADIR_$(1))/post-install;
|
|
|
|
|
2025-04-18 18:38:17 +00:00
|
|
|
ifdef Package/$(1)/preinst
|
|
|
|
( \
|
|
|
|
echo "#!/bin/sh"; \
|
|
|
|
echo 'export PKG_UPGRADE=1'; \
|
|
|
|
[ ! -f $$(ADIR_$(1))/preinst ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/preinst"; \
|
|
|
|
) > $$(ADIR_$(1))/pre-upgrade;
|
|
|
|
endif
|
|
|
|
|
|
|
|
( \
|
|
|
|
echo "#!/bin/sh"; \
|
|
|
|
echo 'export PKG_UPGRADE=1'; \
|
|
|
|
[ ! -f $$(ADIR_$(1))/post-install ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/post-install"; \
|
|
|
|
) > $$(ADIR_$(1))/post-upgrade;
|
|
|
|
|
2024-05-14 10:36:59 +00:00
|
|
|
( \
|
|
|
|
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)"'; \
|
|
|
|
echo "default_prerm"; \
|
2024-12-30 23:54:55 +00:00
|
|
|
[ ! -f $$(ADIR_$(1))/prerm-pkg ] || sed -z 's/^\s*#!/#!/' "$$(ADIR_$(1))/prerm-pkg"; \
|
2024-05-14 10:36:59 +00:00
|
|
|
) > $$(ADIR_$(1))/pre-deinstall;
|
|
|
|
|
2024-12-30 23:54:55 +00:00
|
|
|
[ ! -f $$(ADIR_$(1))/postrm ] || sed -zi 's/^\s*#!/#!/' "$$(ADIR_$(1))/postrm";
|
|
|
|
|
2024-05-14 10:36:59 +00:00
|
|
|
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;
|
2025-08-26 11:36:54 +00:00
|
|
|
(cd $$(IDIR_$(1)) && find . -type f,l -printf "/%P\n" | sort > $(TMP_DIR)/$(1).list && mv $(TMP_DIR)/$(1).list $$(IDIR_$(1))/lib/apk/packages/$(1).list)
|
2024-05-25 14:00:27 +00:00
|
|
|
# Move conffiles to IDIR and build conffiles_static with csums
|
|
|
|
if [ -f $$(ADIR_$(1))/conffiles ]; then \
|
|
|
|
mv -f $$(ADIR_$(1))/conffiles $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
|
|
|
for file in $$$$(cat $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles); do \
|
|
|
|
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
|
|
|
|
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
|
|
|
|
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
|
|
|
|
done; \
|
|
|
|
fi
|
2024-05-14 10:36:59 +00:00
|
|
|
|
2024-05-22 17:35:35 +00:00
|
|
|
# Some package (base-files) manually append stuff to conffiles
|
|
|
|
# Append stuff from it and delete the CONTROL directory since everything else should be migrated
|
|
|
|
if [ -f $$(IDIR_$(1))/CONTROL/conffiles ]; then \
|
2024-05-25 14:00:27 +00:00
|
|
|
echo $$$$(IDIR_$(1))/CONTROL/conffiles >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles; \
|
|
|
|
for file in $$$$(cat $$(IDIR_$(1))/CONTROL/conffiles); do \
|
|
|
|
[ -f $$(IDIR_$(1))/$$$$file ] || continue; \
|
|
|
|
csum=$$$$($(MKHASH) sha256 $$(IDIR_$(1))/$$$$file); \
|
|
|
|
echo $$$$file $$$$csum >> $$(IDIR_$(1))/lib/apk/packages/$(1).conffiles_static; \
|
|
|
|
done; \
|
2024-05-22 17:35:35 +00:00
|
|
|
rm -rf $$(IDIR_$(1))/CONTROL/conffiles; \
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ -z "$$$$(ls -A $$(IDIR_$(1))/CONTROL 2>/dev/null)" ]; then \
|
|
|
|
rm -rf $$(IDIR_$(1))/CONTROL; \
|
|
|
|
else \
|
|
|
|
echo "CONTROL directory $$(IDIR_$(1))/CONTROL is not empty! This is not right and should be checked!" >&2; \
|
|
|
|
exit 1; \
|
|
|
|
fi
|
|
|
|
|
2024-05-14 10:36:59 +00:00
|
|
|
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/apk mkpkg \
|
|
|
|
--info "name:$(1)$$(ABIV_$(1))" \
|
|
|
|
--info "version:$(VERSION)" \
|
2025-06-09 23:59:13 +00:00
|
|
|
$$(if $$(ABIV_$(1)),--info "tags:openwrt:abiversion=$$(ABIV_$(1))") \
|
2024-11-17 18:09:31 +00:00
|
|
|
--info "description:$$(call description_escape,$$(strip $$(Package/$(1)/description)))" \
|
2024-11-19 12:12:28 +00:00
|
|
|
$(if $(findstring all,$(PKGARCH)),--info "arch:noarch",--info "arch:$(PKGARCH)") \
|
2024-05-14 10:36:59 +00:00
|
|
|
--info "license:$(LICENSE)" \
|
|
|
|
--info "origin:$(SOURCE)" \
|
2024-10-24 10:46:47 +00:00
|
|
|
--info "url:$(URL)" \
|
|
|
|
--info "maintainer:$(MAINTAINER)" \
|
2024-10-27 15:36:33 +00:00
|
|
|
--info "provides:$$(foreach prov,\
|
|
|
|
$$(filter-out $(1)$$(ABIV_$(1)), \
|
|
|
|
$(PROVIDES)$$(if $$(ABIV_$(1)), \
|
|
|
|
$(1)=$(VERSION) $(foreach provide, \
|
|
|
|
$(PROVIDES), \
|
|
|
|
$(provide)$$(ABIV_$(1))=$(VERSION) \
|
|
|
|
) \
|
|
|
|
) \
|
|
|
|
), \
|
|
|
|
$$(prov) )" \
|
2024-11-18 18:55:57 +00:00
|
|
|
$(if $(DEFAULT_VARIANT),--info "provider-priority:100",$(if $(PROVIDES),--info "provider-priority:1")) \
|
2024-11-21 13:34:03 +00:00
|
|
|
$$(APK_SCRIPTS_$(1)) \
|
2024-05-14 10:36:59 +00:00
|
|
|
--info "depends:$$(foreach depends,$$(subst $$(comma),$$(space),$$(subst $$(space),,$$(subst $$(paren_right),,$$(subst $$(paren_left),,$$(Package/$(1)/DEPENDS))))),$$(depends))" \
|
|
|
|
--files "$$(IDIR_$(1))" \
|
package: do not sign individual APK packages
APK, unlike OPKG, can sign individual packages and not just indexes.
Since OpenWrt uses a distributed build infrastructure and only the build
master owns the private keys, signing of individual buildworkers doesn't
work. Right now, each buildworker creates a temporary build key to sign
packages, then transmits the package index to the buildmaster for a
signature.
As a result, all individual packages contain a nonsensical signature,
making them harder to reproduce. This commit removes the individual
package signing.
Since APK requires signatures per default, explicitly allow installation
of unsigned packages during the build process.
The config option here is for historical reasons misleading,
SIGNED_PACKAGES refers to the package index, not the individual
packages.
Signed-off-by: Paul Spooren <mail@aparcar.org>
2025-10-08 09:42:51 +00:00
|
|
|
--output "$$(PACK_$(1))"
|
2024-05-14 10:36:59 +00:00
|
|
|
endif
|
|
|
|
|
|
|
|
@[ -f $$(PACK_$(1)) ]
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2007-03-16 06:12:53 +00:00
|
|
|
$(1)-clean:
|
2024-05-14 10:36:59 +00:00
|
|
|
ifeq ($(CONFIG_USE_APK),)
|
|
|
|
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_package_wildcard,$(1))))
|
|
|
|
else
|
|
|
|
$$(call remove_ipkg_files,$(1),$$(call apk_package_files,$(call gen_package_wildcard,$(1))))
|
|
|
|
endif
|
|
|
|
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2007-03-16 06:12:53 +00:00
|
|
|
clean: $(1)-clean
|
2007-03-15 23:57:18 +00:00
|
|
|
|
2007-03-16 06:12:53 +00:00
|
|
|
endef
|
2007-03-15 23:57:18 +00:00
|
|
|
endif
|