{"action":"created","comment":{"url":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments/78572079","id":78572079,"diff_hunk":"@@ -112,31 +112,34 @@ def __init__(self, config, project_options):\n         self.config = config\n         self.project_options = project_options\n         self.parts_config = config.parts\n+        self._steps_run = {p: set() for p in self.config.part_names}\n \n-    def run(self, step, part_names=None, recursed=False):\n+    def run(self, step, part_names=None):\n         if part_names:\n             self.parts_config.validate(part_names)\n-            parts = {p for p in self.config.all_parts if p.name in part_names}\n+            parts = [p for p in self.config.all_parts if p.name in part_names]\n         else:\n             parts = self.config.all_parts\n             part_names = self.config.part_names\n \n-        dirty = {p.name for p in parts if p.should_step_run('stage')}\n         step_index = common.COMMAND_ORDER.index(step) + 1\n \n         for step in common.COMMAND_ORDER[0:step_index]:\n             if step == 'stage':\n                 pluginhandler.check_for_collisions(self.config.all_parts)\n             for part in parts:\n-                self._run_step(step, part, part_names, dirty, recursed)\n+                self._run_step(step, part, part_names)\n \n         self._create_meta(step, part_names)\n \n-    def _run_step(self, step, part, part_names, dirty, recursed):\n+    def _run_step(self, step, part, part_names):\n+        if step in self._steps_run[part.name]:\n+            return\n+\n         common.reset_env()\n         prereqs = self.parts_config.get_prereqs(part.name)\n-        if recursed:\n-            prereqs = prereqs & dirty\n+        prereqs = {p for p in prereqs if 'stage' not in self._steps_run[p]}","path":"snapcraft/internal/lifecycle.py","position":37,"original_position":37,"commit_id":"67d85301677a05ab36d2acab3a3a953e10bea0e9","original_commit_id":"67d85301677a05ab36d2acab3a3a953e10bea0e9","user":{"login":"kyrofa","id":946674,"avatar_url":"https://avatars.githubusercontent.com/u/946674?v=3","gravatar_id":"","url":"https://api.github.com/users/kyrofa","html_url":"https://github.com/kyrofa","followers_url":"https://api.github.com/users/kyrofa/followers","following_url":"https://api.github.com/users/kyrofa/following{/other_user}","gists_url":"https://api.github.com/users/kyrofa/gists{/gist_id}","starred_url":"https://api.github.com/users/kyrofa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyrofa/subscriptions","organizations_url":"https://api.github.com/users/kyrofa/orgs","repos_url":"https://api.github.com/users/kyrofa/repos","events_url":"https://api.github.com/users/kyrofa/events{/privacy}","received_events_url":"https://api.github.com/users/kyrofa/received_events","type":"User","site_admin":false},"body":"Okay. You can probably remove the `prereq.should_step_run('stage')` below then, no?","created_at":"2016-09-13T14:35:18Z","updated_at":"2016-09-13T14:35:18Z","html_url":"https://github.com/snapcore/snapcraft/pull/794#discussion_r78572079","pull_request_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/794","_links":{"self":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments/78572079"},"html":{"href":"https://github.com/snapcore/snapcraft/pull/794#discussion_r78572079"},"pull_request":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/794"}}},"pull_request":{"url":"https://api.github.com/repos/snapcore/snapcraft/pulls/794","id":84982107,"html_url":"https://github.com/snapcore/snapcraft/pull/794","diff_url":"https://github.com/snapcore/snapcraft/pull/794.diff","patch_url":"https://github.com/snapcore/snapcraft/pull/794.patch","issue_url":"https://api.github.com/repos/snapcore/snapcraft/issues/794","number":794,"state":"open","locked":false,"title":"Improve lifecycle execution of steps","user":{"login":"sergiusens","id":1146853,"avatar_url":"https://avatars.githubusercontent.com/u/1146853?v=3","gravatar_id":"","url":"https://api.github.com/users/sergiusens","html_url":"https://github.com/sergiusens","followers_url":"https://api.github.com/users/sergiusens/followers","following_url":"https://api.github.com/users/sergiusens/following{/other_user}","gists_url":"https://api.github.com/users/sergiusens/gists{/gist_id}","starred_url":"https://api.github.com/users/sergiusens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergiusens/subscriptions","organizations_url":"https://api.github.com/users/sergiusens/orgs","repos_url":"https://api.github.com/users/sergiusens/repos","events_url":"https://api.github.com/users/sergiusens/events{/privacy}","received_events_url":"https://api.github.com/users/sergiusens/received_events","type":"User","site_admin":false},"body":"Execute the steps in order and skip early by keeping checks\r\nin runtime. The parts to run are a list instead of a set to not lose\r\nthe sort order\r\n\r\nLP: #1590599\r\n\r\nSigned-off-by: Sergio Schvezov <sergio.schvezov@ubuntu.com>","created_at":"2016-09-13T04:00:11Z","updated_at":"2016-09-13T14:35:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"4a901414204645fb17f4a0df906d349b047d90d7","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/794/commits","review_comments_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/794/comments","review_comment_url":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments{/number}","comments_url":"https://api.github.com/repos/snapcore/snapcraft/issues/794/comments","statuses_url":"https://api.github.com/repos/snapcore/snapcraft/statuses/67d85301677a05ab36d2acab3a3a953e10bea0e9","head":{"label":"sergiusens:bugfix/1590599/build-in-order-and-skip-in-runtime","ref":"bugfix/1590599/build-in-order-and-skip-in-runtime","sha":"67d85301677a05ab36d2acab3a3a953e10bea0e9","user":{"login":"sergiusens","id":1146853,"avatar_url":"https://avatars.githubusercontent.com/u/1146853?v=3","gravatar_id":"","url":"https://api.github.com/users/sergiusens","html_url":"https://github.com/sergiusens","followers_url":"https://api.github.com/users/sergiusens/followers","following_url":"https://api.github.com/users/sergiusens/following{/other_user}","gists_url":"https://api.github.com/users/sergiusens/gists{/gist_id}","starred_url":"https://api.github.com/users/sergiusens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergiusens/subscriptions","organizations_url":"https://api.github.com/users/sergiusens/orgs","repos_url":"https://api.github.com/users/sergiusens/repos","events_url":"https://api.github.com/users/sergiusens/events{/privacy}","received_events_url":"https://api.github.com/users/sergiusens/received_events","type":"User","site_admin":false},"repo":{"id":45202272,"name":"snapcraft","full_name":"sergiusens/snapcraft","owner":{"login":"sergiusens","id":1146853,"avatar_url":"https://avatars.githubusercontent.com/u/1146853?v=3","gravatar_id":"","url":"https://api.github.com/users/sergiusens","html_url":"https://github.com/sergiusens","followers_url":"https://api.github.com/users/sergiusens/followers","following_url":"https://api.github.com/users/sergiusens/following{/other_user}","gists_url":"https://api.github.com/users/sergiusens/gists{/gist_id}","starred_url":"https://api.github.com/users/sergiusens/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergiusens/subscriptions","organizations_url":"https://api.github.com/users/sergiusens/orgs","repos_url":"https://api.github.com/users/sergiusens/repos","events_url":"https://api.github.com/users/sergiusens/events{/privacy}","received_events_url":"https://api.github.com/users/sergiusens/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sergiusens/snapcraft","description":"Snapcraft is a delightful packaging tool","fork":true,"url":"https://api.github.com/repos/sergiusens/snapcraft","forks_url":"https://api.github.com/repos/sergiusens/snapcraft/forks","keys_url":"https://api.github.com/repos/sergiusens/snapcraft/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sergiusens/snapcraft/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sergiusens/snapcraft/teams","hooks_url":"https://api.github.com/repos/sergiusens/snapcraft/hooks","issue_events_url":"https://api.github.com/repos/sergiusens/snapcraft/issues/events{/number}","events_url":"https://api.github.com/repos/sergiusens/snapcraft/events","assignees_url":"https://api.github.com/repos/sergiusens/snapcraft/assignees{/user}","branches_url":"https://api.github.com/repos/sergiusens/snapcraft/branches{/branch}","tags_url":"https://api.github.com/repos/sergiusens/snapcraft/tags","blobs_url":"https://api.github.com/repos/sergiusens/snapcraft/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sergiusens/snapcraft/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sergiusens/snapcraft/git/refs{/sha}","trees_url":"https://api.github.com/repos/sergiusens/snapcraft/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sergiusens/snapcraft/statuses/{sha}","languages_url":"https://api.github.com/repos/sergiusens/snapcraft/languages","stargazers_url":"https://api.github.com/repos/sergiusens/snapcraft/stargazers","contributors_url":"https://api.github.com/repos/sergiusens/snapcraft/contributors","subscribers_url":"https://api.github.com/repos/sergiusens/snapcraft/subscribers","subscription_url":"https://api.github.com/repos/sergiusens/snapcraft/subscription","commits_url":"https://api.github.com/repos/sergiusens/snapcraft/commits{/sha}","git_commits_url":"https://api.github.com/repos/sergiusens/snapcraft/git/commits{/sha}","comments_url":"https://api.github.com/repos/sergiusens/snapcraft/comments{/number}","issue_comment_url":"https://api.github.com/repos/sergiusens/snapcraft/issues/comments{/number}","contents_url":"https://api.github.com/repos/sergiusens/snapcraft/contents/{+path}","compare_url":"https://api.github.com/repos/sergiusens/snapcraft/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sergiusens/snapcraft/merges","archive_url":"https://api.github.com/repos/sergiusens/snapcraft/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sergiusens/snapcraft/downloads","issues_url":"https://api.github.com/repos/sergiusens/snapcraft/issues{/number}","pulls_url":"https://api.github.com/repos/sergiusens/snapcraft/pulls{/number}","milestones_url":"https://api.github.com/repos/sergiusens/snapcraft/milestones{/number}","notifications_url":"https://api.github.com/repos/sergiusens/snapcraft/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sergiusens/snapcraft/labels{/name}","releases_url":"https://api.github.com/repos/sergiusens/snapcraft/releases{/id}","deployments_url":"https://api.github.com/repos/sergiusens/snapcraft/deployments","created_at":"2015-10-29T18:19:58Z","updated_at":"2016-01-28T18:31:38Z","pushed_at":"2016-09-13T14:12:17Z","git_url":"git://github.com/sergiusens/snapcraft.git","ssh_url":"git@github.com:sergiusens/snapcraft.git","clone_url":"https://github.com/sergiusens/snapcraft.git","svn_url":"https://github.com/sergiusens/snapcraft","homepage":null,"size":4866,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"snapcore:master","ref":"master","sha":"27c05980f84a3ee66d002074655c2b5b54406d10","user":{"login":"snapcore","id":19532717,"avatar_url":"https://avatars.githubusercontent.com/u/19532717?v=3","gravatar_id":"","url":"https://api.github.com/users/snapcore","html_url":"https://github.com/snapcore","followers_url":"https://api.github.com/users/snapcore/followers","following_url":"https://api.github.com/users/snapcore/following{/other_user}","gists_url":"https://api.github.com/users/snapcore/gists{/gist_id}","starred_url":"https://api.github.com/users/snapcore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snapcore/subscriptions","organizations_url":"https://api.github.com/users/snapcore/orgs","repos_url":"https://api.github.com/users/snapcore/repos","events_url":"https://api.github.com/users/snapcore/events{/privacy}","received_events_url":"https://api.github.com/users/snapcore/received_events","type":"Organization","site_admin":false},"repo":{"id":45199136,"name":"snapcraft","full_name":"snapcore/snapcraft","owner":{"login":"snapcore","id":19532717,"avatar_url":"https://avatars.githubusercontent.com/u/19532717?v=3","gravatar_id":"","url":"https://api.github.com/users/snapcore","html_url":"https://github.com/snapcore","followers_url":"https://api.github.com/users/snapcore/followers","following_url":"https://api.github.com/users/snapcore/following{/other_user}","gists_url":"https://api.github.com/users/snapcore/gists{/gist_id}","starred_url":"https://api.github.com/users/snapcore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snapcore/subscriptions","organizations_url":"https://api.github.com/users/snapcore/orgs","repos_url":"https://api.github.com/users/snapcore/repos","events_url":"https://api.github.com/users/snapcore/events{/privacy}","received_events_url":"https://api.github.com/users/snapcore/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/snapcore/snapcraft","description":"Snapcraft is a delightful packaging tool","fork":false,"url":"https://api.github.com/repos/snapcore/snapcraft","forks_url":"https://api.github.com/repos/snapcore/snapcraft/forks","keys_url":"https://api.github.com/repos/snapcore/snapcraft/keys{/key_id}","collaborators_url":"https://api.github.com/repos/snapcore/snapcraft/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/snapcore/snapcraft/teams","hooks_url":"https://api.github.com/repos/snapcore/snapcraft/hooks","issue_events_url":"https://api.github.com/repos/snapcore/snapcraft/issues/events{/number}","events_url":"https://api.github.com/repos/snapcore/snapcraft/events","assignees_url":"https://api.github.com/repos/snapcore/snapcraft/assignees{/user}","branches_url":"https://api.github.com/repos/snapcore/snapcraft/branches{/branch}","tags_url":"https://api.github.com/repos/snapcore/snapcraft/tags","blobs_url":"https://api.github.com/repos/snapcore/snapcraft/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/snapcore/snapcraft/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/snapcore/snapcraft/git/refs{/sha}","trees_url":"https://api.github.com/repos/snapcore/snapcraft/git/trees{/sha}","statuses_url":"https://api.github.com/repos/snapcore/snapcraft/statuses/{sha}","languages_url":"https://api.github.com/repos/snapcore/snapcraft/languages","stargazers_url":"https://api.github.com/repos/snapcore/snapcraft/stargazers","contributors_url":"https://api.github.com/repos/snapcore/snapcraft/contributors","subscribers_url":"https://api.github.com/repos/snapcore/snapcraft/subscribers","subscription_url":"https://api.github.com/repos/snapcore/snapcraft/subscription","commits_url":"https://api.github.com/repos/snapcore/snapcraft/commits{/sha}","git_commits_url":"https://api.github.com/repos/snapcore/snapcraft/git/commits{/sha}","comments_url":"https://api.github.com/repos/snapcore/snapcraft/comments{/number}","issue_comment_url":"https://api.github.com/repos/snapcore/snapcraft/issues/comments{/number}","contents_url":"https://api.github.com/repos/snapcore/snapcraft/contents/{+path}","compare_url":"https://api.github.com/repos/snapcore/snapcraft/compare/{base}...{head}","merges_url":"https://api.github.com/repos/snapcore/snapcraft/merges","archive_url":"https://api.github.com/repos/snapcore/snapcraft/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/snapcore/snapcraft/downloads","issues_url":"https://api.github.com/repos/snapcore/snapcraft/issues{/number}","pulls_url":"https://api.github.com/repos/snapcore/snapcraft/pulls{/number}","milestones_url":"https://api.github.com/repos/snapcore/snapcraft/milestones{/number}","notifications_url":"https://api.github.com/repos/snapcore/snapcraft/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/snapcore/snapcraft/labels{/name}","releases_url":"https://api.github.com/repos/snapcore/snapcraft/releases{/id}","deployments_url":"https://api.github.com/repos/snapcore/snapcraft/deployments","created_at":"2015-10-29T17:23:15Z","updated_at":"2016-09-08T12:28:39Z","pushed_at":"2016-09-13T14:12:18Z","git_url":"git://github.com/snapcore/snapcraft.git","ssh_url":"git@github.com:snapcore/snapcraft.git","clone_url":"https://github.com/snapcore/snapcraft.git","svn_url":"https://github.com/snapcore/snapcraft","homepage":null,"size":7231,"stargazers_count":214,"watchers_count":214,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":121,"mirror_url":null,"open_issues_count":22,"forks":121,"open_issues":22,"watchers":214,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/794"},"html":{"href":"https://github.com/snapcore/snapcraft/pull/794"},"issue":{"href":"https://api.github.com/repos/snapcore/snapcraft/issues/794"},"comments":{"href":"https://api.github.com/repos/snapcore/snapcraft/issues/794/comments"},"review_comments":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/794/comments"},"review_comment":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/snapcore/snapcraft/pulls/794/commits"},"statuses":{"href":"https://api.github.com/repos/snapcore/snapcraft/statuses/67d85301677a05ab36d2acab3a3a953e10bea0e9"}}}}
{"actor":{"display_login":"kyrofa"}}