aboutsummaryrefslogtreecommitdiff
path: root/Tools
diff options
context:
space:
mode:
authorAlexander Leidinger <netchild@FreeBSD.org>2007-09-04 19:32:36 +0000
committerAlexander Leidinger <netchild@FreeBSD.org>2007-09-04 19:32:36 +0000
commit0d7a3e7e9f64e12427eb513f7e29f382c79ddf5c (patch)
treed8ceee31bdb7109bb4e7fcef27139e6f49769b03 /Tools
parent0ec0a281434735e1f7d99282a5bb19a95ee19a1a (diff)
downloadports-0d7a3e7e9f64e12427eb513f7e29f382c79ddf5c.tar.gz
ports-0d7a3e7e9f64e12427eb513f7e29f382c79ddf5c.zip
Notes
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/scripts/explicit_lib_depends.sh39
-rwxr-xr-xTools/scripts/neededlibs.sh2
-rwxr-xr-xTools/scripts/resolveportsfromlibs.sh93
3 files changed, 120 insertions, 14 deletions
diff --git a/Tools/scripts/explicit_lib_depends.sh b/Tools/scripts/explicit_lib_depends.sh
index afd8e289ccd7..e9de4cb9fa21 100755
--- a/Tools/scripts/explicit_lib_depends.sh
+++ b/Tools/scripts/explicit_lib_depends.sh
@@ -83,6 +83,15 @@ if [ -z "${PKG_DBDIR} -o ! -d "${PKG_DBDIR}" ]; then
PKG_DBDIR=/var/db/pkg
fi
+libtool=$(which libtool 2>/dev/null)
+if [ -x ${libtool} ]; then
+ libtool_deplibs=$(grep link_all_deplibs ${libtool} | head -1 | \
+ cut -d = -f 2)
+ if [ "X${libtool_deplibs}" != Xno ]; then
+ echo WARNING: your libtool records dependencies recursively, you can not trust the following output. | fmt
+ fi
+fi
+
for i in $@; do
if [ -d "${i}" ]; then
current_port="${i}"
@@ -118,6 +127,34 @@ for i in $@; do
' < ${current_port}/+CONTENTS | \
xargs ${PORTSDIR}/Tools/scripts/neededlibs.sh | \
xargs ${PORTSDIR}/Tools/scripts/resolveportsfromlibs.sh ${bases} | \
- egrep -v "${myorigin}\$"
+ egrep -v "(\(${myorigin}\)|${myorigin})\$"
done | sort -u
+
+exit 0
+
+# NOT YET: untested, just an outline of what needs to be done
+awk ' /USE_GNOME+=/ {
+ if (have_gnome != 1) {
+ use_gnome = sprintf("%s", $2);
+ } else {
+ use_gnome = sprintf("%s %s", use_gnome, $2);
+ have_gnome = 1;
+ }
+ }
+ /USE_XORG+=/ {
+ if (have_gnome != 1) {
+ use_gnome = sprintf("%s", $2);
+ } else {
+ use_gnome = sprintf("%s %s", use_gnome, $2);
+ have_gnome = 1;
+ }
+ }
+ END {
+ if (have_gnome == 1) {
+ printf("USE_GNOME= %s\n", have_gnome);
+ }
+ if (have_xorg == 1) {
+ printf("USE_XORG= %s\n", have_xorg);
+ }
+ }'
diff --git a/Tools/scripts/neededlibs.sh b/Tools/scripts/neededlibs.sh
index 3382996b41c6..58d0bb124c00 100755
--- a/Tools/scripts/neededlibs.sh
+++ b/Tools/scripts/neededlibs.sh
@@ -48,7 +48,7 @@ for i in "$@"; do
kind=$(file -bi "$i")
case "${kind}" in
- application/x-executable*)
+ application/x-executable*|application/x-sharedlib*)
# ok, fall through
;;
*)
diff --git a/Tools/scripts/resolveportsfromlibs.sh b/Tools/scripts/resolveportsfromlibs.sh
index ca2ba2fe5451..ed207aebfae6 100755
--- a/Tools/scripts/resolveportsfromlibs.sh
+++ b/Tools/scripts/resolveportsfromlibs.sh
@@ -88,6 +88,13 @@ fi
for i in $@; do
result=""
+ case $i in
+ libcrypto.so|libssl.so)
+ echo "USE_OPENSSL= yes"
+ continue
+ ;;
+ esac
+
if [ -e /lib/$i -o -e /usr/lib/$i ]; then
# base system lib, skipping
shift
@@ -95,45 +102,107 @@ for i in $@; do
fi
- lib="$(echo $i | sed -e 's:^lib:: ; s:\.so.*::')"
+ lib=${i##*/}
+ lib="$(echo ${lib} | sed -e 's:^lib:: ; s:\.so.*::')"
+ # I didn't managed to make awk accept a pattern with a '/' inside,
+ # so don't complain about using grep+awk instead of awk only.
+ lib_pathname=$(ldconfig -r | grep $i | awk '{print $3}')
origin=unknown
for base in ${bases}; do
port=$(pkg_which "${base}/lib/$i")
if [ -f /var/db/pkg/$port/+CONTENTS ]; then
- origin=$(grep "@comment ORIGIN:" /var/db/pkg/$port/+CONTENTS | sed -e 's/@comment ORIGIN://')
+ origin=$(grep "@comment ORIGIN:" \
+ /var/db/pkg/$port/+CONTENTS \
+ | sed -e 's/@comment ORIGIN://')
break
else
continue
fi
done
- XORG="$(egrep ${origin}\$ ${PORTSDIR}/Mk/bsd.xorg.mk 2>/dev/null \
- | grep _LIB | sed -e 's:_LIB.*::')"
+ if [ ${origin} = unknown ]; then
+ if [ -f ${lib_pathname} ]; then
+ port=$(pkg_which "${lib_pathname}")
+ if [ -f /var/db/pkg/$port/+CONTENTS ]; then
+ origin=$(grep "@comment ORIGIN:" \
+ /var/db/pkg/$port/+CONTENTS \
+ | sed -e 's/@comment ORIGIN://')
+ else
+ result="${lib} ($i) not found, unknown origin"
+ fi
+ fi
+ fi
+
+ if [ ${origin} != unknown ]; then
+ category=${origin%/*}
+ portname=${origin##*/}
+
+ XORG="$(egrep ${origin}\$ ${PORTSDIR}/Mk/bsd.xorg.mk \
+ 2>/dev/null | grep _LIB | sed -e 's:_LIB.*::')"
+
+ GNOME="$(egrep ${origin}\$ ${PORTSDIR}/Mk/bsd.gnome.mk \
+ 2>/dev/null | grep _LIB | sed -e 's:_LIB.*::')"
- GNOME="$(egrep ${origin}\$ ${PORTSDIR}/Mk/bsd.gnome.mk 2>/dev/null \
- | grep _LIB | sed -e 's:_LIB.*::')"
+ EFL="$([ "X$(make ${PORTSDIR}/Mk/bsd.efl.mk -V \
+ _${portname}_CATEGORY )" = "X${category}" ] && \
+ echo ${portname})"
+
+ GL="$(egrep ${origin}\$ ${PORTSDIR}/Mk/bsd.port.mk \
+ 2>/dev/null | grep _LIB_DEPENDS \
+ | sed -e 's:_GL_:: ; s:_LIB_DEPENDS.*::')"
+
+ fi
if [ -n "${XORG}" ]; then
- result="USE_XORG+=${XORG}"
+ result="USE_XORG+= ${XORG} (${origin})"
+ if [ $(echo ${XORG} | wc -w) -ne 1 ]; then
+ result="${result} # result ambiguous, check yourself: ${lib}"
+ fi
fi
if [ -n "${GNOME}" ]; then
- result="USE_GNOME+=${GNOME}"
+ result="USE_GNOME+= ${GNOME} (${origin})"
+ if [ $(echo ${GNOME} | wc -w) -ne 1 ]; then
+ result="${result} # result ambiguous, check yourself: ${lib}"
+ fi
+ fi
+
+ if [ -n "${EFL}" ]; then
+ result="USE_EFL+= ${EFL} (${origin})"
+ fi
+
+ if [ -n "${GL}" ]; then
+ result="USE_GL+= ${GL} (${origin})"
fi
# USE_xxx exceptions, sorting key is the USE_xxx name
# START and STOP are needed for a perfect match
case "START${origin}STOP" in
+ STARTdevel/famSTOP|STARTdevel/gaminSTOP)
+ result="USE_FAM= yes (${origin})"
+ ;;
STARTprint/freetypeSTOP)
- result="USE_FREETYPE=yes"
+ result="USE_FREETYPE= yes (${origin})"
;;
STARTdevel/gettextSTOP)
- result="USE_GETTEXT=yes"
+ result="USE_GETTEXT= yes (${origin})"
;;
STARTconverters/libiconvSTOP)
- result="USE_ICONV=yes"
+ result="USE_ICONV= yes (${origin})"
+ ;;
+ STARTnet/openldap*sasl*clientSTOP)
+ result="USE_OPENLDAP= yes WANT_OPENLDAP_SASL= yes"
+ ;;
+ STARTnet/openldap*clientSTOP)
+ result="USE_OPENLDAP= yes (${origin})"
+ ;;
+ STARTdevel/sdl12STOP)
+ result="USE_SDL= sdl (${origin})"
+ ;;
+ /sdl_)
+ result="USE_SDL= $(echo $origin | sed -e 's:.*/sdl_::g') (${origin})"
;;
esac
@@ -141,6 +210,6 @@ for i in $@; do
result="${lib}:\${PORTSDIR}/${origin}"
fi
- echo ${result}
+ echo "${result}"
shift
done | sort -u