View | Details | Raw Unified | Return to bug 197012 | Differences between
and this patch

Collapse All | Expand All

(-)Mk/Scripts/actual-package-depends.sh (+72 lines)
Line 0 Link Here
1
#!/bin/sh
2
# MAINTAINER: portmgr@FeeeBSD.org
3
# $FreeBSD$
4
5
if [ -z "${PKG_BIN}" ]; then
6
	echo "PKG_BIN required in environment." >&2
7
	exit 1
8
fi
9
10
resolv_symlink() {
11
	local file tgt
12
	file=${1}
13
	if [ ! -L ${file} ] ; then
14
		echo ${file}
15
		return
16
	fi
17
18
	tgt=`readlink ${file}`
19
	case $tgt in
20
	/*)
21
		echo $tgt
22
		return
23
		;;
24
	esac
25
26
	file=${file%/*}/${tgt}
27
	absolute_path ${file}
28
}
29
30
absolute_path() {
31
	local file myifs target
32
	file=$1
33
34
	myifs=${IFS}
35
	IFS='/'
36
	set -- ${file}
37
	IFS=${myifs}
38
	for el; do
39
		case $el in
40
		.) continue ;;
41
		'') continue ;;
42
		..) target=${target%/*} ;;
43
		*) target="${target}/${el}" ;;
44
		esac
45
	done
46
	echo ${target}
47
}
48
49
find_dep() {
50
	pattern=$1
51
	case ${pattern} in
52
	*\>*|*\<*|*=*)
53
		${PKG_BIN} info -Eg "${pattern}" 2>/dev/null
54
		return
55
		;;
56
	/*)
57
		searchfile=$pattern
58
		;;
59
	*)
60
		searchfile=$(/usr/bin/which ${pattern} 2>/dev/null)
61
		;;
62
	esac
63
	if [ -n "${searchfile}" ]; then
64
		echo $(resolv_symlink ${searchfile}) >&2
65
		${PKG_BIN} which -q ${searchfile} || ${PKG_BIN} which -q "$(resolv_symlink ${searchfile} 2>/dev/null)" ||
66
			echo "actual-package-depends: dependency on ${searchfile} not registered (normal if it belongs to base)" >&2
67
	fi
68
}
69
70
for lookup; do
71
	${PKG_BIN} query "\"%n\": {origin: \"%o\", version: \"%v\"}" "$(find_dep ${lookup})" || :
72
done
(-)Mk/Scripts/find-lib.sh (+62 lines)
Line 0 Link Here
1
#!/bin/sh
2
# MAINTAINER: portmgr@FreeBSD.org
3
# $FreeBSD$
4
5
if [ -z "${LIB_DIRS}" -o -z "${LOCALBASE}" ]; then
6
	echo "LIB_DIRS, LOCALBASE required in environment." >&2
7
	exit 1
8
fi
9
10
if [ $# -ne 1 ]; then
11
	echo "$0: no argument provided." >&2
12
fi
13
14
lib=$1
15
dirs="${LIB_DIRS} `cat ${LOCALBASE}/libdata/ldconfig/* 2>/dev/null || :`"
16
17
resolv_symlink() {
18
	local file tgt
19
	file=${1}
20
	if [ ! -L ${file} ] ; then
21
		echo ${file}
22
		return
23
	fi
24
25
	tgt=`readlink ${file}`
26
	case $tgt in
27
	/*)
28
		echo $tgt
29
		return
30
		;;
31
	esac
32
33
	file=${file%/*}/${tgt}
34
	absolute_path ${file}
35
}
36
37
absolute_path() {
38
	local file myifs target
39
	file=$1
40
41
	myifs=${IFS}
42
	IFS='/'
43
	set -- ${file}
44
	IFS=${myifs}
45
	for el; do
46
		case $el in
47
		.) continue ;;
48
		'') continue ;;
49
		..) target=${target%/*} ;;
50
		*) target="${target}/${el}" ;;
51
		esac
52
	done
53
	echo ${target}
54
}
55
56
for libdir in ${dirs} ; do
57
	test -f ${libdir}/${lib} || continue
58
	libfile=`resolv_symlink ${libdir}/${lib}`
59
	[ `file -b -L --mime-type ${libfile}` = "application/x-sharedlib" ] || continue
60
	echo $libfile
61
	break
62
done
(-)Mk/bsd.port.mk (-19 / +14 lines)
Lines 1766-1774 Link Here
1766
PKG_IGNORE_DEPENDS?=		'this_port_does_not_exist'
1766
PKG_IGNORE_DEPENDS?=		'this_port_does_not_exist'
1767
1767
1768
_GL_gbm_LIB_DEPENDS=		libgbm.so:${PORTSDIR}/graphics/gbm
1768
_GL_gbm_LIB_DEPENDS=		libgbm.so:${PORTSDIR}/graphics/gbm
1769
_GL_glesv2_LIB_DEPENDS=		libGLESv2.so:${PORTSDIR}/graphics/libglesv2
1769
_GL_glesv2_BUILD_DEPENDS=		libglesv2>0:${PORTSDIR}/graphics/libglesv2
1770
_GL_egl_LIB_DEPENDS=		libEGL.so:${PORTSDIR}/graphics/libEGL
1770
_GL_glesv2_RUN_DEPENDS=		libglesv2>0:${PORTSDIR}/graphics/libglesv2
1771
_GL_gl_LIB_DEPENDS=		libGL.so:${PORTSDIR}/graphics/libGL
1771
_GL_egl_BUILD_DEPENDS=		libEGL>0:${PORTSDIR}/graphics/libEGL
1772
_GL_egl_RUN_DEPENDS=		libEGL>0:${PORTSDIR}/graphics/libEGL
1773
_GL_gl_BUILD_DEPENDS=		libGL>0:${PORTSDIR}/graphics/libGL
1774
_GL_gl_RUN_DEPENDS=		libGL>0:${PORTSDIR}/graphics/libGL
1772
_GL_gl_USE_XORG=		glproto dri2proto
1775
_GL_gl_USE_XORG=		glproto dri2proto
1773
_GL_glew_LIB_DEPENDS=		libGLEW.so:${PORTSDIR}/graphics/glew
1776
_GL_glew_LIB_DEPENDS=		libGLEW.so:${PORTSDIR}/graphics/glew
1774
_GL_glu_LIB_DEPENDS=		libGLU.so:${PORTSDIR}/graphics/libGLU
1777
_GL_glu_LIB_DEPENDS=		libGLU.so:${PORTSDIR}/graphics/libGLU
Lines 4473-4490 Link Here
4473
		target="${DEPENDS_TARGET}"; \
4476
		target="${DEPENDS_TARGET}"; \
4474
		depends_args="${DEPENDS_ARGS}"; \
4477
		depends_args="${DEPENDS_ARGS}"; \
4475
		${ECHO_MSG}  -n "===>   ${PKGNAME} depends on shared library: $${lib}" ; \
4478
		${ECHO_MSG}  -n "===>   ${PKGNAME} depends on shared library: $${lib}" ; \
4476
		found=0 ; \
4479
		libfile=`${SETENV} LIB_DIRS="${LIB_DIRS}" LOCALBASE="${LOCALBASE}" ${SH} ${SCRIPTSDIR}/find-lib.sh $${lib}` ; \
4477
		dirs="${LIB_DIRS} `${CAT} ${LOCALBASE}/libdata/ldconfig/* 2>/dev/null || : `" ; \
4480
		if [ -z "$${libfile}" ]; then \
4478
		for libdir in $$dirs; do \
4479
			test -f $${libdir}/$${lib} || continue; \
4480
			if [ -x /usr/bin/file ]; then \
4481
				_LIB_FILE=`realpath $${libdir}/$${lib}`; \
4482
				[ `file -b -L --mime-type $${_LIB_FILE}` = "application/x-sharedlib" ] || continue ; \
4483
			fi ; \
4484
			found=1 ; \
4485
			${ECHO_MSG} -n " - found ($${_LIB_FILE})"; \
4486
		done ; \
4487
		if [ $${found} -eq 0 ]; then \
4488
			${ECHO_MSG} " - not found"; \
4481
			${ECHO_MSG} " - not found"; \
4489
			${ECHO_MSG} "===>    Verifying for $$lib in $$dir"; \
4482
			${ECHO_MSG} "===>    Verifying for $$lib in $$dir"; \
4490
			if [ ! -d "$$dir" ] ; then \
4483
			if [ ! -d "$$dir" ] ; then \
Lines 4493-4499 Link Here
4493
				${_INSTALL_DEPENDS} \
4486
				${_INSTALL_DEPENDS} \
4494
			fi ; \
4487
			fi ; \
4495
		else \
4488
		else \
4496
			${ECHO_MSG}; \
4489
			${ECHO_MSG} " - found ($${libfile})"; \
4497
		fi ; \
4490
		fi ; \
4498
	done
4491
	done
4499
.endif
4492
.endif
Lines 4801-4809 Link Here
4801
	done
4794
	done
4802
4795
4803
ACTUAL-PACKAGE-DEPENDS?= \
4796
ACTUAL-PACKAGE-DEPENDS?= \
4804
	if [ "${_LIB_RUN_DEPENDS}" != "  " ]; then \
4797
	depfiles="" ; \
4805
		${PKG_QUERY} "\"%n\": {origin: %o, version: \"%v\"}" " " ${_LIB_RUN_DEPENDS:C,[^:]*:([^:]*):?.*,\1,:C,${PORTSDIR}/,,} 2>/dev/null || : ; \
4798
	for lib in ${LIB_DEPENDS:C/\:.*//}; do \
4806
	fi
4799
		depfiles="$$depfiles `${SETENV} LIB_DIRS="${LIB_DIRS}" LOCALBASE="${LOCALBASE}" ${SH} ${SCRIPTSDIR}/find-lib.sh $${lib}`" ; \
4800
	done ; \
4801
	${SETENV} PKG_BIN="${PKG_BIN}" ${SH} ${SCRIPTSDIR}/actual-package-depends.sh $${depfiles} ${RUN_DEPENDS:C/(.*)\:.*/"\1"/}
4807
4802
4808
create-manifest:
4803
create-manifest:
4809
	@${MKDIR} ${METADIR}; \
4804
	@${MKDIR} ${METADIR}; \

Return to bug 197012