* coloring stdout && stderr, small kbuild example
@ 2008-04-09 15:02 Oleg Verych
2008-04-09 15:14 ` Bernd Petrovitsch
2008-04-09 15:39 ` coloring stdout && stderr, small kbuild example Oleg Verych
0 siblings, 2 replies; 7+ messages in thread
From: Oleg Verych @ 2008-04-09 15:02 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linux Kernel Mailing List, kbuild devel list
Those boring never-ending builds...
Can some dualCPU power be spent, if building is interactive (i.e. sent to
terminal), to have them a bit colored?
My last rant about "colored printk()" led away from kernel developers
and their solutions. But now, let me share something.
(maybe some terminal emulators have more colors, finally?) usage:
olecom@flower:/tmp/blinux$ stty -tostop ; mkfifo stdout.pipe stderr.pipe
olecom@flower:/tmp/blinux$ sh ./colorize-linux-build.sh <stdout.pipe &
[1] 22070
olecom@flower:/tmp/blinux$ COLORIZERR=y sh colorize-linux-build.sh <stderr.pipe &
[2] 22145
olecom@flower:/tmp/blinux$
olecom@flower:/tmp/blinux$ LANG=C make >stdout.pipe 2>stderr.pipe
make -C /mnt/zdev0/linux-2.6 O=/dev/shm/blinux/.
Using /mnt/zdev0/linux-2.6 as source for kernel
GEN /dev/shm/blinux/Makefile
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CALL /mnt/zdev0/linux-2.6/scripts/checksyscalls.sh
CHK include/linux/compile.h
VDSOSYM arch/x86/vdso/vdso-syms.lds
VDSOSYM arch/x86/vdso/vdso32-syscall-syms.lds
VDSOSYM arch/x86/vdso/vdso32-sysenter-syms.lds
VDSOSYM arch/x86/vdso/vdso32-syms.lds
LD arch/x86/vdso/built-in.o
CC mm/memory.o
olecom@flower:/tmp/blinux$
make[3]: *** [mm/memory.o] Interrupt
make[2]: *** [mm] Interrupt
make[1]: *** [sub-make] Interrupt
make: *** [all] Interrupt
[1]- Done sh ./colorize-linux-build.sh <stdout.pipe
[2]+ Done COLORIZERR=yes sh colorize-linux-build.sh <stderr.pipe
olecom@flower:/tmp/blinux$
________________________________________________________________________
#!/bin/sh
# colorize linux build
# Time-stamp: Wed Apr 9 13:78:13 CEST 2008 olecom@flower.upol.cRAzY
color() {
# $1 -- regex
# $2 -- color code
# $3 -- next color code (default is $D)
# $4 -- regex match number (s///flags)
printf %s "`eval echo $TERMINAL_OUTPUT`"
}
# for tty
[ -t 1 ] && {
# escape symbol
E=`printf '\033'`
# default fg && bg rendering ; reset attributes
D="7" ; RESET="$E[0m"
# basic attributes (reset bg color and bold, set fg color)
V="$E[40;22;3"
# wrap regex with color ; goto exit
TERMINAL_OUTPUT='{s-"$1"-"$V$2m&$V${3-'$D'}m"-$4 ";" b}'
}
# process stdout
[ -z "$COLORIZERR" ] && {
sed "
/CC/` color CC '6;1'`
/LD/` color LD '2;1'`
/AS/` color AS '5;1'`
/GEN/`color GEN '2;1'`
/UPD/`color UPD '2;1'`
/CHK/`color CHK '3;1'`
/CA/` color CALL '6'`
s-^-${V}2m-
"
printf "$RESET
"
}
# process stderr (once)
while read ERROR
do OUT=$OUT'
'$ERROR
done
printf "\033[1;37;41m$OUT$RESET
"
exit
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: coloring stdout && stderr, small kbuild example 2008-04-09 15:02 coloring stdout && stderr, small kbuild example Oleg Verych @ 2008-04-09 15:14 ` Bernd Petrovitsch 2008-04-09 15:40 ` Oleg Verych ` (2 more replies) 2008-04-09 15:39 ` coloring stdout && stderr, small kbuild example Oleg Verych 1 sibling, 3 replies; 7+ messages in thread From: Bernd Petrovitsch @ 2008-04-09 15:14 UTC (permalink / raw) To: Oleg Verych; +Cc: Andrew Morton, Linux Kernel Mailing List, kbuild devel list On Mit, 2008-04-09 at 17:02 +0200, Oleg Verych wrote: > Those boring never-ending builds... > > Can some dualCPU power be spent, if building is interactive (i.e. sent to > terminal), to have them a bit colored? > > My last rant about "colored printk()" led away from kernel developers > and their solutions. But now, let me share something. I don't know if it's of any use for you but there is already *) color-make - http://bre.klaki.net/programs/colormake/ - and *) color-gcc - http://schlueters.de/colorgcc.html - out there. Bernd -- Firmix Software GmbH http://www.firmix.at/ mobil: +43 664 4416156 fax: +43 1 7890849-55 Embedded Linux Development and Services ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: coloring stdout && stderr, small kbuild example 2008-04-09 15:14 ` Bernd Petrovitsch @ 2008-04-09 15:40 ` Oleg Verych 2008-04-09 17:39 ` Oleg Verych 2008-04-12 18:32 ` Pavel Machek 2 siblings, 0 replies; 7+ messages in thread From: Oleg Verych @ 2008-04-09 15:40 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Andrew Morton, Linux Kernel Mailing List, kbuild devel list > I don't know if it's of any use for you but there is already > *) color-make - http://bre.klaki.net/programs/colormake/ - and > *) color-gcc - http://schlueters.de/colorgcc.html - > out there. Yea (subject: small kbuild example). _____ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: coloring stdout && stderr, small kbuild example 2008-04-09 15:14 ` Bernd Petrovitsch 2008-04-09 15:40 ` Oleg Verych @ 2008-04-09 17:39 ` Oleg Verych 2008-04-12 18:32 ` Pavel Machek 2 siblings, 0 replies; 7+ messages in thread From: Oleg Verych @ 2008-04-09 17:39 UTC (permalink / raw) To: Bernd Petrovitsch; +Cc: Linux Kernel Mailing List, kbuild devel list Time flies... > > My last rant about "colored printk()" led away from kernel developers > > and their solutions. But now, let me share something. That was about "The True Kernel Developer's Way to Coloring" by Jonathan Corbet October 9, 2007 http://lwn.net/Articles/253726/ Bernd Petrovitsch @ Wed, Apr 09, 2008 at 05:14:00PM +0200: > I don't know if it's of any use for you but there is already > *) color-make - http://bre.klaki.net/programs/colormake/ - and > *) color-gcc - http://schlueters.de/colorgcc.html - > out there. Please, show those to http://udrepper.livejournal.com/17109.html `perl` is more welcome in Debian, btw. Free versions of color_proc_cpuinfo && color_meminfo: TERMINAL_OUTPUT='s-"$1"-"$V$2m&$V${3-'$D'}m"-$4' `color '[^:]*' 4 3` `color : 3 2` `color AMD 6 2` `color Intel 6 2` `color Athlon '6;44' 2` `color Pentium '6;44' 2` Invent Your Own Easily(R) -- sed 'sed && sh + olecom = love' << '' -o--=O`C #oo'L O <___=E M ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: coloring stdout && stderr, small kbuild example 2008-04-09 15:14 ` Bernd Petrovitsch 2008-04-09 15:40 ` Oleg Verych 2008-04-09 17:39 ` Oleg Verych @ 2008-04-12 18:32 ` Pavel Machek 2008-04-13 15:27 ` lide: linux ide, just concept idea (Re: coloring stdout && stderr, small kbuild example) Oleg Verych 2 siblings, 1 reply; 7+ messages in thread From: Pavel Machek @ 2008-04-12 18:32 UTC (permalink / raw) To: Bernd Petrovitsch Cc: Oleg Verych, Andrew Morton, Linux Kernel Mailing List, kbuild devel list Hi! > > Those boring never-ending builds... > > > > Can some dualCPU power be spent, if building is interactive (i.e. sent to > > terminal), to have them a bit colored? > > > > My last rant about "colored printk()" led away from kernel developers > > and their solutions. But now, let me share something. > > I don't know if it's of any use for you but there is already > *) color-make - http://bre.klaki.net/programs/colormake/ - and > *) color-gcc - http://schlueters.de/colorgcc.html - > out there. icecc seems to do the coloring, too... -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html ^ permalink raw reply [flat|nested] 7+ messages in thread
* lide: linux ide, just concept idea (Re: coloring stdout && stderr, small kbuild example) 2008-04-12 18:32 ` Pavel Machek @ 2008-04-13 15:27 ` Oleg Verych 0 siblings, 0 replies; 7+ messages in thread From: Oleg Verych @ 2008-04-13 15:27 UTC (permalink / raw) To: Pavel Machek Cc: Bernd Petrovitsch, Andrew Morton, Linux Kernel Mailing List, kbuild devel list Hallo. Pavel Machek @ Sat, Apr 12, 2008 at 7:32 PM: > icecc seems to do the coloring, too... This one? http://en.opensuse.org/Icecream ,-- |0.7.3 (r552930): |[..] | - builtin colorgcc `-- Now i'm being pointed to C++ one. Alright! == Check this out then. == Linus says, make it working somehow and release, so... I'd like to have it in menuconfig window running gcc on every */M (i want alot more, without ncurses, perl, C++ using kernel, sh, sed) extract$ sed '1,/^__/d' >/tmp/lide.sh use (in OBJDIR)$ clear ; sh /tmp/lide.sh kdefc kdefc is a user friendly thing for `make defconfig` ksecmis is one for funny `make CONFIG_DEBUG_SECTION_MISMATCH=y` any ordinary command will work, no command -- interactive mode. Coloring and painting is for children, big daddies usually don't get it, as well as most basic userspace possible(: /bin/sh ). (any tty braindamage is a cool tty design from 70s, not sh + sed) -- Text processing(for newbies): http://kernelnewbies.org/olecom Tech VA: http://kerneltrap.org/blog/9104 -o--=O`C #oo'L O <___=E M ________ #!/bin/sh # linux integrated development environment (without text editor/pager) # Time-stamp: Sun Apr 13 16:79:15 CEST 2008 olecom@flower.upol.cRAzY [ "$lideRELOAD" ] || { [ -t 1 ] || exec dd count=1 # notty #sed(){ # busybox -- cryptic errors from internal `sed` # sed -- dash crashes #} stty -tostop rm -rf /tmp/stderr.pipe /tmp/stdout.pipe mkfifo /tmp/stderr.pipe /tmp/stdout.pipe # /tmp/stderr.txt is for `tee ` and off-line pager } set +i -e # own syntax: # $E is 'ESC[' = '\233' # fork tty service sed "s-[$]E-`printf '\233'`-g" << '# here' | /bin/sh -s & # ${E} is ESC ; Ignored symbol for stderr prefix E=`printf '\033'` ; I=`printf '\177'` # default fg;bg rendering ; reset attributes D="7" ; RESET="$E0m" # basic attributes (reset bg color and bold, set fg color) V="$E40;22;3" # wrap regex, multiple times per line T=\''\"s-$1-$V$2m&$V${3-'$D'}m-$4;\"'\' eval ' color_lide() { # wrap regex with color # $1 -- regex ; $2 -- color code ; $3 -- next color code (default is $D) # $4 -- s///flags printf %s "`eval echo '"$T"'`" } scolor_lide() { # color() with speed optimizing jump, thus, one match in line printf %s "{`eval echo '"$T"'` ; b_$REGION}" } ' T=color_lide ## setup of regions # main load: stdout region, content is cut on width = $W # small load: stderr, no cut; stderr out is rare, thus full lines # parameters: all have content line limits (*LINES - 1) # *ORIGIN is a row placing (FIXME: add colons) # console output concurrency: whole region is out with cursor move # (no save/restore of it) outLINES=10 ; outORIGIN=1 ; W=77 errLINES=14 ; errORIGIN=$(($outLINES + 5)) PMT="$E$(($outLINES + 3));1Hprompt:" sed_GET_CHUNK=':addnl ; $!{ s $ '$EK' ; N ; baddnl }' [ "$lideRELOAD" ] || { sed "# sed does final new lines here $sed_GET_CHUNK s ,-- $E$outORIGIN;1H& ; s/ . -/$E30m&/g s 0 1 ; s 0 2 ; s 0 3 ; s 0 4 ; s 0 5 ; s 0 6 ; s-___-$E$errORIGIN;1H$E1;34;40m&$E31m-1 s-___-$E34m&$E31m-2 s/ _ /$E37m&$E31m/g " << "---" ,-- kbuild: s - t - d - o - u - t -- | | `-- ___ kbuild: s _ t _ d _ e _ r _ r ___ --- printf "$PMT\n" } # shift title string outORIGIN=$(($outORIGIN + 1)) errORIGIN=$(($errORIGIN + 1)) ## handling of content region(){ # buffered output with no more than LINES in continuously running `sed` # $1 -- type (out, stderr etc.) ; $2 -- region''s final line decoration eval 'printf %s " # get prev. buffer; append current line x ; G # remove overflowed head (this sed''s something:) $'"$1"'LINES,19810702s-^[^\\n]*\\n-- #$'"$1"'LINES,\$s-[^\\n]*\\n-- # last line --^^ address yields debbug#475464: lost cycle # save buffer; move to ${1}ORIGIN and print whole region h ; s .* $E$'"$1"'ORIGIN;1H&\\n'"$2"' ; "' } lideSYNTAX=" /[.,%/;:]/s [.,%/;:] $E1;36m&$E22;3${D}m g /'/s-'\([^']*\)'-$E35m'$E36m\1$E35m'$E3${D}m-g"' /"/s-"\([^"]*\)"-$E1;32;40m"$E22;39;44m\1$E1;32;40m"$E22;3'$D'm-g'" /(/s-(\([^)]*\))-$E1;33m($E22;3${D}m\1$E1;33m)$E22;3${D}m-g " REGION=err sed_STDERR=" $lideSYNTAX # hard error /^$I/s-.*-$E1;5;41;37m&${V}1;25;m$EK- # ordinary /^$I/!s-.*-&$EK- # example of being freindly to kernel developers and kbuild users /make /{s~make CONFIG_DEBUG_SECTION_MISMATCH=y~ksecmis~;b_$REGION} # UPPER symbols: `$T '[[:upper:]_]\{3,\}' '2' '1' g` /[Ww][Aa][Rr]/`$T '[Ww][Aa][Rr][Nn][Ii][Nn][Gg]' '7;41;1' '1;40;22'` /:/`$T '^[^:]*:' '2;1' $D` :_$REGION `region $REGION '$PMT'` " REGION=out sed_OUT=" s-\(.\{0,$W\}\).*-|\1$EK- /^|#/`s$T '#.*' '3'` $lideSYNTAX /:/`$T '^[^:]*:' '2;1' $D` / CC/`s$T CC '6;1'` / LD/`s$T LD '2;1'` / AS/`s$T AS '5;1'` / GE/`s$T GEN '2;1'` / UP/`s$T UPD '2;1'` / CH/`s$T CHK '3;1'` / CA/`s$T CALL '6'` s-^-${V}${D}m- :_$REGION `region $REGION '\\\`--$PMT'` " unset lideSYNTAX trap ' printf "$RESET$E$(($errORIGIN + $errLINES))H" kill -1 $JJ ; kill -KILL $JJ ' EXIT HUP INT TERM QUIT # close script's input, remove own stderr exec 0<&- 2>/dev/null tee -a /tmp/stderr.txt </tmp/stderr.pipe | sed -u "$sed_STDERR" & JJ=$!' '$JJ sed "$sed_OUT" </tmp/stdout.pipe #>out.pipe & JJ=$!' '$JJ exit # stdout/stderr coloring daemon ends # here JJ=$! # save its pid unset lideRELOAD HISTLINE=: lideCHECK_EXIT_STATUS=' S=$? ; Ex=Ex ; [ 0 -ne "$S" ] && Ex="\177"$Ex sleep 1 # fix braindamage due to cuncurrency, buffers, other tty crap printf 1>&2 "${Ex}it status: $S\n"' trap "$lideCHECK_EXIT_STATUS"'"user interface is over\n" kill -1 $JJ rm -rf /tmp/stderr.pipe /tmp/stdout.pipe exit ' EXIT HUP QUIT trap 'echo got SIGINT or SIGTERM 1>&2' INT TERM exec 1>/tmp/stdout.pipe 2>/tmp/stderr.pipe set +e echo '# examples of being freindly to kernel developers and kbuild users: commands: ksecmis ; kdefc ; (add yours) ; `make` crap ; any other leave: hell (`exit` is ignored) ' lideBUILTINS=" ksecmis) LINE='make CONFIG_DEBUG_SECTION_MISMATCH=y' ;; kdefc) LINE='make defconfig' ;; # add yours here " eval ' batch() { case $1 in '"$lideBUILTINS"' *) LINE=\"\$@\" ;; esac eval "echo \"$LINE\" ; $LINE ; "'"$lideCHECK_EXIT_STATUS"' } interactive() { while read LINE do echo "$LINE" case $LINE in '"$lideBUILTINS"' hell) LINE=break ;; exit) LINE="" ;; #reload) kill -1 $JJ ; export lideRELOAD=y ; exec /bin/sh $0 ;; esac eval "${LINE:-$HISTLINE} ; "'"$lideCHECK_EXIT_STATUS"' [ "$LINE" ] && HISTLINE=$LINE done } ' # `eval` must complete itself, no infinite loops inside unset lideCHECK_EXIT_STATUS lideBUILTINS [ -z "$1" ] && interactive || batch "$@" sed 'sed && sh + olecom = love' << '' >&2 WTFPLed-by: olecom see license: http://sam.zoy.org/wtfpl/ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: coloring stdout && stderr, small kbuild example 2008-04-09 15:02 coloring stdout && stderr, small kbuild example Oleg Verych 2008-04-09 15:14 ` Bernd Petrovitsch @ 2008-04-09 15:39 ` Oleg Verych 1 sibling, 0 replies; 7+ messages in thread From: Oleg Verych @ 2008-04-09 15:39 UTC (permalink / raw) To: Andrew Morton; +Cc: Linux Kernel Mailing List, kbuild devel list Forgot, email can be piped ('|' in mutt) to have script ready to this line: sed '1,/^___/d' >/tmp/colorize-linux-build.sh' -- sed 'sed && sh + olecom = love' << '' http://kernelnewbies.org/olecom -o--=O`C #oo'L O <___=E M ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2008-04-13 15:07 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-04-09 15:02 coloring stdout && stderr, small kbuild example Oleg Verych 2008-04-09 15:14 ` Bernd Petrovitsch 2008-04-09 15:40 ` Oleg Verych 2008-04-09 17:39 ` Oleg Verych 2008-04-12 18:32 ` Pavel Machek 2008-04-13 15:27 ` lide: linux ide, just concept idea (Re: coloring stdout && stderr, small kbuild example) Oleg Verych 2008-04-09 15:39 ` coloring stdout && stderr, small kbuild example Oleg Verych
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox