Date: Mon, 10 Feb 2014 08:33:05 +0100 (CET) From: Marcus von Appen <mva@FreeBSD.org> To: FreeBSD-gnats-submit@freebsd.org Cc: portmgr@FreeBSD.org Subject: ports/186619: [Patch]: Fix symlink handling for uniquefiles USES Message-ID: <201402100733.s1A7X53W010171@medusa.sysfault.org> Resent-Message-ID: <201402100740.s1A7e04H009988@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 186619 >Category: ports >Synopsis: [Patch]: Fix symlink handling for uniquefiles USES >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Feb 10 07:40:00 UTC 2014 >Closed-Date: >Last-Modified: >Originator: Marcus von Appen >Release: FreeBSD 9.2-STABLE amd64 >Organization: >Environment: System: FreeBSD medusa.sysfault.org 9.2-STABLE FreeBSD 9.2-STABLE #14 r260254: Sat Jan 4 14:59:59 CET 2014 root@medusa.sysfault.org:/usr/obj/usr/src/sys/MEDUSA amd64 >Description: The uniquefiles USES does not handle symlinks to files, which do not point to a valid location. Since test -e only evaluates to true, if the symlink exists, symlinks within a stagedir pointing to ${PREFIX} would not be properly prefixed or suffixed. >How-To-Repeat: Several ports from the exp-run of ports/185947 suffer from that. >Fix: --- symlink_uniquefiles2.diff begins here --- Index: Mk/Uses/uniquefiles.mk =================================================================== --- Mk/Uses/uniquefiles.mk (revision 343443) +++ Mk/Uses/uniquefiles.mk (working copy) @@ -100,7 +100,7 @@ .if ${UNIQUE_DEFAULT_LINKS} == yes _DO_CONDITIONAL_SYMLINK= \ - if [ ! -e ${STAGEDIR}${PREFIX}/$${fname} ]; then \ + if [ ! -e ${STAGEDIR}${PREFIX}/$${fname} -a ! -L ${STAGEDIR}${PREFIX}/$${fname} ]; then \ ${ECHO_MSG} " $${newf} --> @$${fname}"; \ ${LN} -s ${PREFIX}/$${newf} ${STAGEDIR}${PREFIX}/$${fname}; \ ${ECHO_CMD} LINKED:$${newf}:$${fname} >> ${_UNIQUEPKGLIST}; \ @@ -116,7 +116,7 @@ .endif .for entry in ${UNIQUE_PREFIX_FILES} @fname=${entry}; \ - if [ -e ${STAGEDIR}${PREFIX}/$${fname} ]; then \ + if [ -e ${STAGEDIR}${PREFIX}/$${fname} -o -L ${STAGEDIR}${PREFIX}/$${fname} ]; then \ newf=$${fname%/*}/${UNIQUE_PREFIX}$${fname##*/} ; \ ${ECHO_MSG} " $${fname} --> $${newf}" ; \ ${MV} ${STAGEDIR}${PREFIX}/$${fname} ${STAGEDIR}${PREFIX}/$${newf}; \ @@ -129,7 +129,7 @@ .endfor .if ${UNIQUE_FIND_PREFIX_FILES} @for fname in `${UNIQUE_FIND_PREFIX_FILES}`; do \ - if [ -e ${STAGEDIR}${PREFIX}/$${fname} ]; then \ + if [ -e ${STAGEDIR}${PREFIX}/$${fname} -o -L ${STAGEDIR}${PREFIX}/$${fname} ]; then \ newf=$${fname%/*}/${UNIQUE_PREFIX}$${fname##*/} ; \ ${ECHO_MSG} " $${fname} --> $${newf}" ; \ ${MV} ${STAGEDIR}${PREFIX}/$${fname} ${STAGEDIR}${PREFIX}/$${newf}; \ @@ -147,7 +147,7 @@ .endif .for entry in ${UNIQUE_SUFFIX_FILES} @fname=${entry}; \ - if [ -e ${STAGEDIR}${PREFIX}/$${fname} ]; then \ + if [ -e ${STAGEDIR}${PREFIX}/$${fname} -o -L ${STAGEDIR}${PREFIX}/$${fname} ]; then \ newf=$${fname%/*}/$${fname##*/}${UNIQUE_SUFFIX}; \ ${ECHO_MSG} " $${fname} --> $${newf}"; \ ${MV} ${STAGEDIR}${PREFIX}/$${fname} ${STAGEDIR}${PREFIX}/$${newf}; \ @@ -160,7 +160,7 @@ .endfor .if ${UNIQUE_FIND_SUFFIX_FILES} @for fname in `${UNIQUE_FIND_SUFFIX_FILES}`; do \ - if [ -e ${STAGEDIR}${PREFIX}/$${fname} ]; then \ + if [ -e ${STAGEDIR}${PREFIX}/$${fname} -o -L ${STAGEDIR}${PREFIX}/$${fname} ]; then \ newf=$${fname%/*}/$${fname##*/}${UNIQUE_SUFFIX}; \ ${ECHO_MSG} " $${fname} --> $${newf}"; \ ${MV} ${STAGEDIR}${PREFIX}/$${fname} ${STAGEDIR}${PREFIX}/$${newf}; \ --- symlink_uniquefiles2.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201402100733.s1A7X53W010171>