summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mk/check/check-shlibs-macho.awk5
-rw-r--r--mk/check/check-shlibs.mk5
-rw-r--r--mk/pkgformat/pkg/metadata.mk13
-rw-r--r--mk/platform/Darwin.mk12
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