build: add checks for missing package dependencies

SVN-Revision: 32185
owl
Felix Fietkau 2012-06-11 00:57:36 +00:00
parent 002f3a6940
commit 6ca6d317b3
2 changed files with 46 additions and 0 deletions

View File

@ -65,6 +65,26 @@ define FixupDependencies
$(call AddDependency,$(1),$$(DEPS))
endef
ifneq ($(PKG_NAME),toolchain)
define CheckDependencies
@( \
rm -f $(PKG_INFO_DIR)/$(1).missing; \
( \
export READELF=$(TARGET_CROSS)readelf XARGS="$(XARGS)"; \
$(SCRIPT_DIR)/gen-dependencies.sh "$$(IDIR_$(1))"; \
) | while read FILE; do \
grep -q "$$$$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:"; \
cat "$(PKG_INFO_DIR)/$(1).missing"; \
false; \
fi; \
)
endef
endif
ifeq ($(DUMP),)
define BuildTarget/ipkg
IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
@ -124,6 +144,8 @@ ifeq ($(DUMP),)
fi; \
done; \
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
$(CheckDependencies)
$(RSTRIP) $$(IDIR_$(1))
( \
echo "Package: $(1)"; \

24
scripts/gen-dependencies.sh Executable file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env bash
#
# Copyright (C) 2012 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
SELF=${0##*/}
READELF="${READELF:-readelf}"
TARGETS=$*
XARGS="${XARGS:-xargs -r}"
[ -z "$TARGETS" ] && {
echo "$SELF: no directories / files specified"
echo "usage: $SELF [PATH...]"
exit 1
}
find $TARGETS -type f -a -exec file {} \; | \
sed -n -e 's/^\(.*\):.*ELF.*\(executable\|shared object\).*,.* stripped/\1/p' | \
$XARGS -n1 readelf -d | \
awk '$2 ~ /NEEDED/ && $NF !~ /interpreter/ { gsub(/[\[\]]/, "", $NF); print $NF }' | \
sort -u