Hi Mike,
thanks again for your work and interested. Your patch is not forgotten,
but I'm a little busy and wanted to take a closer look before I "just
commit it".
However, I just started the first tmpfs enabled build since years (mostly
because I now started a ARM build the 5th time to test and track some
miscompiled code issue with gcc, ...) and thought it's a good time to
check out tmpfs and the speedup, so stay tuned.
Thanks for your patience,
René
Mike N wrote:
>
>> Mike N wrote:
>> Implementing a feature where the use of TMPFS ram filesystem would try to
>> re-compile a pkg without TMPFS if compilation failed in out-of-disk-space
>> error (because of too small TMPFS ram storage). This way nightly batch
>> builds could use TMPFS space, but still those "too big packages" would
>> compile through normal disk space.
>>
>
>
>>> Rene wrote:
>>> it's a nice idea to implement something like this, but I guess getting
>>> As a quick conceptual test you could start not worrying about the
>>> real error, but build any failed package a second time without
>>> TMPFS, this might be just a couple of lines of code.
>>>
>>>
>
> Here is a patch file which modifies Build-Pkg script to do following
> additional trick:
>
> If target configuration enabled the use of TMPFS ram filesystem and the
> first compilation attempt failed then script will automagically re-try the
> pkg compilation per package.
>
> The attached patch does recursive call to Build-Pkg command to re-run the
> same command, but the second call instructs the script to ignore the TMPFS
> feature.
>
> The preliminary test run showed quite a good speed improvement (I used only
> 200M TMPFS to make sure some packages would fail in out-of-storage-space
> errors, just to see that re-try trick works).
>
> -Mike N
>
> ------------------------
> --- Build-Pkg-orig 2009-03-25 04:34:39.424686896 +0200
> +++ Build-Pkg 2009-03-25 09:38:36.671282460 +0200
> @@ -39,6 +39,9 @@
> stagelevel=9
> this_is_the_2nd_run=0
>
> +# Control recursive call to Build-Pkg and use of TMPFS filesystem
> (0=normal, 1=use tmpfs if enabled, 2=dont use tmpfs even when enabled)
> +tmpfsusage=0
> +
> #
> # ---- Functions
> #
> @@ -80,6 +83,7 @@
> -id) options="$options $1 $2" ; id="$2" ; shift ;;
> -noclearsrc) options="$options $1" ; clear_src=0 ;;
> -norebuild) options="$options $1" ; norebuild=1 ;;
> + -tmpfsusage) options="$options $1 $2" ; tmpfsusage=$2; shift ;;
> -*) help_msg ; exit 1 ;;
> *) break ;;
> esac
> @@ -133,6 +137,23 @@
> done
> exit 0
> fi
> +
> +# If TMPFS is enabled, try to compile it normally at first. If it fails
> then re-try without TMPFS ram filesystem
> +if [ "$SDECFG_SRC_TMPFS" = 1 -a $tmpfsusage = 0 ]; then
> + pkg="${1%=*}"
> + echo "TMPFS enabled. The first attempt to build $pkg using TMPFS RAM
> filesystem"
> +
> + if ! ./scripts/Build-Pkg $options -tmpfsusage 1 $pkg; then
> + echo "TMPFS enabled. Failed to build $pkg. Trying again without
> TMPFS RAM filesystem"
> +
> + if ! ./scripts/Build-Pkg $options -tmpfsusage 2 $pkg && \
> + [ $stagelevel -le $SDECFG_CONTINUE_ON_ERROR_AFTER ]; then
> + exit 1
> + fi
> + fi
> + exit 0
> +fi
> +
> pkg="${1%=*}" ; xpkg="${1#*=}"
> builddir="$base/src.$pkg.$config.$id"
>
> @@ -476,7 +497,7 @@
>
> if [ $clear_src = 1 ] ; then
> mkdir -p $builddir; chmod 700 $builddir
> - if [ "$SDECFG_SRC_TMPFS" = 1 ]; then
> + if [ "$SDECFG_SRC_TMPFS" = 1 -a $tmpfsusage = 1 ]; then
> mount -t tmpfs -o $SDECFG_SRC_TMPFS_OPT none $builddir
> fi
> else
>
>
--
René Rebe - ExactCODE GmbH - Europe, Germany, Berlin
http://exactcode.de |
http://t2-project.org |
http://rene.rebe.name-----------------------------------------------------------
If you wish to unsubscribe from this mailing, send mail to
lists@... with a subject of: unsubscribe t2