Tue Feb 2 15:36:15 2010 UTC ()
The missing run-time search path test cannot run reliably in DESTDIR mode
when not using the readelf(1) method, so skip the test and warn about it.


(tnn)
diff -r1.16 -r1.17 pkgsrc/mk/check/check-shlibs.mk

cvs diff -r1.16 -r1.17 pkgsrc/mk/check/check-shlibs.mk (expand / switch to unified diff)

--- pkgsrc/mk/check/check-shlibs.mk 2009/06/18 14:51:55 1.16
+++ pkgsrc/mk/check/check-shlibs.mk 2010/02/02 15:36:15 1.17
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: check-shlibs.mk,v 1.16 2009/06/18 14:51:55 tnn Exp $ 1# $NetBSD: check-shlibs.mk,v 1.17 2010/02/02 15:36:15 tnn Exp $
2# 2#
3# This file verifies that all libraries used by the package can be found 3# This file verifies that all libraries used by the package can be found
4# at run-time. 4# at run-time.
5# 5#
6# User-settable variables: 6# User-settable variables:
7# 7#
8# CHECK_SHLIBS 8# CHECK_SHLIBS
9# Whether the check should be enabled or not. 9# Whether the check should be enabled or not.
10# 10#
11# Default value: "yes" for PKG_DEVELOPERs, "no" otherwise. 11# Default value: "yes" for PKG_DEVELOPERs, "no" otherwise.
12# 12#
13# Package-settable variables: 13# Package-settable variables:
14# 14#
@@ -35,54 +35,59 @@ _CHECK_SHLIBS_FILELIST_CMD?= ${SED} -e ' @@ -35,54 +35,59 @@ _CHECK_SHLIBS_FILELIST_CMD?= ${SED} -e '
35 35
36.if !empty(CHECK_SHLIBS:M[Yy][Ee][Ss]) && \ 36.if !empty(CHECK_SHLIBS:M[Yy][Ee][Ss]) && \
37 !empty(CHECK_SHLIBS_SUPPORTED:M[Yy][Ee][Ss]) 37 !empty(CHECK_SHLIBS_SUPPORTED:M[Yy][Ee][Ss])
38privileged-install-hook: _check-shlibs 38privileged-install-hook: _check-shlibs
39.endif 39.endif
40 40
41.if !empty(USE_CHECK_SHLIBS_ELF:M[yY][eE][sS]) 41.if !empty(USE_CHECK_SHLIBS_ELF:M[yY][eE][sS])
42CHECK_SHLIBS_ELF= ${PKGSRCDIR}/mk/check/check-shlibs-elf.awk 42CHECK_SHLIBS_ELF= ${PKGSRCDIR}/mk/check/check-shlibs-elf.awk
43CHECK_SHLIBS_ELF_ENV= PLATFORM_RPATH=${_OPSYS_SYSTEM_RPATH:Q} 43CHECK_SHLIBS_ELF_ENV= PLATFORM_RPATH=${_OPSYS_SYSTEM_RPATH:Q}
44CHECK_SHLIBS_ELF_ENV+= READELF=${TOOLS_PATH.readelf:Q} 44CHECK_SHLIBS_ELF_ENV+= READELF=${TOOLS_PATH.readelf:Q}
45CHECK_SHLIBS_ELF_ENV+= CROSS_DESTDIR=${_CROSS_DESTDIR:Q} 45CHECK_SHLIBS_ELF_ENV+= CROSS_DESTDIR=${_CROSS_DESTDIR:Q}
46CHECK_SHLIBS_ELF_ENV+= PKG_INFO_CMD=${PKG_INFO:Q} 46CHECK_SHLIBS_ELF_ENV+= PKG_INFO_CMD=${PKG_INFO:Q}
47CHECK_SHLIBS_ELF_ENV+= DEPENDS_FILE=${_RDEPENDS_FILE:Q} 47CHECK_SHLIBS_ELF_ENV+= DEPENDS_FILE=${_RDEPENDS_FILE:Q}
48.if ${_USE_DESTDIR} != "no" 48. if ${_USE_DESTDIR} != "no"
49CHECK_SHLIBS_ELF_ENV+= DESTDIR=${DESTDIR:Q} 49CHECK_SHLIBS_ELF_ENV+= DESTDIR=${DESTDIR:Q}
50.endif 50. endif
51CHECK_SHLIBS_ELF_ENV+= WRKDIR=${WRKDIR:Q} 51CHECK_SHLIBS_ELF_ENV+= WRKDIR=${WRKDIR:Q}
52 52
53_check-shlibs: error-check .PHONY 53_check-shlibs: error-check .PHONY
54 @${STEP_MSG} "Checking for missing run-time search paths in ${PKGNAME}" 54 @${STEP_MSG} "Checking for missing run-time search paths in ${PKGNAME}"
55 ${RUN} rm -f ${ERROR_DIR}/${.TARGET} 55 ${RUN} rm -f ${ERROR_DIR}/${.TARGET}
56 ${RUN} \ 56 ${RUN} \
57 cd ${DESTDIR:Q}${PREFIX:Q}; \ 57 cd ${DESTDIR:Q}${PREFIX:Q}; \
58 ${_CHECK_SHLIBS_FILELIST_CMD} | \ 58 ${_CHECK_SHLIBS_FILELIST_CMD} | \
59 ${EGREP} -h ${_CHECK_SHLIBS_ERE:Q} | \ 59 ${EGREP} -h ${_CHECK_SHLIBS_ERE:Q} | \
60 ${SETENV} ${CHECK_SHLIBS_ELF_ENV} ${AWK} -f ${CHECK_SHLIBS_ELF} > ${ERROR_DIR}/${.TARGET} 60 ${SETENV} ${CHECK_SHLIBS_ELF_ENV} ${AWK} -f ${CHECK_SHLIBS_ELF} > ${ERROR_DIR}/${.TARGET}
61 61
62.else 62.else
 63. if ${_USE_DESTDIR} != "no"
 64_check-shlibs: error-check .PHONY
 65 @${WARNING_MSG} "Skipping missing run-time search-path check in DESTDIR mode."
 66. else
63_check-shlibs: error-check .PHONY 67_check-shlibs: error-check .PHONY
64 @${STEP_MSG} "Checking for missing run-time search paths in ${PKGNAME}" 68 @${STEP_MSG} "Checking for missing run-time search paths in ${PKGNAME}"
65 ${RUN} rm -f ${ERROR_DIR}/${.TARGET} 69 ${RUN} rm -f ${ERROR_DIR}/${.TARGET}
66 ${RUN} \ 70 ${RUN} \
67 exec 1>${ERROR_DIR}/${.TARGET}; \ 71 exec 1>${ERROR_DIR}/${.TARGET}; \
68 case ${LDD:Q}"" in \ 72 case ${LDD:Q}"" in \
69 "") ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'` ;; \ 73 "") ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'` ;; \
70 *) ldd=${LDD:Q} ;; \ 74 *) ldd=${LDD:Q} ;; \
71 esac; \ 75 esac; \
72 ${TEST} -x "$$ldd" || exit 0; \ 76 ${TEST} -x "$$ldd" || exit 0; \
73 cd ${DESTDIR}${PREFIX}; \ 77 cd ${DESTDIR}${PREFIX}; \
74 ${_CHECK_SHLIBS_FILELIST_CMD} | \ 78 ${_CHECK_SHLIBS_FILELIST_CMD} | \
75 ${EGREP} -h ${_CHECK_SHLIBS_ERE:Q} | \ 79 ${EGREP} -h ${_CHECK_SHLIBS_ERE:Q} | \
76 while read file; do \ 80 while read file; do \
77 err=`$$ldd $$file 2>&1 | ${GREP} "not found" || ${TRUE}`; \ 81 err=`$$ldd $$file 2>&1 | ${GREP} "not found" || ${TRUE}`; \
78 ${TEST} -z "$$err" || ${ECHO} "${DESTDIR}${PREFIX}/$$file: $$err"; \ 82 ${TEST} -z "$$err" || ${ECHO} "${DESTDIR}${PREFIX}/$$file: $$err"; \
79 done 83 done
80 ${RUN} \ 84 ${RUN} \
81 exec 1>>${ERROR_DIR}/${.TARGET}; \ 85 exec 1>>${ERROR_DIR}/${.TARGET}; \
82 if ${_NONZERO_FILESIZE_P} ${ERROR_DIR}/${.TARGET}; then \ 86 if ${_NONZERO_FILESIZE_P} ${ERROR_DIR}/${.TARGET}; then \
83 ${ECHO} "*** The programs/libs shown above will not find the listed"; \ 87 ${ECHO} "*** The programs/libs shown above will not find the listed"; \
84 ${ECHO} " shared libraries at runtime."; \ 88 ${ECHO} " shared libraries at runtime."; \
85 ${ECHO} " Please fix the package (add -Wl,-R.../lib in the right places)!"; \ 89 ${ECHO} " Please fix the package (add -Wl,-R.../lib in the right places)!"; \
86 ${SHCOMMENT} Might not error-out for non-pkg-developers; \ 90 ${SHCOMMENT} Might not error-out for non-pkg-developers; \
87 fi 91 fi
 92. endif
88.endif 93.endif