ports/*/jpeg "Thanks a lot guys"
Mel Flynn
mel.flynn+fbsd.ports at mailing.thruhere.net
Mon Aug 3 21:34:07 UTC 2009
On Saturday 01 August 2009 14:43:23 Peter Jeremy wrote:
> [I was also dismayed when I saw the bump].
>
> On 2009-Aug-01 18:33:43 +0100, Matthew Seaman
> <m.seaman at infracaninophile.co.uk> wrote:
> >You could, for instance, run ldd(1) against each of the files a port
> > installs and then record in /var/db/pkg/portname-1.2.3/+SHLIBS or
> > equivalently in the .tbz package tarball a sorted and uniq'd list of all
> > the shared libraries linked against.
>
> Unfortunately, this isn't sufficient because a non-trivial number of
> ports dlopen() libraries rather than directly linking against them.
> (The Xorg server is probably the most widely used culprit here).
>
> > Or you could resolve the shlib filenames back to the ports
> >that supply them, and create a 'SHLIB_PORTS_NEEDED' variable in the port
> >Makefiles.
>
> A third approach is to more carefully recurse through the dependency
> tree: Given A depends on B depends on C, B only needs bumping if it
> LIB_DEPENDS on A and C only needs bumping if it LIB_DEPENDS on B and
> B was bumped.
Unfortunately, qt4-* ports slice this idea. Because they don't use
LIB_DEPENDS, but a version dependant RUN and BUILD depends. I've coded a
"patch-recursive" target in my Mk/bsd.local.mk that can't depend just on
LIB_DEPENDS for this very reason (I needed the target so I can debug
crashes in kde4 programs, and have gdb's `list' command working).
--
Mel
_LIB_DEPEND_DIRS=${LIB_DEPENDS:C,^[^:]*:([^:]*).*$,\1,}
_QT4_DEPEND_DIRS=${BUILD_DEPENDS:Mqt4-*:C,^[^:]*:([^:]*).*$,\1,}
LIB-DEPENDS-LIST= \
L="${_LIB_DEPEND_DIRS} ${_QT4_DEPEND_DIRS}"; \
checked=""; \
while [ -n "$$L" ]; do \
l=""; \
for d in $$L; do \
case $$checked in \
$$d\ *|*\ $$d\ *|*\ $$d) \
continue;; \
esac; \
checked="$$checked $$d"; \
if [ ! -d $$d ]; then \
${ECHO_MSG} "${PKGNAME}: \"$$d\" non-existent -- dependency list incomplete" >&2; \
continue; \
fi; \
${ECHO_CMD} $$d; \
if ! children=$$(cd $$d && ${MAKE} -V _LIB_DEPEND_DIRS); then\
${ECHO_MSG} "${PKGNAME}: \"$$d\" erroneous -- dependency list incomplete" >&2; \
continue; \
fi; \
for child in $$children; do \
case "$$checked $$l" in \
$$child\ *|*\ $$child\ *|*\ $$child) \
continue;; \
esac; \
l="$$l $$child"; \
done; \
done; \
L=$$l; \
done
patch-recursive:
@for dir in ${.CURDIR} $$(${LIB-DEPENDS-LIST}); do \
echo "===> $${dir}"; \
${MAKE} -C $${dir} patch; \
done
show-libdepends-recursive:
@for dir in ${.CURDIR} $$(${LIB-DEPENDS-LIST}); do \
echo "===> $${dir}"; \
done
More information about the freebsd-ports
mailing list