#1568: Reduce overhead of Formaline --------------------------+------------------------------------------------- Reporter: hinder | Owner: Type: enhancement | Status: new Priority: major | Milestone: Component: Cactus | Version: development version Resolution: | Keywords: --------------------------+-------------------------------------------------
Comment (by rhaas):
You can actually generate the tarfiles etc on the fly whithout having to write C code: {{{ tar c foo bar | od -to1 -v | awk ' BEGIN { print "const unsigned char *SpEC_tarball_data = " } { printf """; for(i = 2 ; i <= NF ; i++) { printf "\%s",$$i; sz++ } print """ } END { print ";\nint SpEC_tarball_size = ",sz,";" }' ) | gcc -O0 -o SpEC-tarball.o -xc -c - }}} does the trick without any intermediate files. This was an attempt to include tarballs in SpEC which so far is stalled due to it being hard to decide which files to include. icc can also be made to use pipes though I think we can safely rely on gcc being around. With this the C code in Formaline sees a char* pointer SpEC_tarball_data pointing to the tarball data and SpEC_tarball_size lists its size so a simple fwrite(SpEC_tarball_data, SpEC_tarball_size, 1, stdout) can write the tarball. This only uses POSIX tools I think so should work on all machines.