build: add checks for missing package dependencies
SVN-Revision: 32185
This commit is contained in:
		| @@ -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 | ||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau