Skip to content

Commit

Permalink
build: add checks for missing package dependencies
Browse files Browse the repository at this point in the history
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32185 3c298f89-4303-0410-b956-a3cf2f4a3e73
  • Loading branch information
nbd committed Jun 11, 2012
1 parent 499d03c commit af49155
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 0 deletions.
22 changes: 22 additions & 0 deletions include/package-ipkg.mk
Expand Up @@ -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
Expand Down Expand Up @@ -124,6 +144,8 @@ ifeq ($(DUMP),)
fi; \
done; \
) | sort -u > $(PKG_INFO_DIR)/$(1).provides
$(CheckDependencies)

$(RSTRIP) $$(IDIR_$(1))
( \
echo "Package: $(1)"; \
Expand Down
24 changes: 24 additions & 0 deletions scripts/gen-dependencies.sh
@@ -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

0 comments on commit af49155

Please sign in to comment.