diff options
Diffstat (limited to 'mk')
-rw-r--r-- | mk/check/check-shlibs-macho.awk | 5 | ||||
-rw-r--r-- | mk/check/check-shlibs.mk | 5 | ||||
-rw-r--r-- | mk/pkgformat/pkg/metadata.mk | 13 | ||||
-rw-r--r-- | mk/platform/Darwin.mk | 12 |
4 files changed, 30 insertions, 5 deletions
diff --git a/mk/check/check-shlibs-macho.awk b/mk/check/check-shlibs-macho.awk index 51b750b6e6e..2237242e70d 100644 --- a/mk/check/check-shlibs-macho.awk +++ b/mk/check/check-shlibs-macho.awk @@ -1,4 +1,4 @@ -# $NetBSD: check-shlibs-macho.awk,v 1.7 2018/06/07 07:00:10 dbj Exp $ +# $NetBSD: check-shlibs-macho.awk,v 1.8 2020/10/09 16:00:16 jperkin Exp $ # # Read a list of potential Mach-O binaries from stdin. @@ -73,6 +73,8 @@ function checkshlib(DSO, needed, found) { while ((cmd | getline) > 0) { if ($0 !~ /^\t/) continue + if (skip_system_libs && $0 ~ /^\t\/usr\/lib/) + continue needed[$1] = "" } close(cmd) @@ -119,6 +121,7 @@ BEGIN { wrkdir = ENVIRON["WRKDIR"] pkg_info_cmd = ENVIRON["PKG_INFO_CMD"] depends_file = ENVIRON["DEPENDS_FILE"] + skip_system_libs = ENVIRON["SKIP_SYSTEM_LIBS"] } { checkshlib($0); } diff --git a/mk/check/check-shlibs.mk b/mk/check/check-shlibs.mk index 229cc13b772..90978cdf8b8 100644 --- a/mk/check/check-shlibs.mk +++ b/mk/check/check-shlibs.mk @@ -1,4 +1,4 @@ -# $NetBSD: check-shlibs.mk,v 1.32 2020/03/23 09:24:35 jperkin Exp $ +# $NetBSD: check-shlibs.mk,v 1.33 2020/10/09 16:00:16 jperkin Exp $ # # This file verifies that all libraries used by the package can be found # at run-time. @@ -64,6 +64,9 @@ CHECK_SHLIBS_NATIVE_ENV+= PLATFORM_RPATH=${_OPSYS_SYSTEM_RPATH:Q} CHECK_SHLIBS_NATIVE_ENV+= READELF=${TOOLS_PATH.readelf:Q} . elif ${OBJECT_FMT} == "Mach-O" CHECK_SHLIBS_NATIVE= ${PKGSRCDIR}/mk/check/check-shlibs-macho.awk +. if defined(DARWIN_NO_SYSTEM_LIBS) +CHECK_SHLIBS_NATIVE_ENV+= SKIP_SYSTEM_LIBS=1 +. endif . endif CHECK_SHLIBS_NATIVE_ENV+= CROSS_DESTDIR=${_CROSS_DESTDIR:Q} CHECK_SHLIBS_NATIVE_ENV+= PKG_INFO_CMD=${PKG_INFO:Q} diff --git a/mk/pkgformat/pkg/metadata.mk b/mk/pkgformat/pkg/metadata.mk index 8b11f94e115..0800a3ae8db 100644 --- a/mk/pkgformat/pkg/metadata.mk +++ b/mk/pkgformat/pkg/metadata.mk @@ -1,4 +1,4 @@ -# $NetBSD: metadata.mk,v 1.29 2020/07/06 18:29:11 maya Exp $ +# $NetBSD: metadata.mk,v 1.30 2020/10/09 16:00:16 jperkin Exp $ ###################################################################### ### The targets below are all PRIVATE. @@ -24,6 +24,15 @@ _BUILD_DATE_cmd= ${DATE} "+%Y-%m-%d %H:%M:%S %z" _BUILD_HOST_cmd= ${UNAME} -a _METADATA_TARGETS+= ${_BUILD_INFO_FILE} +# +# Skip system libraries on Darwin releases where they do not exist. +# +.if defined(DARWIN_NO_SYSTEM_LIBS) +DARWIN_REQUIRES_FILTER= ${GREP} -v '\t/usr/lib' +.else +DARWIN_REQUIRES_FILTER= ${CAT} +.endif + ${_BUILD_INFO_FILE}: ${_PLIST_NOKEYWORDS} ${RUN}${MKDIR} ${.TARGET:H} ${RUN}${RM} -f ${.TARGET}.tmp @@ -85,7 +94,7 @@ ${_BUILD_INFO_FILE}: ${_PLIST_NOKEYWORDS} Mach-O) \ libs=`${AWK} '/\/lib.*\.dylib/ { print "${DESTDIR}${PREFIX}/" $$0 } END { exit 0 }' ${_PLIST_NOKEYWORDS}`; \ if ${TEST} "$$bins" != "" -o "$$libs" != ""; then \ - requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \ + requires=`($$ldd $$bins $$libs 2>/dev/null || ${TRUE}) | ${DARWIN_REQUIRES_FILTER} | ${AWK} '/compatibility version/ { print $$1 }' | ${SORT} -u`; \ fi; \ ;; \ PE) \ diff --git a/mk/platform/Darwin.mk b/mk/platform/Darwin.mk index 412e3fb66fd..dbdab98d3cd 100644 --- a/mk/platform/Darwin.mk +++ b/mk/platform/Darwin.mk @@ -1,4 +1,4 @@ -# $NetBSD: Darwin.mk,v 1.98 2020/08/21 21:29:16 sjmulder Exp $ +# $NetBSD: Darwin.mk,v 1.99 2020/10/09 16:00:16 jperkin Exp $ # # Variable definitions for the Darwin operating system. @@ -120,6 +120,16 @@ PKG_FAIL_REASON+= "No suitable Xcode SDK or Command Line Tools installed." . endif .endif +# +# Newer macOS releases remove library files from the file system. The only way +# to test them is via dlopen(), which is obviously impractical for many things. +# +# This define turns off anything that can't reasonably supported this. +# +.if ${OS_VERSION:R} >= 20 +DARWIN_NO_SYSTEM_LIBS= # defined +.endif + .if ${OS_VERSION:R} >= 6 _OPSYS_HAS_INET6= yes # IPv6 is standard .else |