support/download: rename internal 'verbose' variable where applicable
PATCH 1/2 support/download: rename internal 'verbose' variable where applicable
From: Thomas De Schampheleire <[email protected]>
Most 'verbose' variable inside the download helpers actually mean 'quiet'. I.e. they are assigned in case quiet operation is requested, and empty in case of non-quiet operation. Using the name 'verbose' for such a variable is confusing, especially when you want to test the variable on emptiness or non-emptiness (in a subsequent commit).
--- support/download/bzr | 6 +++--- support/download/cvs | 6 +++--- support/download/git | 4 ++-- support/download/hg | 8 ++++---- support/download/scp | 6 +++--- support/download/svn | 6 +++--- support/download/wget | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-)
support/download/bzr +3 -3
@@ -16,10 +16,10 @@ set -e # BZR : the bzr command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; u) uri="${OPTARG}";; c) cset="${OPTARG}";;
@@ -53,6 +53,6 @@ if [ ${bzr_version} -ge ${bzr_min_version} ]; then timestamp_opt="--per-file-timestamps" fi -_bzr export ${verbose} --root="'${basename}/'" --format=tgz \ +_bzr export ${quiet} --root="'${basename}/'" --format=tgz \ ${timestamp_opt} - "${@}" "'${uri}'" -r "'${cset}'" \ >"${output}"
support/download/cvs +3 -3
@@ -16,10 +16,10 @@ set -e # Environment: # CVS : the cvs command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-Q;; + q) quiet=-Q;; o) output="${OPTARG}";; u) uri="${OPTARG#*://}";; c) rev="${OPTARG}";;
@@ -57,7 +57,7 @@ if [[ ! "${uri}" =~ ^: ]]; then fi export TZ=UTC -_cvs ${verbose} -z3 -d"'${uri}'" \ +_cvs ${quiet} -z3 -d"'${uri}'" \ co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" tar czf "${output}" "${basename}"
support/download/git +2 -2
@@ -50,11 +50,11 @@ _on_error() { exec "${myname}" "${OPTS[@]}" || exit ${ret} } -verbose= +quiet= recurse=0 while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q; exec >/dev/null;; + q) quiet=-q; exec >/dev/null;; r) recurse=1;; o) output="${OPTARG}";; u) uri="${OPTARG}";;
support/download/hg +4 -4
@@ -15,10 +15,10 @@ set -e # Environment: # HG : the hg command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; u) uri="${OPTARG}";; c) cset="${OPTARG}";;
@@ -36,8 +36,8 @@ _hg() { eval ${HG} "${@}" } -_hg clone ${verbose} "${@}" --noupdate "'${uri}'" "'${basename}'" +_hg clone ${quiet} "${@}" --noupdate "'${uri}'" "'${basename}'" -_hg archive ${verbose} --repository "'${basename}'" --type tgz \ +_hg archive ${quiet} --repository "'${basename}'" --type tgz \ --prefix "'${basename}'" --rev "'${cset}'" \ - >"${output}"
support/download/scp +3 -3
@@ -14,10 +14,10 @@ set -e # Environment: # SCP : the scp command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; f) filename="${OPTARG}";; u) uri="${OPTARG}";;
@@ -37,4 +37,4 @@ _scp() { # Remove any scheme prefix uri="${uri##scp://}" -_scp ${verbose} "${@}" "'${uri}/${filename}'" "'${output}'" +_scp ${quiet} "${@}" "'${uri}/${filename}'" "'${output}'"
support/download/svn +3 -3
@@ -22,10 +22,10 @@ set -e . "${0%/*}/helpers" -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; u) uri="${OPTARG}";; c) rev="${OPTARG}";;
@@ -43,7 +43,7 @@ _svn() { eval ${SVN} "${@}" } -_svn export ${verbose} "${@}" "'${uri}@${rev}'" "'${basename}'" +_svn export ${quiet} "${@}" "'${uri}@${rev}'" "'${basename}'" # Get the date of the revision, to generate reproducible archives. # The output format is YYYY-MM-DDTHH:MM:SS.mmmuuuZ (i.e. always in the
support/download/wget +3 -3
@@ -15,10 +15,10 @@ set -e # Environment: # WGET : the wget command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; f) filename="${OPTARG}";; u) url="${OPTARG}";;
@@ -40,4 +40,4 @@ _wget() { # mirror [ -n "${encode}" ] && filename=${filename//\?/%3F} -_wget ${verbose} "${@}" -O "'${output}'" "'${url}/${filename}'" +_wget ${quiet} "${@}" -O "'${output}'" "'${url}/${filename}'"
Signature · 1 line
2.26.2
PATCH 2/2 support/download: print command used for download
From: Thomas De Schampheleire <[email protected]>
Even though that most download commands actually print some output, like progress indication or other messages, the actual command used is not. This makes it hard to analyze a build log when you are not fully familiar with the typical output of said log.
Update the download helpers to do just that, respecting any quiet/verbose flag so that a silent make (make -s) does not get more verbose.
Note: getting rid of the duplication of the command in the script is not straightforward without breaking support for arguments with spaces.
--- support/download/bzr | 3 +++ support/download/cvs | 3 +++ support/download/file | 3 +++ support/download/git | 3 +++ support/download/hg | 3 +++ support/download/scp | 3 +++ support/download/svn | 3 +++ support/download/wget | 3 +++ 8 files changed, 24 insertions(+)
support/download/bzr +3 -0
@@ -34,6 +34,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _bzr() { + if [ -z "${quiet}" ]; then + echo ${BZR} "${@}" + fi eval ${BZR} "${@}" }
support/download/cvs +3 -0
@@ -39,6 +39,9 @@ shift $((OPTIND-1)) # Get rid of our options # ). Since nobody sane will put large code bases in CVS, a timeout of # 10 minutes should do the trick. _cvs() { + if [ -z "${quiet}" ]; then + echo timeout 10m ${CVS} "${@}" + fi eval timeout 10m ${CVS} "${@}" }
support/download/file +3 -0
@@ -36,6 +36,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _localfiles() { + if [ -n "${verbose}" ]; then + echo ${LOCALFILES} "${@}" + fi eval ${LOCALFILES} "${@}" }
support/download/git +3 -0
@@ -79,6 +79,9 @@ trap _on_error ERR # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _git() { + if [ -z "${quiet}" ]; then + echo GIT_DIR="${git_cache}/.git" ${GIT} "${@}" + fi eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}" }
support/download/hg +3 -0
@@ -33,6 +33,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _hg() { + if [ -z "${quiet}" ]; then + echo ${HG} "${@}" + fi eval ${HG} "${@}" }
support/download/scp +3 -0
@@ -31,6 +31,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _scp() { + if [ -z "${quiet}" ]; then + echo ${SCP} "${@}" + fi eval ${SCP} "${@}" }
support/download/svn +3 -0
@@ -40,6 +40,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _svn() { + if [ -z "${quiet}" ]; then + echo ${SVN} "${@}" + fi eval ${SVN} "${@}" }
support/download/wget +3 -0
@@ -33,6 +33,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _wget() { + if [ -z "${quiet}" ]; then + echo ${WGET} "${@}" + fi eval ${WGET} "${@}" }
Signature · 1 line
2.26.2
Yann E. MORIN
AppliedPATCH 2/2 support/download: print command used for download
Thomas, All,
On 2021-01-15 16:00 +0100, Thomas De Schampheleire spake thusly:
Quoted 30 lines
From: Thomas De Schampheleire <[email protected]>
Even though that most download commands actually print some output, like progress indication or other messages, the actual command used is not. This makes it hard to analyze a build log when you are not fully familiar with the typical output of said log.
Update the download helpers to do just that, respecting any quiet/verbose flag so that a silent make (make -s) does not get more verbose.
Note: getting rid of the duplication of the command in the script is not straightforward without breaking support for arguments with spaces.
Signed-off-by Thomas De Schampheleire <[email protected]>--- support/download/bzr | 3 +++ support/download/cvs | 3 +++ support/download/file | 3 +++ support/download/git | 3 +++ support/download/hg | 3 +++ support/download/scp | 3 +++ support/download/svn | 3 +++ support/download/wget | 3 +++ 8 files changed, 24 insertions(+)support/download/bzr +0
-0
support/download/bzr shift $((OPTIND-1)) # Get rid of our options · line 38
Quoted 5 lines
support/download/bzr +2
-0@@ -34,6 +34,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _bzr() { + if [ -z "${quiet}" ]; then + echo ${BZR} "${@}"
I've switched away from echo, to use printf instead.
Applied to master with that fixed, thanks.
Regards,
Yann E. MORIN.
Quoted 109 lines
support/download/bzr +1
-0+ fi eval ${BZR} "${@}" }support/download/cvs +3
-0@@ -39,6 +39,9 @@ shift $((OPTIND-1)) # Get rid of our options # ). Since nobody sane will put large code bases in CVS, a timeout of # 10 minutes should do the trick. _cvs() { + if [ -z "${quiet}" ]; then + echo timeout 10m ${CVS} "${@}" + fi eval timeout 10m ${CVS} "${@}" }support/download/file +3
-0@@ -36,6 +36,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _localfiles() { + if [ -n "${verbose}" ]; then + echo ${LOCALFILES} "${@}" + fi eval ${LOCALFILES} "${@}" }support/download/git +3
-0@@ -79,6 +79,9 @@ trap _on_error ERR # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _git() { + if [ -z "${quiet}" ]; then + echo GIT_DIR="${git_cache}/.git" ${GIT} "${@}" + fi eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}" }support/download/hg +3
-0@@ -33,6 +33,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _hg() { + if [ -z "${quiet}" ]; then + echo ${HG} "${@}" + fi eval ${HG} "${@}" }support/download/scp +3
-0@@ -31,6 +31,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _scp() { + if [ -z "${quiet}" ]; then + echo ${SCP} "${@}" + fi eval ${SCP} "${@}" }support/download/svn +3
-0@@ -40,6 +40,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _svn() { + if [ -z "${quiet}" ]; then + echo ${SVN} "${@}" + fi eval ${SVN} "${@}" }support/download/wget +3
-0@@ -33,6 +33,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _wget() { + if [ -z "${quiet}" ]; then + echo ${WGET} "${@}" + fi eval ${WGET} "${@}" }Signature · 6 lines
2.26.2 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 2/2 support/download: print command used for download
Thomas, All,
On 2021-03-16 23:29 +0100, Yann E. MORIN spake thusly:
Quoted 10 lines
On 2021-01-15 16:00 +0100, Thomas De Schampheleire spake thusly:
Quoted 9 lines
From: Thomas De Schampheleire <[email protected]>
Even though that most download commands actually print some output, like progress indication or other messages, the actual command used is not. This makes it hard to analyze a build log when you are not fully familiar with the typical output of said log.
Update the download helpers to do just that, respecting any quiet/verbose flag so that a silent make (make -s) does not get more verbose.
Note that this breaks the git downloads, as reported by Matthias:
https://bugs.busybox.net/show_bug.cgi?id=13631
It most probably also breaks the svn downloads too. So I know you are primarily using Hg at your place, but clearly the git and svn backends were not tested, and I overlooked the impact of that change when applying. :-/
However, I don't see an easy way out.
My first idea was to test whether stdout was a terminal or not, e.g.:
if [ -z "${quiet}" -a -t 1 ]; then
printf ...
fiSo that the command would not be printed when called in a subshell like is used to get the date:
date="$( _git ... )"
But that means the commands would not be printed for people that log the output, like so:
$ make 2 >&1|tee build.log
or with:
$ ./utils/brmakeeither being probably a well-established use-case (I use that almost exclusively...)
Another idea I had was to force quiet in such case:
date="$( quiet=-q _git ... )"
But I find it pretty ugly, because it just papers over the problem...
So, my friendly ultimatum is: as I don't have time tonight to properly handle this and think straight, you get a one-day delay to find a proper fix, or I'm going to revert. Deal? ;-)
Regards,
Yann E. MORIN.
Quoted 154 lines
Quoted 20 lines
Note: getting rid of the duplication of the command in the script is not straightforward without breaking support for arguments with spaces.
Signed-off-by Thomas De Schampheleire <[email protected]>--- support/download/bzr | 3 +++ support/download/cvs | 3 +++ support/download/file | 3 +++ support/download/git | 3 +++ support/download/hg | 3 +++ support/download/scp | 3 +++ support/download/svn | 3 +++ support/download/wget | 3 +++ 8 files changed, 24 insertions(+)support/download/bzr +0
-0support/download/bzr shift $((OPTIND-1)) # Get rid of our options · line 38
Quoted 5 lines
support/download/bzr +2
-0@@ -34,6 +34,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _bzr() { + if [ -z "${quiet}" ]; then + echo ${BZR} "${@}"I've switched away from echo, to use printf instead.
Applied to master with that fixed, thanks.
Regards,
Yann E. MORIN.Quoted 109 lines
support/download/bzr +1
-0+ fi eval ${BZR} "${@}" }support/download/cvs +3
-0@@ -39,6 +39,9 @@ shift $((OPTIND-1)) # Get rid of our options # ). Since nobody sane will put large code bases in CVS, a timeout of # 10 minutes should do the trick. _cvs() { + if [ -z "${quiet}" ]; then + echo timeout 10m ${CVS} "${@}" + fi eval timeout 10m ${CVS} "${@}" }support/download/file +3
-0@@ -36,6 +36,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _localfiles() { + if [ -n "${verbose}" ]; then + echo ${LOCALFILES} "${@}" + fi eval ${LOCALFILES} "${@}" }support/download/git +3
-0@@ -79,6 +79,9 @@ trap _on_error ERR # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _git() { + if [ -z "${quiet}" ]; then + echo GIT_DIR="${git_cache}/.git" ${GIT} "${@}" + fi eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}" }support/download/hg +3
-0@@ -33,6 +33,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _hg() { + if [ -z "${quiet}" ]; then + echo ${HG} "${@}" + fi eval ${HG} "${@}" }support/download/scp +3
-0@@ -31,6 +31,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _scp() { + if [ -z "${quiet}" ]; then + echo ${SCP} "${@}" + fi eval ${SCP} "${@}" }support/download/svn +3
-0@@ -40,6 +40,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _svn() { + if [ -z "${quiet}" ]; then + echo ${SVN} "${@}" + fi eval ${SVN} "${@}" }support/download/wget +3
-0@@ -33,6 +33,9 @@ shift $((OPTIND-1)) # Get rid of our options # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _wget() { + if [ -z "${quiet}" ]; then + echo ${WGET} "${@}" + fi eval ${WGET} "${@}" }Signature · 6 lines
2.26.2 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildrootSignature · 10 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------' _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 2/2 support/download: print command used for download
Hi Yann,
El jue, 18 mar 2021 a las 22:01, Yann E. MORIN
(<[email protected]>) escribi?:
Quoted 15 lines
Thomas, All,
On 2021-03-16 23:29 +0100, Yann E. MORIN spake thusly:
Quoted 10 lines
On 2021-01-15 16:00 +0100, Thomas De Schampheleire spake thusly:
Quoted 9 lines
From: Thomas De Schampheleire <[email protected]>
Even though that most download commands actually print some output, like progress indication or other messages, the actual command used is not. This makes it hard to analyze a build log when you are not fully familiar with the typical output of said log.
Update the download helpers to do just that, respecting any quiet/verbose flag so that a silent make (make -s) does not get more verbose.
Quoted 7 lines
Note that this breaks the git downloads, as reported by Matthias:
https://bugs.busybox.net/show_bug.cgi?id=13631It most probably also breaks the svn downloads too. So I know you are primarily using Hg at your place, but clearly the git and svn backends were not tested, and I overlooked the impact of that change when applying. :-/
oops :-o
I indeed tested hg, wget, and scp downloads, but not git/svn. The change seemed so trivial (*famous last words).
Quoted 20 lines
However, I don't see an easy way out.
My first idea was to test whether stdout was a terminal or not, e.g.:
if [ -z "${quiet}" -a -t 1 ]; then printf ... fiSo that the command would not be printed when called in a subshell like is used to get the date:
date="$( _git ... )"But that means the commands would not be printed for people that log the output, like so:
$ make 2 >&1|tee build.log or with: $ ./utils/brmake
Quoted 8 lines
either being probably a well-established use-case (I use that almost exclusively...)
Another idea I had was to force quiet in such case:
date="$( quiet=-q _git ... )"But I find it pretty ugly, because it just papers over the problem...
The problem only appears when the output of the _git/_svn command is actually used by something. There are currently three places:
- git helper, to calculate the date
- git helper, in submodule support (for module_dir in $(_git submodule ...)
- svn helper, to calculate the date
As the problem is caused by adding additional output in something where the output is parsed, a solution would be to send the 'printf' output to stderr iso stdout.
Conceptually, it may not really be expected, in case people split error output to a special file.
But I'm quite sure that in a full build, there is already a lot of output there so adding a few lines may not really hurt that much.
Another solution is indeed to use a custom _git/_svn for the above three cases. Actually you want a '__quiet_git', but the need to handle spaces in args correctly makes it more complex, if one does not want to duplicate code. One would need something like:
_git() {
printf
_quiet_git() "$@"
}_quiet_git() {
<actual command>
}
but aside from the fact I'm unsure if this works correctly for the argument passing (including support for spaces), the fact that the printf and the actual command are duplicating the command now in two _different_ functions, is pretty fragile.
A simpler version of this is what you already suggested but disliked, hacking the 'quiet' variable for this purpose.
Or alternatively, if you like that better, add another variable, a 'boolean' perhaps, to steer this quietness.
And finally, the other approach is to revert this change for git and svn, but leave it enabled for the other helpers which just have 'normal' usage.
Of the above, what are your thoughts?
Thanks,
Thomas
PATCH 2/2 support/download: print command used for download
Thomas, All,
On 2021-03-18 22:32 +0100, Thomas De Schampheleire spake thusly:
Quoted 14 lines
El jue, 18 mar 2021 a las 22:01, Yann E. MORIN
(<[email protected]>) escribi?:Quoted 12 lines
Thomas, All,
On 2021-03-16 23:29 +0100, Yann E. MORIN spake thusly:
Quoted 8 lines
On 2021-01-15 16:00 +0100, Thomas De Schampheleire spake thusly:
Quoted 7 lines
From: Thomas De Schampheleire <[email protected]>
Even though that most download commands actually print some output, like progress indication or other messages, the actual command used is not. This makes it hard to analyze a build log when you are not fully familiar with the typical output of said log.
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
Quoted 2 lines
Update the download helpers to do just that, respecting any quiet/verbose flag so that a silent make (make -s) does not get more verbose.
Note that this breaks the git downloads, as reported by Matthias:
https://bugs.busybox.net/show_bug.cgi?id=13631oops :-o
I indeed tested hg, wget, and scp downloads, but not git/svn. The change seemed so trivial (*famous last words).
Heheh... ;-)
Quoted 3 lines
As the problem is caused by adding additional output in something where the output is parsed, a solution would be to send the 'printf' output to stderr iso stdout.
I don't think this would be so nice, no...
[--SNIP--]
Quoted 8 lines
Another solution is indeed to use a custom _git/_svn for the above three cases. Actually you want a '
__quiet_git', but the need to handle spaces in args correctly makes it more complex, if one does not want to duplicate code. One would need something like:_git() { printf _quiet_git() "$@" }
Quoted 7 lines
_quiet_git(){
<actual command>
}
but aside from the fact I'm unsure if this works correctly for the argument passing (including support for spaces), the fact that the printf and the actual command are duplicating the command now in two _different_ functions, is pretty fragile.
But I like it better than all the alternatives, so I'm sold on it. Send a patch! ;-)
Now the quesiton: do we want to apply this to all helpers, so that they are homogeneous, or do we do that only for git and svn?
My gut feeling is that we should do it for all, because it is relatively trivial to do, and then we have all backends using the same constructs, so they are easier to reason about.
Thanks for the prompt feedback!
Regards,
Yann E. MORIN.
Quoted 17 lines
A simpler version of this is what you already suggested but disliked, hacking the 'quiet' variable for this purpose.
Or alternatively, if you like that better, add another variable, a 'boolean' perhaps, to steer this quietness.And finally, the other approach is to revert this change for git and svn, but leave it enabled for the other helpers which just have 'normal' usage.
Of the above, what are your thoughts?
Thanks,
Thomas
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 2/2 support/download: print command used for download
Quoted 2 lines · Yann E. MORIN
Quoted 2 lines
Quoted 2 lines
Note that this breaks the git downloads, as reported by Matthias:
https://bugs.busybox.net/show_bug.cgi?id=13631
FWIW, we've been bitten by this, too. Not our main branch, mind you. But on the "let's build the latest upstream branch and see if there are any surprises coming down the pipe" branch. And it sure found a little surprise for us.
Nightly builds suddenly started failing on March 17, with complaints about repeated instances of a "corrupted git cache" (of course, it was drawing the wrong conclusion when the git wrapper failed; there was no corrupted cache, but the date was of an incorrect format thanks to the printf).
It took me some time to figure out what had suddenly happened. Searching the mailing list didn't help, because I didn't know what to look for. Of course, once I knew, I quickly found this thread.
Quoted 6 lines
Now the quesiton: do we want to apply this to all helpers, so that they are homogeneous, or do we do that only for git and svn?
My gut feeling is that we should do it for all, because it is relatively trivial to do, and then we have all backends using the same constructs, so they are easier to reason about.
My vote would be to keep them homogeneous, too. It'll also provide a facility that can be used in the future if anybody needs to add a feature to the other downloaders that would otherwise cause similar problems there.
Thanks for looking into this so quickly.
Regards,
-Markus
PATCH 2/2 support/download: print command used for download
Markus, All,
On 2021-03-19 11:24 -0700, Markus Mayer spake thusly:
Quoted 7 lines · Yann E. MORIN
Quoted 2 lines
Quoted 2 lines
Quoted 2 lines
Note that this breaks the git downloads, as reported by Matthias:
https://bugs.busybox.net/show_bug.cgi?id=13631FWIW, we've been bitten by this, too. Not our main branch, mind you. But on the "let's build the latest upstream branch and see if there are any surprises coming down the pipe" branch. And it sure found a little surprise for us.
Yeah, that was a serious issue, but we're still pretty early in the development phase, so now is a good time to break things! ;-)
Hopefully that's been settled now, with commit b70ce56651, that's been just merged. Feedback greatly appreciated if there's still feedback (or not).
Quoted 11 lines
Quoted 6 lines
Now the quesiton: do we want to apply this to all helpers, so that they are homogeneous, or do we do that only for git and svn?
My gut feeling is that we should do it for all, because it is relatively trivial to do, and then we have all backends using the same constructs, so they are easier to reason about.
My vote would be to keep them homogeneous, too. It'll also provide a facility that can be used in the future if anybody needs to add a feature to the other downloaders that would otherwise cause similar problems there.
Thanks for the vote; that's what we've gone with.
Regards,
Yann E. MORIN.
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'
PATCH 2/2 support/download: print command used for download
Quoted 11 lines · Yann E. MORIN
Markus, All,
On 2021-03-19 11:24 -0700, Markus Mayer spake thusly:
Quoted 4 lines
FWIW, we've been bitten by this, too. Not our main branch, mind you. But on the "let's build the latest upstream branch and see if there are any surprises coming down the pipe" branch. And it sure found a little surprise for us.
Yeah, that was a serious issue, but we're still pretty early in the development phase, so now is a good time to break things! ;-)
No harm was done. I was just scratching my head a little. :-)
Quoted 3 lines
Hopefully that's been settled now, with commit
b70ce56651, that's been just merged. Feedback greatly appreciated if there's still feedback (or not).
I re-tried the build with the new commit, and I am happy to report that the fix seems to be working as intended. No more errors from GIT. The build completed successfully.
Regards,
-Markus
Yann E. MORIN
AppliedPATCH 1/2 support/download: rename internal 'verbose' variable where applicable
In reply to Thomas De SchampheleireThomas, All,
On 2021-01-15 16:00 +0100, Thomas De Schampheleire spake thusly:
Quoted 9 lines
From: Thomas De Schampheleire <[email protected]>
Most 'verbose' variable inside the download helpers actually mean 'quiet'. I.e. they are assigned in case quiet operation is requested, and empty in case of non-quiet operation. Using the name 'verbose' for such a variable is confusing, especially when you want to test the variable on emptiness or non-emptiness (in a subsequent commit).
Signed-off-by Thomas De Schampheleire <[email protected]>
Applied to master, thanks.
Regards,
Yann E. MORIN.
Quoted 186 lines
--- support/download/bzr | 6 +++--- support/download/cvs | 6 +++--- support/download/git | 4 ++-- support/download/hg | 8 ++++---- support/download/scp | 6 +++--- support/download/svn | 6 +++--- support/download/wget | 6 +++--- 7 files changed, 21 insertions(+), 21 deletions(-)support/download/bzr +3
-3@@ -16,10 +16,10 @@ set -e # BZR : the bzr command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; u) uri="${OPTARG}";; c) cset="${OPTARG}";;@@ -53,6 +53,6 @@ if [ ${bzr_version} -ge ${bzr_min_version} ]; then timestamp_opt="--per-file-timestamps" fi -_bzr export ${verbose} --root="'${basename}/'" --format=tgz \ +_bzr export ${quiet} --root="'${basename}/'" --format=tgz \ ${timestamp_opt} - "${@}" "'${uri}'" -r "'${cset}'" \ >"${output}"support/download/cvs +3
-3@@ -16,10 +16,10 @@ set -e # Environment: # CVS : the cvs command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-Q;; + q) quiet=-Q;; o) output="${OPTARG}";; u) uri="${OPTARG#*://}";; c) rev="${OPTARG}";;@@ -57,7 +57,7 @@ if [[ ! "${uri}" =~ ^: ]]; then fi export TZ=UTC -_cvs ${verbose} -z3 -d"'${uri}'" \ +_cvs ${quiet} -z3 -d"'${uri}'" \ co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" tar czf "${output}" "${basename}"support/download/git +2
-2@@ -50,11 +50,11 @@ _on_error() { exec "${myname}" "${OPTS[@]}" || exit ${ret} } -verbose= +quiet= recurse=0 while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q; exec >/dev/null;; + q) quiet=-q; exec >/dev/null;; r) recurse=1;; o) output="${OPTARG}";; u) uri="${OPTARG}";;support/download/hg +4
-4@@ -15,10 +15,10 @@ set -e # Environment: # HG : the hg command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; u) uri="${OPTARG}";; c) cset="${OPTARG}";;@@ -36,8 +36,8 @@ _hg() { eval ${HG} "${@}" } -_hg clone ${verbose} "${@}" --noupdate "'${uri}'" "'${basename}'" +_hg clone ${quiet} "${@}" --noupdate "'${uri}'" "'${basename}'" -_hg archive ${verbose} --repository "'${basename}'" --type tgz \ +_hg archive ${quiet} --repository "'${basename}'" --type tgz \ --prefix "'${basename}'" --rev "'${cset}'" \ - >"${output}"support/download/scp +3
-3@@ -14,10 +14,10 @@ set -e # Environment: # SCP : the scp command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; f) filename="${OPTARG}";; u) uri="${OPTARG}";;@@ -37,4 +37,4 @@ _scp() { # Remove any scheme prefix uri="${uri##scp://}" -_scp ${verbose} "${@}" "'${uri}/${filename}'" "'${output}'" +_scp ${quiet} "${@}" "'${uri}/${filename}'" "'${output}'"support/download/svn +3
-3@@ -22,10 +22,10 @@ set -e . "${0%/*}/helpers" -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; u) uri="${OPTARG}";; c) rev="${OPTARG}";;@@ -43,7 +43,7 @@ _svn() { eval ${SVN} "${@}" } -_svn export ${verbose} "${@}" "'${uri}@${rev}'" "'${basename}'" +_svn export ${quiet} "${@}" "'${uri}@${rev}'" "'${basename}'" # Get the date of the revision, to generate reproducible archives. # The output format is YYYY-MM-DDTHH:MM:SS.mmmuuuZ (i.e. always in thesupport/download/wget +3
-3@@ -15,10 +15,10 @@ set -e # Environment: # WGET : the wget command to call -verbose= +quiet= while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in - q) verbose=-q;; + q) quiet=-q;; o) output="${OPTARG}";; f) filename="${OPTARG}";; u) url="${OPTARG}";;@@ -40,4 +40,4 @@ _wget() { # mirror [ -n "${encode}" ] && filename=${filename//\?/%3F} -_wget ${verbose} "${@}" -O "'${output}'" "'${url}/${filename}'" +_wget ${quiet} "${@}" -O "'${output}'" "'${url}/${filename}'"Signature · 6 lines
2.26.2 _______________________________________________ buildroot mailing list buildroot at busybox.net http://lists.busybox.net/mailman/listinfo/buildroot
Signature · 6 lines
.-----------------.--------------------.------------------.--------------------. | Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: | | +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ | | +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no | | http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. | '------------------------------^-------^------------------^--------------------'