From c39fa2e617bede381e851fb6f70e41f18307c50a Mon Sep 17 00:00:00 2001 From: Grigori Rybkin <grybkine@cern.ch> Date: Thu, 15 Jan 2015 10:38:31 +0100 Subject: [PATCH] use -tag_add=<tags> (PackDist-00-14-02) PackDist-00-14-02 * scripts/pack-extern.sh: When evaluating macro values, use -tag_add=<tags> (rather than -tag=<tags>) * scripts/pack-proj.sh: idem, also for setup via cmtsite * scripts/proj-run.sh: When doing setup via cmthome, use -tag_add=<tags> (rather than -tag=<tags>) 2015-01-13 Grigori Rybkine <Grigori.Rybkine@cern.ch> PackDist-00-14-01 * scripts/pack-extern.sh: Extend the work around for LCG 68 and later presenting external s/w paths depending on LCG version to external s/w packages that use LCG_Interfaces package(s) and are also affected 2015-01-12 Grigori Rybkine <Grigori.Rybkine@cern.ch> PackDist-00-14-00 * scripts/pack-extern.sh: Work around LCG 68 and later presenting external s/w paths depending on LCG version 2014-09-27 Grigori Rybkine <Grigori.Rybkine@cern.ch> PackDist-00-13-04 * scripts/pack-proj.sh: enhance diagnostic message of scripts/relink.py invocation ... (Long ChangeLog diff - truncated) --- PackDist/scripts/pack-extern.sh | 33 +++++++++++------- PackDist/scripts/pack-proj.sh | 49 ++++++++++++++------------- PackDist/scripts/proj-run.sh | 8 ++--- PackDist/scripts/relink.py | 60 ++++++++++++++++++++++----------- 4 files changed, 90 insertions(+), 60 deletions(-) diff --git a/PackDist/scripts/pack-extern.sh b/PackDist/scripts/pack-extern.sh index 1ae2f23e875..fff8052c8e5 100755 --- a/PackDist/scripts/pack-extern.sh +++ b/PackDist/scripts/pack-extern.sh @@ -137,7 +137,7 @@ _chk_links () [ -d "$1" ] || return 0 local tmperr=$(mktemp -t tmp.XXXXXXXXXX) || return 1 -# /^other_fs|^dangling/ { print >tmperr; next } +type symlinks >/dev/null || { warn "type" $FUNCNAME; return 0; } symlinks -rv $1 | awk -v tmperr=$tmperr ' /^absolute|^other_fs|^dangling|^messy/ { print >tmperr; next } @@ -402,13 +402,13 @@ else unset reqpatch fi # Check if there are external packages required -for pkg in `cmt -q -tag=ATLAS show macro_value ${package}_requires`; do +for pkg in `cmt -q -tag_add=ATLAS show macro_value ${package}_requires`; do [ -f "${tmpreq:-}" ] || tmpreq=$(mktemp -t tmp.XXXXXXXXXX) || { error "mktemp" $FUNCNAME; exit 1; } echo "$pkg" >>$tmpreq || { error "echo" $FUNCNAME; exit 1; } done # Check if there is external software to pack -export_paths=`cmt -q -tag=ATLAS show macro_value ${package}_export_paths` +export_paths=`cmt -q -tag_add=ATLAS show macro_value ${package}_export_paths` # Remove leading and trailing whitespace (to make the value empty if it was whitespace) src=(${export_paths}) @@ -419,7 +419,7 @@ export_paths=${src[*]} if [ -n "$export_paths" ]; then -dst=($(cmt -q -tag=ATLAS,STANDALONE show macro_value ${package}_export_paths)) +dst=($(cmt -q -tag_add=ATLAS,STANDALONE show macro_value ${package}_export_paths)) dst=(${dst[*]#${SITEROOT}/}) info "source:\n'${src[*]}'" $FUNCNAME @@ -442,18 +442,27 @@ info "requires:\n'$(<$tmpreq)'" $FUNCNAME fi native_version=`cmt -q -tag_add=PACK show macro_value ${package}_native_version` -#native_version=`cmt -q show macro_value ${package}_native_version` +if [ -n "$native_version" ]; then + if [ LCG_Interfaces = "$(cmt -q show macro_value ${package}_offset)" ] || \ + cmt -q show uses|grep -q -F -w LCG_Interfaces; then + LCG_config_version=$(cmt -q show macro_value LCG_config_version) + _LCG_config_version=$(echo ${LCG_config_version}|sed -n 's/^\([[:digit:]]\{1,\}\).*/\1/p') + if [ -n "${_LCG_config_version}" ] && [ ${_LCG_config_version} -ge 68 ] && \ + [ -n "$export_paths" ] && echo "${dst[*]}"|grep -q -F "/LCG_${LCG_config_version}/" && \ + ! echo "$native_version"|grep -q -F "_lcgcmt${LCG_config_version}"; then + version=${native_version}_lcgcmt${LCG_config_version} + fi + fi + [ -z ${version+t} ] && version=$native_version +else version=`cmt show macro_value version` [ "${version}" = "v*" ] && { warn "Invalid CMT package version: $version: $project $release $package" $FUNCNAME; version=v1; } -if [ -n "$native_version" ]; then - version=$native_version -else warn "Macro ${package}_native_version unspecified: $project $release $package $version" $FUNCNAME fi -platform=`cmt -q -tag=PACK show macro_value ${package}_platform` +platform=`cmt -q -tag_add=PACK show macro_value ${package}_platform` # # Need to handle dbg mode @@ -487,7 +496,7 @@ if [ -n "$export_paths" ] && [[ ${CMTCONFIG} == *dbg* ]] && [ -z ${platform} ]; dst=(${dst[*]}) fi -follow_symlinks=`cmt -q -tag=PACK show macro_value ${package}_follow_symlinks` +follow_symlinks=`cmt -q -tag_add=PACK show macro_value ${package}_follow_symlinks` # if [ -f ${externcache}/kits/$name.tar.gz -a "${overwrite}" != yes ]; then # info "Existing ${externcache}/kits/$name.tar.gz will not be overwritten" $FUNCNAME @@ -510,8 +519,8 @@ if [ -f $fpath -a "${overwrite}" != yes ]; then else -#follow_symlinks=`cmt -tag=PACK show macro_value ${package}_follow_symlinks` -include_objfiles=`cmt -q -tag=PACK show macro_value ${package}_include_objfiles` +#follow_symlinks=`cmt -tag_add=PACK show macro_value ${package}_follow_symlinks` +include_objfiles=`cmt -q -tag_add=PACK show macro_value ${package}_include_objfiles` if [ -n "$include_objfiles" ]; then unset exclude_objfiles else diff --git a/PackDist/scripts/pack-proj.sh b/PackDist/scripts/pack-proj.sh index 74d10ad8909..5fcda8576af 100755 --- a/PackDist/scripts/pack-proj.sh +++ b/PackDist/scripts/pack-proj.sh @@ -557,14 +557,15 @@ fi [ -d $tmpdir/${projdir}/$3 ] || return 0 -$scriptdir/relink.py -S $1 -H ${projdir}/$3 ${4:+-X ${4}} $tmpdir/${projdir}/$3 >/dev/null 2>|$tmperr -#projsrc=$1 projhat=${projdir}/$3 $scriptdir/relink.py $tmpdir/${projdir}/$3 ${4:-} >/dev/null 2>|$tmperr -#projsrc=$1 projhat=${projdir}/$3 $scriptdir/relink.py $tmpdir/${projdir}/$3 >/dev/null 2>|$tmperr -#projsrc=$1 projdst=${projdir}/$3 $scriptdir/relink.py $tmpdir/${projdir}/$3 >/dev/null 2>|$tmperr +$scriptdir/relink.py -S $1 -H ${projdir}/$3 ${4:+-X ${4}} $tmpdir/${projdir}/$3 >/dev/null 2>|$tmperr || +{ [ -s $tmperr ] && cat $tmperr >&2 +error "$scriptdir/relink.py" $FUNCNAME; return 1; } + [ -s $tmperr ] && warn "\n$(<$tmperr)" $FUNCNAME if [ -z "${4:-}" ]; then # check symlinks left +type symlinks >/dev/null || { warn "type" $FUNCNAME; return 0; } symlinks -r $tmpdir/${projdir}/$3 | grep '^absolute\|^other_fs\|^dangling\|^messy' >|$tmperr # check exit status instead? @@ -841,8 +842,8 @@ local cntnrcmt=${cntnr[1]}${cntnr[0]}/${verdir}cmt cd $1/$cntnrcmt || return 1 [ -f ${tmppatch}/$2/$3/$cntnrcmt/requirements ] && export CMTUSERCONTEXT=$(echo ${tmppatch}/$2/$3/$cntnrcmt) -local project_post=$(cmt -q -tag=PACK show macro_value $(sed 's/[-.]/_/g' <<<${2})_post) -#local project_post=$(cmt -tag=PACK show macro_value ${2}_post) +local project_post=$(cmt -q -tag_add=PACK show macro_value $(sed 's/[-.]/_/g' <<<${2})_post) +#local project_post=$(cmt -tag_add=PACK show macro_value ${2}_post) unset CMTUSERCONTEXT cd $OLDPWD @@ -874,36 +875,36 @@ case ${CMTCONFIG} in *) local mode=opt ;; esac cat <<EOF -unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${3},${mode},noTest; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; cmt br - cmt -no_cleanup config; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/Control/AthenaRunTime/*/cmt; . ./setup.sh; cmt build library_links; ${project_post:+cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; ${project_post}; }true +unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${3},${mode},noTest; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; cmt br - cmt -no_cleanup config; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/Control/AthenaRunTime/*/cmt; . ./setup.sh; cmt build library_links; ${project_post:+cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; ${project_post}; }true EOF -#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${3},${mode},noTest; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; cmt -quiet br - cmt -quiet -no_cleanup config; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/Control/AthenaRunTime/*/cmt; . setup.sh; cmt build library_links; ${project_post:+cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; ${project_post}; }true +#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${3},${mode},noTest; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; cmt -quiet br - cmt -quiet -no_cleanup config; cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/Control/AthenaRunTime/*/cmt; . setup.sh; cmt build library_links; ${project_post:+cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; ${project_post}; }true elif [ $2 == LCGCMT ]; then cat <<EOF -unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true +unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true EOF -#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true +#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true elif [ $2 == Gaudi ]; then cat <<EOF -unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true +unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true EOF -#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true +#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true elif [[ $2 == Atlas?* ]]; then # Atlas projects cat <<EOF -unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${2},${3},${mode},noTest; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true +unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${2},${3},${mode},noTest; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true EOF -#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${2},${3},${mode},noTest; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true +#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${2},${3},${mode},noTest; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true else cat <<EOF -unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true +unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt br - 'cmt -no_cleanup config;cmt build library_links'; ${project_post:+${project_post}; }true EOF -#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true +#PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - 'cmt -quiet -no_cleanup config;cmt -quiet build library_links'; ${project_post:+${project_post}; }true # cat <<EOF -# PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - cmt -quiet -no_cleanup config; ${project_post:+${project_post}; }true +# PATH=/bin:/usr/bin; unset CMTROOT CMTSITE; . @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH; cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; cmt -quiet br - cmt -quiet -no_cleanup config; ${project_post:+${project_post}; }true # EOF fi @@ -931,8 +932,8 @@ local cntnrcmt=${cntnr[1]}${cntnr[0]}/${verdir}cmt cd $1/$cntnrcmt || return 1 [ -f ${tmppatch}/$2/$3/$cntnrcmt/requirements ] && export CMTUSERCONTEXT=$(echo ${tmppatch}/$2/$3/$cntnrcmt) -local project_preun=$(cmt -q -tag=PACK show macro_value $(sed 's/[-.]/_/g' <<<${2})_preun) -#local project_preun=$(cmt -tag=PACK show macro_value ${2}_preun) +local project_preun=$(cmt -q -tag_add=PACK show macro_value $(sed 's/[-.]/_/g' <<<${2})_preun) +#local project_preun=$(cmt -tag_add=PACK show macro_value ${2}_preun) local installarea=$(cmt -q show macro_value ${2}_installarea_prefix) unset CMTUSERCONTEXT cd $OLDPWD @@ -999,7 +1000,7 @@ cat <<EOF if [ \$1 -eq 0 ]; then shift \$#; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; -. @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${3},${mode},noTest; +. @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${3},${mode},noTest; ${project_preun:+cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; ${project_preun} }cd @INSTALL_PREFIX@/$(basename $(dirname $1))/$3/AtlasRelease/*/cmt; @@ -1014,7 +1015,7 @@ cat <<EOF if [ \$1 -eq 0 ]; then shift \$#; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; -. @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; +. @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; ${project_preun:+cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt ${project_preun} @@ -1033,7 +1034,7 @@ cat <<EOF if [ \$1 -eq 0 ]; then shift \$#; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; -. @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; +. @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT ${project_preun:+cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; ${project_preun} @@ -1051,7 +1052,7 @@ cat <<EOF if [ \$1 -eq 0 ]; then shift \$#; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; -. @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${2},${3},${mode},noTest; +. @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${2},${3},${mode},noTest; ${project_preun:+cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; ${project_preun} }cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; @@ -1068,7 +1069,7 @@ cat <<EOF if [ \$1 -eq 0 ]; then shift \$#; unset CMTROOT CMTSITE; cd @INSTALL_PREFIX@/cmtsite; -. @INSTALL_PREFIX@/cmtsite/setup.sh -tag=${mode},noTest; +. @INSTALL_PREFIX@/cmtsite/setup.sh -tag_add=${mode},noTest; unset CMTPATH CMTHOME CMTUSERCONTEXT; ${project_preun:+cd @INSTALL_PREFIX@/$2/$3/$cntnrcmt; ${project_preun} diff --git a/PackDist/scripts/proj-run.sh b/PackDist/scripts/proj-run.sh index 2201f62e9d4..bcde0b560d8 100755 --- a/PackDist/scripts/proj-run.sh +++ b/PackDist/scripts/proj-run.sh @@ -369,7 +369,7 @@ unset CMTPATH CMTPROJECTPATH unset CMTROOT CMTSITE if [ $project == AtlasRelease ]; then [ "$PROJRUNDBG" ] && set +x - . ${cmthome}/setup.sh -tag=${release},${mode},noTest${tags:+,${tags}} || exit 1 + . ${cmthome}/setup.sh -tag_add=${release},${mode},noTest${tags:+,${tags}} || exit 1 [ "$PROJRUNDBG" ] && set -x if [ -z ${projbase} ]; then projbase=`cmt -q show macro_value ATLAS_DIST_AREA` @@ -382,7 +382,7 @@ if [ $project == AtlasRelease ]; then elif [ $project == LCGCMT -o $project == Gaudi ]; then [ "$PROJRUNDBG" ] && set +x - . ${cmthome}/setup.sh -tag=${mode},noTest${tags:+,${tags}} || exit 1 + . ${cmthome}/setup.sh -tag_add=${mode},noTest${tags:+,${tags}} || exit 1 [ "$PROJRUNDBG" ] && set -x if [ -z ${projbase} ]; then projbase=`cmt -q show macro_value EXTERNAL_PROJECT_AREA` @@ -399,7 +399,7 @@ elif [ $project == LCGCMT -o $project == Gaudi ]; then elif [ $project == CMT ]; then [ "$PROJRUNDBG" ] && set +x - . ${cmthome}/setup.sh -tag=${mode},noTest${tags:+,${tags}} || exit 1 + . ${cmthome}/setup.sh -tag_add=${mode},noTest${tags:+,${tags}} || exit 1 [ "$PROJRUNDBG" ] && set -x cmtinfo=(`cmt show uses | awk ' $1 == "use" && $2 == "CMT" { gsub(/[()]/, "", $4); print $4, $3; exit } @@ -418,7 +418,7 @@ $1 == "use" && $2 == "CMT" { gsub(/[()]/, "", $4); print $4, $3; exit } else [ "$PROJRUNDBG" ] && set +x - . ${cmthome}/setup.sh -tag=${project},${release},${mode},noTest,builds${tags:+,${tags}} || exit 1 + . ${cmthome}/setup.sh -tag_add=${project},${release},${mode},noTest,builds${tags:+,${tags}} || exit 1 [ "$PROJRUNDBG" ] && set -x if [ -z ${projbase} ]; then projbase=`echo $CMTPROJECTPATH | sed 's#^:\+##' | cut -d: -f1` diff --git a/PackDist/scripts/relink.py b/PackDist/scripts/relink.py index 74af744eb85..540c573a6ec 100755 --- a/PackDist/scripts/relink.py +++ b/PackDist/scripts/relink.py @@ -6,8 +6,8 @@ Developed against Python 2.2 """ -__version__ = '0.6.0' -__date__ = 'Thu Oct 27 2011' +__version__ = '0.7.0' +__date__ = 'Fri Sep 26 2014' __author__ = 'Grigori Rybkine <Grigori.Rybkine@cern.ch>' import os, sys @@ -169,9 +169,7 @@ def relink(path, Arg = (None, False)): if v: print 'symlinked', `hatpath`, '->', `src` else: print >> sys.stderr, 'not_exported:', srcpath - #print >> sys.stderr, 'not_exported:', hatpath, '->', s os.remove(path); - #if v: print >> sys.stderr, 'removed', `hatpath` if v: print >> sys.stderr, 'removed', `hatpath`, '->', `s` else: print >> sys.stderr, 'external:', hatpath, '->', s @@ -221,25 +219,47 @@ class ExportPaths(object): for l in f: i = l.split() assert len(i) == 2, '%s: %s: Wrong line format' % (path, `l`) - #i = [os.path.normpath(p) for p in i] - i[0] = os.path.realpath(i[0]) - i[1] = os.path.normpath(i[1]) - if i[0] in self.paths: - if i[1] == self.paths[i[0]]: - print >>sys.stderr, '%s %s: Duplicate export path' % \ - (i[0], i[1]) - else: - print >>sys.stderr, '%s %s, %s: Redundant export paths' % \ - (i[0], self.paths[i[0]], i[1]) - self.paths[i[0]] = i[1] + r = os.path.realpath(i[0]) + i = [os.path.normpath(p) for p in i] + assert os.path.realpath(i[0]) == r, '%s (%s): Ambiguous export path' % (i[0], i[1]) + # i[0] = os.path.realpath(i[0]) + # i[1] = os.path.normpath(i[1]) + + for (_r, s), d in self.paths.iteritems(): + if r == _r: + if i[0] == s and i[1] == d: + print >>sys.stderr, '%s (%s): Duplicate export path' % (i[0], i[1]) + else: + print >>sys.stderr, '%s (%s), %s (%s): Redundant export paths' % \ + (i[0], i[1], s, d) + self.paths[(r, i[0])] = i[1] + # if i[0] in self.paths: + # if i[1] == self.paths[i[0]]: + # print >>sys.stderr, '%s %s: Duplicate export path' % \ + # (i[0], i[1]) + # else: + # print >>sys.stderr, '%s %s, %s: Redundant export paths' % \ + # (i[0], self.paths[i[0]], i[1]) + # self.paths[i[0]] = i[1] f.close() def destination(self, path): -# pathl = path.lstrip(os.sep).split(os.sep) - pathl = os.path.realpath(path).lstrip(os.sep).split(os.sep) - for s, d in self.paths.iteritems(): + rpathl = os.path.realpath(path).lstrip(os.sep).split(os.sep) + pathl = os.path.normpath(path).lstrip(os.sep).split(os.sep) + for (r, s), d in self.paths.iteritems(): + # first try with real paths + rl = r.lstrip(os.sep).split(os.sep) + head = commonhead(rl, rpathl) +# print >>sys.stderr, 'destination: %s %s: %s' % \ +# (str(rl), str(rpathl), str(head)) + if len(rl) == len(head): + return os.path.join(*(d.split(os.sep) + rpathl[len(rl):])) + elif len(rpathl) == len(head): + dl = d.lstrip(os.sep).split(os.sep) + if len(dl) + len(rpathl) - len(rl) > 0: + return os.path.join(*dl[:len(dl) + len(rpathl) - len(rl)]) + # then try with normalized paths sl = s.lstrip(os.sep).split(os.sep) -# sl = os.path.realpath(s).lstrip(os.sep).split(os.sep) head = commonhead(sl, pathl) # print >>sys.stderr, 'destination: %s %s: %s' % \ # (str(sl), str(pathl), str(head)) @@ -248,7 +268,7 @@ class ExportPaths(object): elif len(pathl) == len(head): dl = d.lstrip(os.sep).split(os.sep) if len(dl) + len(pathl) - len(sl) > 0: - return os.path.join(*(dl[:len(dl) + len(pathl) - len(sl)])) + return os.path.join(*dl[:len(dl) + len(pathl) - len(sl)]) return None def main(argv=[__name__]): -- GitLab