Thu Dec 2 11:15:10 2010 UTC ()
Better match library names to improve REQUIRES/PROVIDES.
This is from cheusov via PR #42907.
(I have been using this for months, as I had noticed some of the same
problems.)


(reed)
diff -r1.35 -r1.36 pkgsrc/mk/flavor/pkg/metadata.mk

cvs diff -r1.35 -r1.36 pkgsrc/mk/flavor/pkg/Attic/metadata.mk (expand / switch to unified diff)

--- pkgsrc/mk/flavor/pkg/Attic/metadata.mk 2010/09/24 01:30:54 1.35
+++ pkgsrc/mk/flavor/pkg/Attic/metadata.mk 2010/12/02 11:15:10 1.36
@@ -1,14 +1,14 @@ @@ -1,14 +1,14 @@
1# $NetBSD: metadata.mk,v 1.35 2010/09/24 01:30:54 chs Exp $ 1# $NetBSD: metadata.mk,v 1.36 2010/12/02 11:15:10 reed Exp $
2 2
3###################################################################### 3######################################################################
4### The targets below are all PRIVATE. 4### The targets below are all PRIVATE.
5###################################################################### 5######################################################################
6 6
7###################################################################### 7######################################################################
8### 8###
9### Temporary package meta-data directory. The contents of this directory 9### Temporary package meta-data directory. The contents of this directory
10### are copied directly into the real package meta-data directory. 10### are copied directly into the real package meta-data directory.
11### 11###
12PKG_DB_TMPDIR= ${WRKDIR}/.pkgdb 12PKG_DB_TMPDIR= ${WRKDIR}/.pkgdb
13 13
14unprivileged-install-hook: ${PKG_DB_TMPDIR} 14unprivileged-install-hook: ${PKG_DB_TMPDIR}
@@ -54,52 +54,51 @@ ${_BUILD_INFO_FILE}: plist @@ -54,52 +54,51 @@ ${_BUILD_INFO_FILE}: plist
54 ${RUN}${ECHO} "SUPERSEDES=${SUPERSEDES}" >> ${.TARGET}.tmp 54 ${RUN}${ECHO} "SUPERSEDES=${SUPERSEDES}" >> ${.TARGET}.tmp
55.endif 55.endif
56 ${RUN}${ECHO} "BUILD_DATE=${_BUILD_DATE_cmd:sh}" >> ${.TARGET}.tmp 56 ${RUN}${ECHO} "BUILD_DATE=${_BUILD_DATE_cmd:sh}" >> ${.TARGET}.tmp
57 ${RUN}${ECHO} "BUILD_HOST=${_BUILD_HOST_cmd:sh}" >> ${.TARGET}.tmp 57 ${RUN}${ECHO} "BUILD_HOST=${_BUILD_HOST_cmd:sh}" >> ${.TARGET}.tmp
58.if !empty(CHECK_SHLIBS_SUPPORTED:M[yY][eE][sS]) 58.if !empty(CHECK_SHLIBS_SUPPORTED:M[yY][eE][sS])
59 ${RUN} \ 59 ${RUN} \
60 case ${LDD:Q}"" in \ 60 case ${LDD:Q}"" in \
61 "") ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'` ;; \ 61 "") ldd=`${TYPE} ldd 2>/dev/null | ${AWK} '{ print $$NF }'` ;; \
62 *) ldd=${LDD:Q} ;; \ 62 *) ldd=${LDD:Q} ;; \
63 esac; \ 63 esac; \
64 bins=`${AWK} '/(^|\/)(bin|sbin|libexec)\// { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \ 64 bins=`${AWK} '/(^|\/)(bin|sbin|libexec)\// { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
65 case ${OBJECT_FMT:Q}"" in \ 65 case ${OBJECT_FMT:Q}"" in \
66 ELF) \ 66 ELF) \
67 libs=`${AWK} '/(^|\/)lib\/lib.*\.so(\.[0-9]+)?$$/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \ 67 libs=`${AWK} '/\/lib.*\.so(\.[0-9]+)*$$/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
68 if ${TEST} -n "$$bins" -o -n "$$libs"; then \ 68 if ${TEST} -n "$$bins" -o -n "$$libs"; then \
69 requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '$$2 == "=>" && $$3 ~ "/" { print $$3 }' | ${SORT} -u`; \ 69 requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '$$2 == "=>" && $$3 ~ "/" { print $$3 }' | ${SORT} -u`; \
70 fi; \ 70 fi; \
71 linklibs=`${AWK} '/.*\.so(\.[0-9]+)?$$/ { print "${DESTDIR}${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}`; \ 71 linklibs=`${AWK} '/.*\.so(\.[0-9]+)*$$/ { print "${DESTDIR}${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}`; \
72 for i in $$linklibs; do \ 72 for i in $$linklibs; do \
73 if ${TEST} -r $$i -a ! -x $$i -a ! -h $$i; then \ 73 if ${TEST} -r $$i -a ! -x $$i -a ! -h $$i; then \
74 ${TEST} ${PKG_DEVELOPER:Uno:Q}"" = "no" || \ 74 ${TEST} ${PKG_DEVELOPER:Uno:Q}"" = "no" || \
75 ${ECHO} "$$i: installed without execute permission; fixing (should use [BSD_]INSTALL_LIB)"; \ 75 ${ECHO} "$$i: installed without execute permission; fixing (should use [BSD_]INSTALL_LIB)"; \
76 ${CHMOD} +x $$i; \ 76 ${CHMOD} +x $$i; \
77 fi; \ 77 fi; \
78 done; \ 78 done; \
79 ;; \ 79 ;; \
80 Mach-O) \ 80 Mach-O) \
81 libs=`${AWK} '/(^|\/)lib\/lib.*\.dylib/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \ 81 libs=`${AWK} '/\/lib.*\.dylib/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \
82 if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \ 82 if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \
83 requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \ 83 requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \
84 fi; \ 84 fi; \
85 ;; \ 85 ;; \
86 esac; \ 86 esac; \
87 requires=`{ for i in $$requires $$requires; do echo $$i; done; \ 87 requires=`{ for i in $$requires $$requires; do echo $$i; done; \
88 ${AWK} '{ print "${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}; } | \ 88 ${AWK} '{ print "${PREFIX}/" $$0 }' ${_PLIST_NOKEYWORDS}; } | \
89 ${SORT} | uniq -c | awk '$$1 == 2 {print $$2}'`; \ 89 ${SORT} | uniq -c | awk '$$1 == 2 {print $$2}'`; \
90 for i in "" $$libs; do \ 90 for i in "" $$libs; do \
91 ${TEST} "$$i" != "" || continue; \ 91 ${TEST} "$$i" != "" || continue; \
92 ${TEST} -h "$$i" && echo "$$i" | grep '[.]so$$' > /dev/null && continue; \ 
93 ${ECHO} "PROVIDES=$${i}"; \ 92 ${ECHO} "PROVIDES=$${i}"; \
94 done | ${SED} -e 's,^PROVIDES=${DESTDIR},PROVIDES=,' \ 93 done | ${SED} -e 's,^PROVIDES=${DESTDIR},PROVIDES=,' \
95 >> ${.TARGET}.tmp; \ 94 >> ${.TARGET}.tmp; \
96 for req in "" $$requires; do \ 95 for req in "" $$requires; do \
97 ${TEST} "$$req" != "" || continue; \ 96 ${TEST} "$$req" != "" || continue; \
98 ${ECHO} "REQUIRES=$$req" >> ${.TARGET}.tmp; \ 97 ${ECHO} "REQUIRES=$$req" >> ${.TARGET}.tmp; \
99 done 98 done
100.endif 99.endif
101 ${RUN} \ 100 ${RUN} \
102 rm -f ${.TARGET}; \ 101 rm -f ${.TARGET}; \
103 sort ${.TARGET}.tmp > ${.TARGET}; \ 102 sort ${.TARGET}.tmp > ${.TARGET}; \
104 rm -f ${.TARGET}.tmp 103 rm -f ${.TARGET}.tmp
105 104