diff --git a/wmake/wmakeBuildInfo b/wmake/wmakeBuildInfo index b05b1cf1f1..8aca435dbe 100755 --- a/wmake/wmakeBuildInfo +++ b/wmake/wmakeBuildInfo @@ -30,6 +30,7 @@ # # Environment # - WM_PROJECT_DIR +# - WM_PROJECT_VERSION # - WM_DIR (unset defaults to WM_PROJECT_DIR/wmake) # # Note @@ -179,6 +180,13 @@ declare -A metaInfo # getMakeInfo() { + if [ "${#makeInfo[*]}" -eq 4 ] + then + ##echo "use cached value for make info" 1>&2 + return 0 + fi + ##echo "get make info" 1>&2 + local api patch build branch makeInfo=() @@ -206,7 +214,6 @@ getMakeInfo() makeInfo[patch]="${patch:-0}" # default is 0 makeInfo[branch]="$branch" makeInfo[build]="$build" - makeInfo[cached]=true } @@ -224,6 +231,13 @@ getMakeInfo() # getMetaInfo() { + if [ "${#metaInfo[*]}" -eq 4 ] + then + ##echo "use cached value for meta info" 1>&2 + return 0 + fi + ##echo "get meta info" 1>&2 + local api patch build branch metaInfo=() @@ -242,7 +256,6 @@ getMetaInfo() metaInfo[patch]="${patch:-0}" # default is 0 metaInfo[branch]="$branch" metaInfo[build]="$build" - metaInfo[cached]=true } @@ -257,14 +270,14 @@ getMetaInfo() # getApi() { - [ -n "${makeInfo[cached]}" ] || getMakeInfo + getMakeInfo # Local copy local api="${makeInfo[api]}" if [ -z "$api" ] then - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMetaInfo api="${metaInfo[api]}" fi @@ -284,7 +297,7 @@ getApi() # getPatchLevel() { - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMetaInfo # Local copy local value="${metaInfo[patch]}" @@ -301,10 +314,8 @@ getPatchLevel() # Report make info reportMakeInfo() { - local key - - [ -n "${makeInfo[cached]}" ] || getMakeInfo - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMakeInfo + getMetaInfo local patch="${metaInfo[patch]}" # <- From meta-info only makeInfo[patch]="${patch:=0}" # Extra safety @@ -320,9 +331,7 @@ reportMakeInfo() # Report meta info reportMetaInfo() { - local key - - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMetaInfo local patch="${metaInfo[patch]}" # <- From meta-info only metaInfo[patch]="${patch:=0}" # Extra safety @@ -343,14 +352,26 @@ checkDiff() local verbose="$1" local key diff - [ -n "${makeInfo[cached]}" ] || getMakeInfo - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMakeInfo + getMetaInfo for key in api patch branch build do if [ "${makeInfo[$key]}" != "${metaInfo[$key]}" ] then - diff="$diff $key" + case "$key" in + (branch | build) + # Only trigger when make info (branch, build) are non-empty + if [ -n "${makeInfo[$key]}" ] + then + diff="$diff $key" + fi + + ;; + (*) + diff="$diff $key" + ;; + esac fi done @@ -365,7 +386,8 @@ checkDiff() done fi - test -z "$diff" + # No diffs, but never permit entirely empty values for build. + test -z "$diff" || test -z "${makeInfo[build]}${metaInfo[build]}" } @@ -374,8 +396,8 @@ checkDiff() # performUpdate() { - [ -n "${makeInfo[cached]}" ] || getMakeInfo - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMakeInfo + getMetaInfo # Local copies of the make info local api="${makeInfo[api]}" @@ -389,6 +411,9 @@ performUpdate() [ -n "$branch" ] || branch="${metaInfo[branch]}" [ -n "$build" ] || build="${metaInfo[build]}" + # Fallback to WM_PROJECT_VERSION alone + [ -n "$build" ] || build="${WM_PROJECT_VERSION:-unknown}" + local outputFile # build-info @@ -447,8 +472,8 @@ performFiltering() exit 2 } - [ -n "${makeInfo[cached]}" ] || getMakeInfo - [ -n "${metaInfo[cached]}" ] || getMetaInfo + getMakeInfo + getMetaInfo # Local copies of the make info local api="${makeInfo[api]}" @@ -479,7 +504,8 @@ performFiltering() if [ -z "$build" ] then build="${metaInfo[build]}" - build="nogit${build:+-$build}" + # Fallback to WM_PROJECT_VERSION + build="${build:-${WM_PROJECT_VERSION:-unknown}}" fi sed \