mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 07:46:48 +00:00
build: add checks for missing package dependencies
SVN-Revision: 32185
This commit is contained in:
parent
002f3a6940
commit
6ca6d317b3
@ -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
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 New Issue
Block a user