build: add checks for missing package dependencies
SVN-Revision: 32185
This commit is contained in:
parent
002f3a6940
commit
6ca6d317b3
2 changed files with 46 additions and 0 deletions
|
@ -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
24
scripts/gen-dependencies.sh
Executable 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
|
Loading…
Reference in a new issue