mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 09:12:39 +00:00
6585498372
Currently, the same information is stored at the Packages.manifest in the 'Package:' variable and also additionally in the 'SourceName:' variable. So we have for Packages.manifest for strongswan-charon-cmd: ``` Package: strongswan-charon-cmd Version: 5.9.11-1 SourceName: strongswan-charon-cmd License: GPL-2.0-or-later Section: net ``` This is not correct. Several installable packages are built from the same strongswan source. Therefore it makes more sense that the source name is really the source name. In this case the it is 'strongswan'. After this change the Packages.manifest for strongswan-charon-cmd: ``` Package: strongswan-charon-cmd Version: 5.9.11-1 SourceName: strongswan License: GPL-2.0-or-later Section: net ``` In summary. The 'Package' name is the name of the package to be installed on the target system. The 'SourceName' is the compile unit from which the package was build from. This must be the same for all installable packages built from the same compile unit. This commit fixes that. Signed-off-by: Florian Eckert <fe@dev.tdt.de>
277 lines
10 KiB
Makefile
277 lines
10 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-only
|
|
#
|
|
# Copyright (C) 2006-2020 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)$$(if $$(filter -%,$$(ABIV_$(1))),,[^a-z-])*
|
|
endef
|
|
|
|
# 1: package name
|
|
# 2: candidate ipk files
|
|
define remove_ipkg_files
|
|
$(if $(strip $(2)),$(IPKG_REMOVE) $(1) $(2))
|
|
endef
|
|
|
|
# 1: package name
|
|
# 2: variable name
|
|
# 3: variable suffix
|
|
# 4: file is a script
|
|
define BuildIPKGVariable
|
|
ifdef Package/$(1)/$(2)
|
|
$$(IPKG_$(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
|
|
endef
|
|
|
|
PARENL :=(
|
|
PARENR :=)
|
|
|
|
dep_split=$(subst :,$(space),$(1))
|
|
dep_rem=$(subst !,,$(subst $(strip $(PARENL)),,$(subst $(strip $(PARENR)),,$(word 1,$(call dep_split,$(1))))))
|
|
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)))
|
|
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)))
|
|
dep_val=$(word 2,$(call dep_split,$(1)))
|
|
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)))))
|
|
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
|
|
|
|
ifneq ($(PKG_NAME),toolchain)
|
|
define CheckDependencies
|
|
@( \
|
|
rm -f $(PKG_INFO_DIR)/$(1).missing; \
|
|
( \
|
|
export \
|
|
READELF=$(TARGET_CROSS)readelf \
|
|
OBJCOPY=$(TARGET_CROSS)objcopy \
|
|
XARGS="$(XARGS)"; \
|
|
$(SCRIPT_DIR)/gen-dependencies.sh "$$(IDIR_$(1))"; \
|
|
) | while read FILE; do \
|
|
grep -qxF "$$$$FILE" $(PKG_INFO_DIR)/$(1).provides || \
|
|
echo "$$$$FILE" >> $(PKG_INFO_DIR)/$(1).missing; \
|
|
done; \
|
|
if [ -f "$(PKG_INFO_DIR)/$(1).missing" ]; then \
|
|
echo "Package $(1) is missing dependencies for the following libraries:" >&2; \
|
|
cat "$(PKG_INFO_DIR)/$(1).missing" >&2; \
|
|
false; \
|
|
fi; \
|
|
)
|
|
endef
|
|
endif
|
|
|
|
_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
|
|
|
|
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
|
|
IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1)
|
|
KEEP_$(1):=$(strip $(call Package/$(1)/conffiles))
|
|
|
|
TARGET_VARIANT:=$$(if $(ALL_VARIANTS),$$(if $$(VARIANT),$$(filter-out *,$$(VARIANT)),$(firstword $(ALL_VARIANTS))))
|
|
ifeq ($(BUILD_VARIANT),$$(if $$(TARGET_VARIANT),$$(TARGET_VARIANT),$(BUILD_VARIANT)))
|
|
do_install=
|
|
ifdef Package/$(1)/install
|
|
do_install=yes
|
|
endif
|
|
ifdef Package/$(1)/install-overlay
|
|
do_install=yes
|
|
endif
|
|
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))
|
|
compile: $(STAGING_DIR_ROOT)/stamp/.$(1)_installed
|
|
else
|
|
$(if $(CONFIG_PACKAGE_$(1)),$$(info WARNING: skipping $(1) -- package not selected))
|
|
endif
|
|
|
|
.PHONY: $(PKG_INSTALL_STAMP).$(1)
|
|
ifeq ($(CONFIG_PACKAGE_$(1)),y)
|
|
compile: $(PKG_INSTALL_STAMP).$(1)
|
|
endif
|
|
$(PKG_INSTALL_STAMP).$(1): prepare-package-install
|
|
echo "$(1)" >> $(PKG_INSTALL_STAMP)
|
|
else
|
|
$(if $(CONFIG_PACKAGE_$(1)),$$(warning WARNING: skipping $(1) -- package has no install section))
|
|
endif
|
|
endif
|
|
|
|
DEPENDS:=$(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS))
|
|
IDEPEND_$(1):=$$(call filter_deps,$$(DEPENDS))
|
|
IDEPEND += $$(patsubst %,$(1):%,$$(IDEPEND_$(1)))
|
|
$(FixupDependencies)
|
|
$(FixupReverseDependencies)
|
|
|
|
$(eval $(call BuildIPKGVariable,$(1),conffiles))
|
|
$(eval $(call BuildIPKGVariable,$(1),preinst,,1))
|
|
$(eval $(call BuildIPKGVariable,$(1),postinst,-pkg,1))
|
|
$(eval $(call BuildIPKGVariable,$(1),prerm,-pkg,1))
|
|
$(eval $(call BuildIPKGVariable,$(1),postrm,,1))
|
|
|
|
$(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
|
|
$(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; \
|
|
) \
|
|
} )
|
|
$(call locked,$(CP) $(PKG_BUILD_DIR)/.pkgdir/$(1)/. $(STAGING_DIR_ROOT)/,root-copy)
|
|
touch $$@
|
|
|
|
Package/$(1)/DEPENDS := $$(call mergelist,$$(foreach dep,$$(filter-out @%,$$(IDEPEND_$(1))),$$(dep)$$(call GetABISuffix,$$(dep))))
|
|
ifneq ($$(EXTRA_DEPENDS),)
|
|
Package/$(1)/DEPENDS := $$(EXTRA_DEPENDS)$$(if $$(Package/$(1)/DEPENDS),$$(comma) $$(Package/$(1)/DEPENDS))
|
|
endif
|
|
|
|
$(_define) Package/$(1)/CONTROL
|
|
Package: $(1)$$(ABIV_$(1))
|
|
Version: $(VERSION)
|
|
$$(call addfield,Depends,$$(Package/$(1)/DEPENDS)
|
|
)$$(call addfield,Conflicts,$$(call mergelist,$(CONFLICTS))
|
|
)$$(call addfield,Provides,$$(call mergelist,$$(filter-out $(1)$$(ABIV_$(1)),$(PROVIDES)$$(if $$(ABIV_$(1)), $(1) $(foreach provide,$(PROVIDES),$(provide)$$(ABIV_$(1))))))
|
|
)$$(call addfield,Alternatives,$$(call mergelist,$(ALTERNATIVES))
|
|
)$$(call addfield,Source,$(SOURCE)
|
|
)$$(call addfield,SourceName,$(PKG_NAME)
|
|
)$$(call addfield,License,$(LICENSE)
|
|
)$$(call addfield,LicenseFiles,$(LICENSE_FILES)
|
|
)$$(call addfield,Section,$(SECTION)
|
|
)$$(call addfield,Require-User,$(USERID)
|
|
)$$(call addfield,SourceDateEpoch,$(PKG_SOURCE_DATE_EPOCH)
|
|
)$$(if $$(ABIV_$(1)),ABIVersion: $$(ABIV_$(1))
|
|
)$(if $(PKG_CPE_ID),CPE-ID: $(PKG_CPE_ID)
|
|
)$(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)
|
|
|
|
$$(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)
|
|
$(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)
|
|
-find $$(IDIR_$(1)) -name 'CVS' -o -name '.svn' -o -name '.#*' -o -name '*~'| $(XARGS) rm -rf
|
|
@( \
|
|
find $$(IDIR_$(1)) -name lib\*.so\* -or -name \*.ko | awk -F/ '{ print $$$$NF }'; \
|
|
for file in $$(patsubst %,$(PKG_INFO_DIR)/%.provides,$$(IDEPEND_$(1))); do \
|
|
if [ -f "$$$$file" ]; then \
|
|
cat $$$$file; \
|
|
fi; \
|
|
done; $(Package/$(1)/extra_provides) \
|
|
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
|
|
$(if $(PROVIDES),@for pkg in $(filter-out $(1),$(PROVIDES)); do cp $(PKG_INFO_DIR)/$(1).provides $(PKG_INFO_DIR)/$$$$pkg.provides; done)
|
|
$(CheckDependencies)
|
|
|
|
$(RSTRIP) $$(IDIR_$(1))
|
|
|
|
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
|
|
(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)),)
|
|
@( \
|
|
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))
|
|
$(FAKEROOT) $(STAGING_DIR_HOST)/bin/bash $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1))
|
|
@[ -f $$(IPKG_$(1)) ]
|
|
|
|
$(1)-clean:
|
|
$$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1))))
|
|
|
|
clean: $(1)-clean
|
|
|
|
endef
|
|
endif
|