{"action":"created","comment":{"url":"https://api.github.com/repos/xamarin/xamarin-android/pulls/comments/74950372","id":74950372,"diff_hunk":"@@ -0,0 +1,30 @@\n+<?xml version=\"1.0\" encoding=\"utf-8\"?>\n+<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n+  <UsingTask AssemblyFile=\"..\\..\\bin\\Build$(Configuration)\\xa-prep-tasks.dll\"  TaskName=\"Xamarin.Android.BuildTools.PrepTasks.GitCommitHash\" />\n+  <Target Name=\"_GetHashes\">\n+    <GitCommitHash\n+        WorkingDirectory=\"$(LibZipSourceFullPath)\"\n+        ToolPath=\"$(GitToolPath)\"\n+        ToolExe=\"$(GitToolExe)\">\n+      <Output TaskParameter=\"AbbreviatedCommitHash\"   PropertyName=\"_LibZipHash\" />\n+    </GitCommitHash>\n+    <GitCommitHash\n+        WorkingDirectory=\"$(LlvmSourceFullPath)\"\n+        ToolPath=\"$(GitToolPath)\"\n+        ToolExe=\"$(GitToolExe)\">\n+      <Output TaskParameter=\"AbbreviatedCommitHash\"   PropertyName=\"_LlvmHash\" />\n+    </GitCommitHash>\n+    <GitCommitHash\n+        WorkingDirectory=\"$(MonoSourceFullPath)\"\n+        ToolPath=\"$(GitToolPath)\"\n+        ToolExe=\"$(GitToolExe)\">\n+      <Output TaskParameter=\"AbbreviatedCommitHash\"   PropertyName=\"_MonoHash\" />\n+    </GitCommitHash>\n+  </Target>\n+  <Target Name=\"GetBundleFileName\"\n+      DependsOnTargets=\"_GetHashes\">\n+    <PropertyGroup>\n+      <XABundleFileName>bundle-v2-$(Configuration)-$(HostOS)-libzip=$(_LibZipHash),llvm=$(_LlvmHash),mono=$(_MonoHash).zip</XABundleFileName>","path":"build-tools/bundle/bundle-path.targets","position":27,"original_position":27,"commit_id":"d16225b2b313cd75bd8e66977dce8d81c6c907fe","original_commit_id":"d16225b2b313cd75bd8e66977dce8d81c6c907fe","user":{"login":"radical","id":1472,"avatar_url":"https://avatars.githubusercontent.com/u/1472?v=3","gravatar_id":"","url":"https://api.github.com/users/radical","html_url":"https://github.com/radical","followers_url":"https://api.github.com/users/radical/followers","following_url":"https://api.github.com/users/radical/following{/other_user}","gists_url":"https://api.github.com/users/radical/gists{/gist_id}","starred_url":"https://api.github.com/users/radical/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/radical/subscriptions","organizations_url":"https://api.github.com/users/radical/orgs","repos_url":"https://api.github.com/users/radical/repos","events_url":"https://api.github.com/users/radical/events{/privacy}","received_events_url":"https://api.github.com/users/radical/received_events","type":"User","site_admin":false},"body":"Should the `v2` be a property? It is being used in more than one place and sounds like something that might be updated in future too.","created_at":"2016-08-16T14:50:49Z","updated_at":"2016-08-16T14:50:49Z","html_url":"https://github.com/xamarin/xamarin-android/pull/162#discussion_r74950372","pull_request_url":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162","_links":{"self":{"href":"https://api.github.com/repos/xamarin/xamarin-android/pulls/comments/74950372"},"html":{"href":"https://github.com/xamarin/xamarin-android/pull/162#discussion_r74950372"},"pull_request":{"href":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162"}}},"pull_request":{"url":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162","id":81159349,"html_url":"https://github.com/xamarin/xamarin-android/pull/162","diff_url":"https://github.com/xamarin/xamarin-android/pull/162.diff","patch_url":"https://github.com/xamarin/xamarin-android/pull/162.patch","issue_url":"https://api.github.com/repos/xamarin/xamarin-android/issues/162","number":162,"state":"open","locked":false,"title":"[xa-prep-tasks] Use the Mono bundle","user":{"login":"jonpryor","id":155958,"avatar_url":"https://avatars.githubusercontent.com/u/155958?v=3","gravatar_id":"","url":"https://api.github.com/users/jonpryor","html_url":"https://github.com/jonpryor","followers_url":"https://api.github.com/users/jonpryor/followers","following_url":"https://api.github.com/users/jonpryor/following{/other_user}","gists_url":"https://api.github.com/users/jonpryor/gists{/gist_id}","starred_url":"https://api.github.com/users/jonpryor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonpryor/subscriptions","organizations_url":"https://api.github.com/users/jonpryor/orgs","repos_url":"https://api.github.com/users/jonpryor/repos","events_url":"https://api.github.com/users/jonpryor/events{/privacy}","received_events_url":"https://api.github.com/users/jonpryor/received_events","type":"User","site_admin":false},"body":"**DO NOT MERGE**\r\n\r\nBefore merging the bundle filename needs to be changed (see the TODO in the commit). I don't want to do this *yet* so that I can see if the *current* bundle is used by the PR bot. :-)\r\n\r\n---\r\n\r\nContext: https://github.com/xamarin/xamarin-android/commit/fbfd676c102c63e4e06e750857b178725e33450c\r\n\r\nStage 3 of the cunning plan is to (attempt to) use the mono bundle\r\nintroduced in commit fbfd676c.\r\n\r\nThis \"simple\" desire (ha!) re-raises the architectural project\r\ndependency issue \"solved\" in fbfd676c, but first, a simple question:\r\n\r\nWhat should download the mono bundle?\r\n\r\nThere are two plausible answers:\r\n\r\n1. `make prepare` can (somehow) handle it.\r\n2. MSBuild can (somehow) handle it.\r\n\r\nBoth are plausible. The problem with using `make` targets (1) is there\r\nis increased potential for \"duplication\" -- duplication of the bundle\r\nfilename, downloading it, and extracting it. Plus, `make` isn't\r\n\"Windows friendly\", in that GNU make isn't (normally) present with\r\nVisual Studio. (`NMAKE` is, but the Makefiles in this project are not\r\ncompatible with `NMAKE`.)\r\n\r\nWhich brings us to MSBuild (2): can it handle the task?\r\n\r\nTo tackle that, we need to be able to have an MSBuild task project\r\nwhich has *no dependencies*, so that it can download and extract the\r\nmono bundle *before anything else runs*, as it may be downloading\r\ncontents which mean that other projects don't *need* to run.\r\n\r\nThe need for a \"pre-bootstrap\" task assembly -- called `xa-prep-tasks`\r\n-- thus \"undoes\" *some* of the logic regarding `libzip-windows.mdproj`\r\nand the `<Zip/>` task from fbfd676c: it isn't *possible* to rely on\r\n`libzip` from a \"pre-build\" state, as `libzip` is one of the things in\r\nthe mono bundle, so now we need *two* \"bootstrap\" task assemblies:\r\none without a `libzip` dependency -- `xa-prep-tasks.dll` -- and one\r\n*with* a `libzip` dependency --\r\n`Xamarin.Android.Tools.BootstrapTasks.dll`\r\n\r\nMove tasks which don't currently require `libzip` -- or won't in the\r\nfuture, or laziness -- from `Xamarin.Android.Tools.BootstrapTasks.dll`\r\nand move them into `xa-prep-tasks.dll`.\r\n\r\nWith that architectural compromise in place, add `xa-prep-tasks` as a\r\n`@(ProjectReference)` to various projects to help ensure it's built\r\n*first*, and rearchitect `bundle.mdproj` so that\r\n`xa-prep-tasks.targets` and `bundle.targets` can use the same targets\r\nto compute the bundle filename, now in\r\n`build-tools/bundle/bundle-path.targets`.\r\n\r\nAdd a post-build step to `xa-prep-tasks.csproj` which downloads and\r\nextracts the expected mono bundle.\r\n\r\nOne \"problem\" (feature?) is that the new `<SystemUnzip/>` task doesn't\r\nreport errors as errors when unzip'ing the file. This turns out to be\r\nfine here because when downloading the mono bundle from Azure we don't\r\nget a 404 *anyway* -- Azure instead returns an XML document containing\r\nan error message (wat?!). We can thus ignore most error handling\r\nentirely...though we're *also* ignoring any checking for invalid\r\ndownloads, which is something we should address in the future.\r\n\r\nUpdate the varioous project files so that they won't attempt to\r\nrebuild binaries that were present in the mono bundle.\r\n\r\nFinally, the mono bundle isn't quite right, as it installs `llc.exe`\r\nand `opt.exe` into `bin/`, not `lib/mandroid`. This was overlooked in\r\ncommit fbfd676c.\r\n\r\nAdd a version number to the bundle filename so that a unique filename\r\nis used, thus ensuring that we attempt to download an updated mono\r\nbundle in the future, and correct the `CreateBundle` target so that it\r\npackages required files.","created_at":"2016-08-12T18:08:18Z","updated_at":"2016-08-16T14:50:49Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7b15996fc95ee553263215205642ae54fbda0140","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162/commits","review_comments_url":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162/comments","review_comment_url":"https://api.github.com/repos/xamarin/xamarin-android/pulls/comments{/number}","comments_url":"https://api.github.com/repos/xamarin/xamarin-android/issues/162/comments","statuses_url":"https://api.github.com/repos/xamarin/xamarin-android/statuses/d16225b2b313cd75bd8e66977dce8d81c6c907fe","head":{"label":"jonpryor:jonp-use-bundle","ref":"jonp-use-bundle","sha":"d16225b2b313cd75bd8e66977dce8d81c6c907fe","user":{"login":"jonpryor","id":155958,"avatar_url":"https://avatars.githubusercontent.com/u/155958?v=3","gravatar_id":"","url":"https://api.github.com/users/jonpryor","html_url":"https://github.com/jonpryor","followers_url":"https://api.github.com/users/jonpryor/followers","following_url":"https://api.github.com/users/jonpryor/following{/other_user}","gists_url":"https://api.github.com/users/jonpryor/gists{/gist_id}","starred_url":"https://api.github.com/users/jonpryor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonpryor/subscriptions","organizations_url":"https://api.github.com/users/jonpryor/orgs","repos_url":"https://api.github.com/users/jonpryor/repos","events_url":"https://api.github.com/users/jonpryor/events{/privacy}","received_events_url":"https://api.github.com/users/jonpryor/received_events","type":"User","site_admin":false},"repo":{"id":57242763,"name":"xamarin-android","full_name":"jonpryor/xamarin-android","owner":{"login":"jonpryor","id":155958,"avatar_url":"https://avatars.githubusercontent.com/u/155958?v=3","gravatar_id":"","url":"https://api.github.com/users/jonpryor","html_url":"https://github.com/jonpryor","followers_url":"https://api.github.com/users/jonpryor/followers","following_url":"https://api.github.com/users/jonpryor/following{/other_user}","gists_url":"https://api.github.com/users/jonpryor/gists{/gist_id}","starred_url":"https://api.github.com/users/jonpryor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jonpryor/subscriptions","organizations_url":"https://api.github.com/users/jonpryor/orgs","repos_url":"https://api.github.com/users/jonpryor/repos","events_url":"https://api.github.com/users/jonpryor/events{/privacy}","received_events_url":"https://api.github.com/users/jonpryor/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jonpryor/xamarin-android","description":"","fork":true,"url":"https://api.github.com/repos/jonpryor/xamarin-android","forks_url":"https://api.github.com/repos/jonpryor/xamarin-android/forks","keys_url":"https://api.github.com/repos/jonpryor/xamarin-android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jonpryor/xamarin-android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jonpryor/xamarin-android/teams","hooks_url":"https://api.github.com/repos/jonpryor/xamarin-android/hooks","issue_events_url":"https://api.github.com/repos/jonpryor/xamarin-android/issues/events{/number}","events_url":"https://api.github.com/repos/jonpryor/xamarin-android/events","assignees_url":"https://api.github.com/repos/jonpryor/xamarin-android/assignees{/user}","branches_url":"https://api.github.com/repos/jonpryor/xamarin-android/branches{/branch}","tags_url":"https://api.github.com/repos/jonpryor/xamarin-android/tags","blobs_url":"https://api.github.com/repos/jonpryor/xamarin-android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jonpryor/xamarin-android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jonpryor/xamarin-android/git/refs{/sha}","trees_url":"https://api.github.com/repos/jonpryor/xamarin-android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jonpryor/xamarin-android/statuses/{sha}","languages_url":"https://api.github.com/repos/jonpryor/xamarin-android/languages","stargazers_url":"https://api.github.com/repos/jonpryor/xamarin-android/stargazers","contributors_url":"https://api.github.com/repos/jonpryor/xamarin-android/contributors","subscribers_url":"https://api.github.com/repos/jonpryor/xamarin-android/subscribers","subscription_url":"https://api.github.com/repos/jonpryor/xamarin-android/subscription","commits_url":"https://api.github.com/repos/jonpryor/xamarin-android/commits{/sha}","git_commits_url":"https://api.github.com/repos/jonpryor/xamarin-android/git/commits{/sha}","comments_url":"https://api.github.com/repos/jonpryor/xamarin-android/comments{/number}","issue_comment_url":"https://api.github.com/repos/jonpryor/xamarin-android/issues/comments{/number}","contents_url":"https://api.github.com/repos/jonpryor/xamarin-android/contents/{+path}","compare_url":"https://api.github.com/repos/jonpryor/xamarin-android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jonpryor/xamarin-android/merges","archive_url":"https://api.github.com/repos/jonpryor/xamarin-android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jonpryor/xamarin-android/downloads","issues_url":"https://api.github.com/repos/jonpryor/xamarin-android/issues{/number}","pulls_url":"https://api.github.com/repos/jonpryor/xamarin-android/pulls{/number}","milestones_url":"https://api.github.com/repos/jonpryor/xamarin-android/milestones{/number}","notifications_url":"https://api.github.com/repos/jonpryor/xamarin-android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jonpryor/xamarin-android/labels{/name}","releases_url":"https://api.github.com/repos/jonpryor/xamarin-android/releases{/id}","deployments_url":"https://api.github.com/repos/jonpryor/xamarin-android/deployments","created_at":"2016-04-27T19:46:01Z","updated_at":"2016-04-27T19:46:03Z","pushed_at":"2016-08-16T00:16:58Z","git_url":"git://github.com/jonpryor/xamarin-android.git","ssh_url":"git@github.com:jonpryor/xamarin-android.git","clone_url":"https://github.com/jonpryor/xamarin-android.git","svn_url":"https://github.com/jonpryor/xamarin-android","homepage":null,"size":4894,"stargazers_count":0,"watchers_count":0,"language":"C#","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":"xamarin:master","ref":"master","sha":"1b853bad84e7111e929b729e5035236679cbefda","user":{"login":"xamarin","id":790012,"avatar_url":"https://avatars.githubusercontent.com/u/790012?v=3","gravatar_id":"","url":"https://api.github.com/users/xamarin","html_url":"https://github.com/xamarin","followers_url":"https://api.github.com/users/xamarin/followers","following_url":"https://api.github.com/users/xamarin/following{/other_user}","gists_url":"https://api.github.com/users/xamarin/gists{/gist_id}","starred_url":"https://api.github.com/users/xamarin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xamarin/subscriptions","organizations_url":"https://api.github.com/users/xamarin/orgs","repos_url":"https://api.github.com/users/xamarin/repos","events_url":"https://api.github.com/users/xamarin/events{/privacy}","received_events_url":"https://api.github.com/users/xamarin/received_events","type":"Organization","site_admin":false},"repo":{"id":55075302,"name":"xamarin-android","full_name":"xamarin/xamarin-android","owner":{"login":"xamarin","id":790012,"avatar_url":"https://avatars.githubusercontent.com/u/790012?v=3","gravatar_id":"","url":"https://api.github.com/users/xamarin","html_url":"https://github.com/xamarin","followers_url":"https://api.github.com/users/xamarin/followers","following_url":"https://api.github.com/users/xamarin/following{/other_user}","gists_url":"https://api.github.com/users/xamarin/gists{/gist_id}","starred_url":"https://api.github.com/users/xamarin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xamarin/subscriptions","organizations_url":"https://api.github.com/users/xamarin/orgs","repos_url":"https://api.github.com/users/xamarin/repos","events_url":"https://api.github.com/users/xamarin/events{/privacy}","received_events_url":"https://api.github.com/users/xamarin/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/xamarin/xamarin-android","description":"","fork":false,"url":"https://api.github.com/repos/xamarin/xamarin-android","forks_url":"https://api.github.com/repos/xamarin/xamarin-android/forks","keys_url":"https://api.github.com/repos/xamarin/xamarin-android/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xamarin/xamarin-android/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xamarin/xamarin-android/teams","hooks_url":"https://api.github.com/repos/xamarin/xamarin-android/hooks","issue_events_url":"https://api.github.com/repos/xamarin/xamarin-android/issues/events{/number}","events_url":"https://api.github.com/repos/xamarin/xamarin-android/events","assignees_url":"https://api.github.com/repos/xamarin/xamarin-android/assignees{/user}","branches_url":"https://api.github.com/repos/xamarin/xamarin-android/branches{/branch}","tags_url":"https://api.github.com/repos/xamarin/xamarin-android/tags","blobs_url":"https://api.github.com/repos/xamarin/xamarin-android/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xamarin/xamarin-android/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xamarin/xamarin-android/git/refs{/sha}","trees_url":"https://api.github.com/repos/xamarin/xamarin-android/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xamarin/xamarin-android/statuses/{sha}","languages_url":"https://api.github.com/repos/xamarin/xamarin-android/languages","stargazers_url":"https://api.github.com/repos/xamarin/xamarin-android/stargazers","contributors_url":"https://api.github.com/repos/xamarin/xamarin-android/contributors","subscribers_url":"https://api.github.com/repos/xamarin/xamarin-android/subscribers","subscription_url":"https://api.github.com/repos/xamarin/xamarin-android/subscription","commits_url":"https://api.github.com/repos/xamarin/xamarin-android/commits{/sha}","git_commits_url":"https://api.github.com/repos/xamarin/xamarin-android/git/commits{/sha}","comments_url":"https://api.github.com/repos/xamarin/xamarin-android/comments{/number}","issue_comment_url":"https://api.github.com/repos/xamarin/xamarin-android/issues/comments{/number}","contents_url":"https://api.github.com/repos/xamarin/xamarin-android/contents/{+path}","compare_url":"https://api.github.com/repos/xamarin/xamarin-android/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xamarin/xamarin-android/merges","archive_url":"https://api.github.com/repos/xamarin/xamarin-android/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xamarin/xamarin-android/downloads","issues_url":"https://api.github.com/repos/xamarin/xamarin-android/issues{/number}","pulls_url":"https://api.github.com/repos/xamarin/xamarin-android/pulls{/number}","milestones_url":"https://api.github.com/repos/xamarin/xamarin-android/milestones{/number}","notifications_url":"https://api.github.com/repos/xamarin/xamarin-android/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xamarin/xamarin-android/labels{/name}","releases_url":"https://api.github.com/repos/xamarin/xamarin-android/releases{/id}","deployments_url":"https://api.github.com/repos/xamarin/xamarin-android/deployments","created_at":"2016-03-30T15:37:14Z","updated_at":"2016-08-16T11:29:14Z","pushed_at":"2016-08-16T12:29:33Z","git_url":"git://github.com/xamarin/xamarin-android.git","ssh_url":"git@github.com:xamarin/xamarin-android.git","clone_url":"https://github.com/xamarin/xamarin-android.git","svn_url":"https://github.com/xamarin/xamarin-android","homepage":null,"size":5076,"stargazers_count":576,"watchers_count":576,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":121,"mirror_url":null,"open_issues_count":9,"forks":121,"open_issues":9,"watchers":576,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162"},"html":{"href":"https://github.com/xamarin/xamarin-android/pull/162"},"issue":{"href":"https://api.github.com/repos/xamarin/xamarin-android/issues/162"},"comments":{"href":"https://api.github.com/repos/xamarin/xamarin-android/issues/162/comments"},"review_comments":{"href":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162/comments"},"review_comment":{"href":"https://api.github.com/repos/xamarin/xamarin-android/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/xamarin/xamarin-android/pulls/162/commits"},"statuses":{"href":"https://api.github.com/repos/xamarin/xamarin-android/statuses/d16225b2b313cd75bd8e66977dce8d81c6c907fe"}}}}
{"actor":{"display_login":"radical"}}