Bug 49798

Summary: webkit-patch build should never fail due to local commits
Product: WebKit Reporter: Eric Seidel (no email) <eric>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: NEW ---    
Severity: Normal CC: abarth, ossy
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: PC   
OS: OS X 10.5   
Bug Depends on: 33378, 50766    
Bug Blocks:    

Description Eric Seidel (no email) 2010-11-19 05:21:51 PST
webkit-patch build should never fail due to local commits

http://queues.webkit.org/results/6204049

Failed to run "['./WebKitTools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '--bot-id=eseidel-cq-sl', 'build', '--no-clean', '--no-update', '--build-style=both']" exit_code: 1
ERROR: Working directory has local commits, pass --force-clean to continue.

That seems wrong.
Comment 1 Csaba Osztrogonác 2010-11-24 06:37:04 PST
It occured again on the CQ bot. :( The git svn dcommit failed,
but the local commit remained and it made webkit-patch build fail


http://queues.webkit.org/results/6372028
-----------------------------------------
Failed to run "['./WebKitTools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '--bot-id=abarth-cq-sl', 'land-attachment', '--force-clean', '--ignore-builders', '--non-interactive', '--parent-command=commit-queue', 74673]" exit_code: 2
Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=74673&action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=49973&ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Updating working directory
Processing patch 74673 from bug 49973.
Parsing ChangeLog: /Users/abarth/git/webkit-queue/WebCore/ChangeLog
Parsing ChangeLog: /Users/abarth/git/webkit-queue/WebKit/qt/ChangeLog
Parsing ChangeLog: /Users/abarth/git/webkit-queue/WebKit2/ChangeLog
Failed to run "[u'git', u'svn', u'dcommit']" exit_code: 1
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
RA layer request failed: Server sent unexpected return value (500 Internal Server Error) in response to PUT request for '/repository/webkit/!svn/wrk/2a76944f-3c7f-41d5-9907-b010ee326c57/trunk/WebCore/ChangeLog' at /usr/local/git/libexec/git-core/git-svn line 558


Failed to run "[u'git', u'svn', u'dcommit']" exit_code: 1
Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
RA layer request failed: Server sent unexpected return value (500 Internal Server Error) in response to PUT request for '/repository/webkit/!svn/wrk/2a76944f-3c7f-41d5-9907-b010ee326c57/trunk/WebCore/ChangeLog' at /usr/local/git/libexec/git-core/git-svn line 558


Failed to run "[u'git', u'svn', u'dcommit']" exit_code: 1


http://queues.webkit.org/results/6299043
-----------------------------------------
Failed to run "['./WebKitTools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '--bot-id=abarth-cq-sl', 'build', '--no-clean', '--no-update', '--build-style=both']" exit_code: 1
ERROR: Working directory has local commits, pass --force-clean to continue.
Comment 2 Eric Seidel (no email) 2010-12-01 10:23:51 PST
Bug 48697 hit the local commits issue too.
Comment 3 Eric Seidel (no email) 2010-12-10 03:15:51 PST
I'm not sure why build even needs to clean.

Especially when --no-clean is passed:

class Build(AbstractSequencedCommand):
    name = "build"
    help_text = "Update working copy and build"
    steps = [
        steps.CleanWorkingDirectory,
        steps.Update,
        steps.Build,
    ]

class CleanWorkingDirectory(AbstractStep):
    def __init__(self, tool, options, allow_local_commits=False):
        AbstractStep.__init__(self, tool, options)
        self._allow_local_commits = allow_local_commits

    @classmethod
    def options(cls):
        return AbstractStep.options() + [
            Options.force_clean,
            Options.clean,
        ]

    def run(self, state):
        os.chdir(self._tool.scm().checkout_root)
        if not self._allow_local_commits:
            self._tool.scm().ensure_no_local_commits(self._options.force_clean)
        if self._options.clean:
            self._tool.scm().ensure_clean_working_directory(force_clean=self._options.force_clean)

We should probably have run() just return early if not self._options.clean?  I don't know when it makes sense to remove local commits when --no-clean is passed?
Comment 4 Eric Seidel (no email) 2010-12-10 03:16:11 PST
I'm not sure what about our setup changed to make this such a common failure though.
Comment 5 Eric Seidel (no email) 2010-12-10 03:25:11 PST
It seems this step has always been this way:
http://trac.webkit.org/changeset/51431
Comment 6 Eric Seidel (no email) 2010-12-10 03:28:05 PST
Yeah, I think the class was just written this way: http://trac.webkit.org/changeset/51233.  I think I'll fix --no-clean to not even remove local commits.
Comment 7 Adam Barth 2010-12-10 13:19:30 PST
I often run build --force-clean when I want to start new day of work with a fresh, clean build.