From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] (no subject)
Date: Sun, 22 Feb 2015 10:38:47 +0100 [thread overview]
Message-ID: <20150222093847.GC1532@pengutronix.de> (raw)
In-Reply-To: <1E9AED858BEB204B9DE4F807C7ED0EF617CDD326@EMSRVWIN2934.apps.edc.thyssenkrupp.com>
On Sat, Feb 21, 2015 at 11:07:55PM +0000, Rüdiger, Christoph wrote:
> I'm trying to use ptxdist on a Mac OS X system to get rid of the Linux VM
> just for compiling things. Here is the thing I stumbled upon because I
> don't get the intention and therefore struggle to find a patch.
>
> The git commit 0dc57566bc5a25d2b086de333844a3c00addf0e4 from 2012-12-13
> changed the body of the ptxd_make_log() function in scripts/libptxdist.sh
> from this implementation
>
> -ptxd_make_log() {
> - #
> - # fd3 == stdout to logfile
> - # fd4 == stderr to logfile
> - # fd5 == clean stdout
> - # fd6 == clean stderr
> - #
> - {
> - export PTXDIST_FD_STDOUT=5
> - export PTXDIST_FD_STDERR=6
> - export PTXDIST_FD_LOGFILE=7
> - {
> - if [ -z "${PTXDIST_QUIET}" ]; then
> - ptxd_make "${@}" 4>&- |
> - # make's stdout on fd0
> - tee -a "${PTX_LOGFILE}" 2>&4 4>&- 5>&- 6>&-
> - check_pipe_status || return
> - else
> - exec 4>&-
> - ptxd_make "${@}" 1>> "${PTX_LOGFILE}"
> - fi
> - } 2>&1 1>&3 3>&- 7>> "${PTX_LOGFILE}" |
> - # make's stderr on fd0
> - tee -a "${PTX_LOGFILE}" 1>&2 3>&- 4>&- 5>&- 6>&-
> - check_pipe_status || return
> - } 3>&1 4>&2 5>&1 6>&2
> -}
>
> to this implementation
>
> +ptxd_make_log() {(
> + # stdout only
> + exec {PTXDIST_FD_STDOUT}>&1
> + # stderr only
> + exec {PTXDIST_FD_STDERR}>&2
> + # logfile only
> + exec 9>> "${PTX_LOGFILE}"
> + export PTXDIST_FD_STDOUT
> + export PTXDIST_FD_STDERR
> + export PTXDIST_FD_LOGFILE=9
> +
> + if [ -z "${PTXDIST_QUIET}" ]; then
> + # stdout and logfile
> + exec {logout}> >(tee -a "${PTX_LOGFILE}")
> + else
> + # logfile only
> + exec {logout}>> "${PTX_LOGFILE}"
> + fi
> + # stderr and logfile
> + exec {logerr}> >(tee -a "${PTX_LOGFILE}" >&2)
> +
> + ptxd_make "${@}" 1>&${logout} 2>&${logerr}
> +)}
>
>
> Now, my bash is complaining at the first exec command:
>
> > exec: {PTXDIST_FD_STDOUT}: not found
>
>
> To me, it looks fully understandable, because {PTXDIST_FD_STDOUT} is an
> ill-formed brace expansion and is therefore ignored. But why is the Linux
> (Ubuntu 12.04) not complaining about?
>
> What is the intention of this brace usage here?
It's valid bash syntax. A bit of history here:
The standard for sh shells says, that the file descriptors up to 9 can be
used inside the shell scripts. So that's what we used originally: With
"5>&1" we create a file descriptor that we can later use to write to stdout
when the normal stdout is redirected to the log file.
However this solution as a problem: oder scripts can use the same file
descriptor numbers and the output is send to the wrong place. This happened
e.g. with configure scripts. So we changed it to:
"exec {PTXDIST_FD_STDOUT}>&1". This is valid in bash and means that a new
file descriptor is opened (with a currently unused number >= 10) and
anything written to it is send to stdout. The file descriptor number is
stored in the specified variable (PTXDIST_FD_STDOUT).
I don't know why the bash in Max OS X cannot handle this. Maybe it's too
old? What version are you using?
Maybe something like this works:
exec 7>&1
exec 8>&1
export PTXDIST_FD_STDOUT=7
export PTXDIST_FD_STDERR=8
Regards,
Michael
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
--
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2015-02-22 9:38 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-21 23:07 Rüdiger, Christoph
2015-02-21 23:11 ` Jon Ringle
2015-02-21 23:29 ` Rüdiger, Christoph
2015-02-21 23:43 ` Rüdiger, Christoph
2015-02-22 9:38 ` Michael Olbrich [this message]
2015-02-22 19:17 ` Christoph Rüdiger
2015-02-22 23:38 ` Anders Montonen
2015-02-23 8:33 ` Michael Olbrich
2015-02-23 9:13 ` Rüdiger, Christoph
2015-02-23 11:24 ` Michael Olbrich
2015-02-24 21:28 ` Rüdiger, Christoph
2015-02-26 12:23 ` Michael Olbrich
2015-02-27 8:48 ` Rüdiger, Christoph
2015-02-27 9:06 ` Michael Olbrich
2015-02-27 9:24 ` Rüdiger, Christoph
2015-02-27 10:32 ` Juergen Borleis
2015-02-27 15:36 ` Michael Olbrich
2015-02-27 9:23 ` Juergen Borleis
2015-02-27 9:31 ` Rüdiger, Christoph
-- strict thread matches above, loose matches on Subject: below --
2021-01-24 10:36 flix.ptxdist
2018-12-11 7:41 [ptxdist] [PATCH 1/2] rules: polkit: Fix incorrect installation path Michael Olbrich
2018-12-17 8:26 ` [ptxdist] (no subject) Dold, Wolfram
[not found] <829880836.3299556.1488275043753.ref@mail.yahoo.com>
2017-02-28 9:44 ` fredy zavis
2017-02-28 10:23 ` Juergen Borleis
2015-03-26 13:11 carsten.schlote
2015-04-02 16:22 ` Michael Olbrich
2012-10-15 9:30 Alexander Dahl
2012-10-15 10:15 ` Alexander Dahl
2012-04-26 19:41 Ali Beddah
[not found] <WC20111103170332.35000F@rsi-elektrotechnik.dedd a simple QML demo application [V2]>
2011-11-04 7:48 ` Josef Holzmayr
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150222093847.GC1532@pengutronix.de \
--to=m.olbrich@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox