1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-11-27 17:55:55 +02:00

build: add checks for missing package dependencies

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32185 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
nbd 2012-06-11 00:57:36 +00:00
parent 499d03c2f3
commit af491558a3
2 changed files with 46 additions and 0 deletions

View File

@ -65,6 +65,26 @@ define FixupDependencies
$(call AddDependency,$(1),$$(DEPS)) $(call AddDependency,$(1),$$(DEPS))
endef 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),) ifeq ($(DUMP),)
define BuildTarget/ipkg define BuildTarget/ipkg
IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk IPKG_$(1):=$(PACKAGE_DIR)/$(1)_$(VERSION)_$(PKGARCH).ipk
@ -124,6 +144,8 @@ ifeq ($(DUMP),)
fi; \ fi; \
done; \ done; \
) | sort -u > $(PKG_INFO_DIR)/$(1).provides ) | sort -u > $(PKG_INFO_DIR)/$(1).provides
$(CheckDependencies)
$(RSTRIP) $$(IDIR_$(1)) $(RSTRIP) $$(IDIR_$(1))
( \ ( \
echo "Package: $(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