Patch ebuild.sh to not nuke the WORKDIR if FEATURES="keepwork".
authorChristopher Covington <cov@codeaurora.org>
Thu, 8 Jul 2010 14:46:00 +0000 (07:46 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 9 Jul 2010 02:52:42 +0000 (19:52 -0700)
This allows make to do its thing when using Portage in a development
workflow, although the change also exposes how ebuild clean doesn't
clear out the WORKDIR.

TEST=`rm -rf /build/$board/tmp/portage/chromeos-base/kernel-0.0.1 &&
[ -e /build/$board/tmp/portage/chromeos-base/kernel-0.0.1/.unpacked ] &&
rm /build/$board/tmp/portage/chromeos-base/kernel-0.0.1/.unpacked &&
FEATURES=keepwork ebuild-$board kernel-0.0.1.ebuild install`

Then modify some of the source (preferably in the git repository rather
than the WORKDIR).

`[ -e /build/$board/tmp/portage/chromeos-base/kernel-0.0.1/.unpacked ] &&
rm /build/$board/tmp/portage/chromeos-base/kernel-0.0.1/.unpacked &&
FEATURES=keepwork ebuild-$board kernel-0.0.1.ebuild install &&`

On the second ebuild operation, make should be able to tell what
exactly, or if nothing at all, has changed, and rebuild only the
necessary object files.

http://codereview.chromium.org/2922001

bin/ebuild.sh

index 9784298c4f01c7905e64e3463108423a4368c45b..9c599c01b4c6759c5a687c1370b47a8d03ccc190 100755 (executable)
@@ -695,9 +695,11 @@ dyn_unpack() {
        if [ "${newstuff}" == "yes" ]; then
                # We don't necessarily have privileges to do a full dyn_clean here.
                rm -rf "${PORTAGE_BUILDDIR}"/{.unpacked,.prepared,.configured,.compiled,.tested,.installed,.packaged,build-info}
-               rm -rf "${WORKDIR}"
+               if ! hasq keepwork $FEATURES ; then
+                       rm -rf "${WORKDIR}"
+               fi
                if [ -d "${T}" ] && \
-                       ! hasq keeptemp $FEATURES && ! hasq keepwork $FEATURES ; then
+                       ! hasq keeptemp $FEATURES ; then
                        rm -rf "${T}" && mkdir "${T}"
                fi
        fi