Page MenuHomeFreeBSD

D43619.id136922.diff
No OneTemporary

D43619.id136922.diff

diff --git a/Mk/Scripts/autodeps.sh b/Mk/Scripts/autodeps.sh
new file mode 100644
--- /dev/null
+++ b/Mk/Scripts/autodeps.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# MAINTAINER: portmgr@FreeBSD.org
+
+set -e
+set -o pipefail
+
+. ${SCRIPTSDIR}/functions.sh
+
+validate_env PREFIX PLIST STAGEDIR LOCALBASE LIB_DIRS
+
+[ -n "${DEBUG_MK_SCRIPTS}" ] || [ -n "${DEBUG_MK_SCRIPTS_AUTODEPS}" ] && set -x
+
+set -u
+
+TARGET=$1
+
+while read -r f; do
+ case "$f" in
+ @*) continue ;;
+ /*) file="$f" ;;
+ *) file="${PREFIX}/${f}" ;;
+ esac
+ # TODO if linux check for linux binaries
+ brandelf "${file}" >/dev/null 2>&1 | grep -q FreeBSD || continue
+ objdump -x "${file}" | awk '/NEEDED/ { print $2 }'
+done < "${PLIST}" | sort -u | while read -r lib; do
+ l=$(env LIB_DIRS="${LIB_DIRS}" LOCALBASE="${LOCALBASE}" sh "${SCRIPTSDIR}/find-lib.sh" "${lib}")
+ case "$l" in
+ ${LOCALBASE}/*)
+ package=$(pkg which "${l}" 2>/dev/null)
+ if [ -z "$package" ]; then
+ continue
+ fi
+ pkg query '"%n" { origin: %o, version: "%v" }' "${package}"
+ ;;
+ *) continue;
+ esac
+done | sort -u > "${TARGET}"
diff --git a/Mk/Scripts/create-manifest.sh b/Mk/Scripts/create-manifest.sh
--- a/Mk/Scripts/create-manifest.sh
+++ b/Mk/Scripts/create-manifest.sh
@@ -63,6 +63,7 @@
echo "deps: { "
# Ignore grep's return value.
eval ${dp_ACTUAL_PACKAGE_DEPENDS} | { grep -v -E ${dp_PKG_IGNORE_DEPENDS} || :; } | sort -u
+echo ".include(try=true) \"${dp_METADIR}/autodeps\""
echo "}"
echo "options: {"
diff --git a/Mk/bsd.port.mk b/Mk/bsd.port.mk
--- a/Mk/bsd.port.mk
+++ b/Mk/bsd.port.mk
@@ -3496,6 +3496,18 @@
# from here this will become a loop for subpackages
. for sp in ${_PKGS}
+_PORTS_DIRECTORIES+= ${METADIR}.${sp}
+
+${METADIR}.${sp}/autodeps: ${_PLIST}.${sp} ${METADIR}.${sp}
+ @${SETENV} \
+ SCRIPTSDIR="${SCRIPTSDIR}" \
+ PREFIX="${PREFIX}" \
+ PLIST="${_PLIST}.${sp}" \
+ STAGEDIR="${STAGEDIR}" \
+ LOCALBASE="${LOCALBASE}" \
+ LIB_DIRS="${LIB_DIRS}" \
+ ${SH} ${SCRIPTSDIR}/autodeps.sh "${.TARGET}"
+
${_PLIST}.${sp}: ${TMPPLIST}
@if [ "${PKGBASE}" = "${sp}" ]; then \
${SED} "/^@comment /d; /@@/d" ${TMPPLIST} > ${.TARGET} ; \
@@ -3503,7 +3515,7 @@
${SED} -n "s/@@${sp:S/${PKGBASE}-//}@@//p" ${TMPPLIST} > ${.TARGET} ; \
fi
-${WRKDIR_PKGFILE${_SP.${sp}}}: ${_PLIST}.${sp} create-manifest ${WRKDIR}/pkg
+${WRKDIR_PKGFILE${_SP.${sp}}}: ${_PLIST}.${sp} ${METADIR}.${sp}/autodeps create-manifest ${WRKDIR}/pkg
@echo "===> Building ${PKGNAME${_SP.${sp}}}"
@if ! ${SETENV} ${PKG_ENV} ${PKG_CREATE} ${PKG_CREATE_ARGS} -m ${METADIR}.${sp} -p ${_PLIST}.${sp} -o ${WRKDIR}/pkg ${PKGNAME}; then \
cd ${.CURDIR} && eval ${MAKE} delete-package >/dev/null; \
@@ -4173,7 +4185,7 @@
DEINSTALL-DEPENDS-FLAVORS-LIST= ${DEPENDS-LIST} -f -r ${_UNIFIED_DEPENDS:N${PKG_DEPENDS}:Q}
MISSING-DEPENDS-LIST= ${DEPENDS-LIST} -m ${_UNIFIED_DEPENDS:Q}
BUILD-DEPENDS-LIST= ${DEPENDS-LIST} "${PKG_DEPENDS_ALL} ${EXTRACT_DEPENDS_ALL} ${PATCH_DEPENDS_ALL} ${FETCH_DEPENDS_ALL} ${BUILD_DEPENDS_ALL} ${LIB_DEPENDS_ALL}"
-RUN-DEPENDS-LIST= ${DEPENDS-LIST} "${LIB_DEPENDS_ALL} ${RUN_DEPENDS_ALL}"
+RUN-DEPENDS-LIST= ${DEPENDS-LIST} "${RUN_DEPENDS_ALL}"
TEST-DEPENDS-LIST= ${DEPENDS-LIST} ${TEST_DEPENDS_ALL:Q}
CLEAN-DEPENDS-LIST= ${DEPENDS-LIST} -wr ${_UNIFIED_DEPENDS:Q}
CLEAN-DEPENDS-LIMITED-LIST= ${DEPENDS-LIST} -w ${_UNIFIED_DEPENDS:Q}
@@ -4314,7 +4326,7 @@
@${PACKAGE-DEPENDS-LIST}
. endif
-_LIB_RUN_DEPENDS= ${LIB_DEPENDS_ALL} ${RUN_DEPENDS_ALL}
+_LIB_RUN_DEPENDS= ${RUN_DEPENDS_ALL}
PACKAGE-DEPENDS-LIST?= \
if [ "${CHILD_DEPENDS}" ]; then \
installed=$$(${PKG_INFO} -qO ${PKGORIGIN} 2>/dev/null || \
@@ -4372,9 +4384,6 @@
. for sp in ${_PKGS}
ACTUAL-PACKAGE-DEPENDS${_SP.${sp}}?= \
depfiles="" ; \
- for lib in ${LIB_DEPENDS${_SP.${sp}}:C/\:.*//}; do \
- depfiles="$$depfiles `${SETENV} LIB_DIRS="${LIB_DIRS}" LOCALBASE="${LOCALBASE}" ${SH} ${SCRIPTSDIR}/find-lib.sh $${lib}`" ; \
- done ; \
for self in ${SELF_DEPENDS${_SP.${sp}}}; do \
if [ "$$self" = "main" ]; then \
printf "\"%s\": {origin: \"%s\", version: \"%s\"}\n" ${PKGBASE} ${PKGORIGIN} ${PKGVERSION}; \

File Metadata

Mime Type
text/plain
Expires
Tue, May 26, 5:37 PM (3 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33534169
Default Alt Text
D43619.id136922.diff (4 KB)

Event Timeline