techwolf@laptop ~/test $ sed --version
sed (GNU sed) 4.4
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
<snipped>
2017-08-11 15:39:45 (38.2 MB/s) - ‘BuildVersion.cmake’ saved [3605/3605]
techwolf@laptop ~/test $ sed -e 's:COMMAND ${MERCURIAL}:COMMAND ${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR}:' BuildVersion.cmake > BuildVersion1.cmake
techwolf@laptop ~/test $ sed -e 's:COMMAND ${MERCURIAL}:COMMAND ${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR}:g' BuildVersion.cmake > BuildVersion2.cmake
techwolf@laptop ~/test $ diff -u BuildVersion1.cmake BuildVersion2.cmake
techwolf@laptop ~/test $ diff -u BuildVersion.cmake BuildVersion1.cmake
--- BuildVersion.cmake 2017-08-11 15:39:45.639970357 -0400
+++ BuildVersion1.cmake 2017-08-11 15:40:47.646763237 -0400
@@ -25,10 +25,10 @@
# building an earlier revision. Instead, we use
# "hg identify -n" to get the local revision number
# of the actual state of the repository.
- #COMMAND ${MERCURIAL} log -r tip:0 --template '\\n'
+ #COMMAND ${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR} log -r tip:0 --template '\\n'
#COMMAND ${WORDCOUNT} -l
#COMMAND ${SED} "s/ //g"
- COMMAND ${MERCURIAL} identify -n
+ COMMAND ${MERCURIAL} --cwd ${CMAKE_SOURCE_DIR} identify -n
COMMAND ${SED} "s/+//" # [CR] Strip off any + from the revision number
OUTPUT_VARIABLE VIEWER_VERSION_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
The only difference in the sed commands was s/// and s///g. The diff between BuildVersion1.cmake and BuildVersion2.cmake should had one change. But sed is matching two lines without the s///g. All docs I have read says that without 'g', only the first match is changed. However, this is not in my case and was not notice for over two years due to my build script not breaking. I only notice this bug when I was doing some code cleanup and scratching my head as to why my build script was not breaking when in theory, it should had an error printed when hg could not see the repo.