{"action":"created","comment":{"url":"https://api.github.com/repos/sbt/sbt/pulls/comments/27083016","id":27083016,"diff_hunk":"@@ -0,0 +1,10 @@\n+> compile\n+\n+# Modify the auxiliary file\n+$ copy-file changes/util.txt util/util.txt\n+\n+$ copy-file changes/Bar.scala macro-provider/src/main/scala/Bar.scala\n+\n+> macro-client/compile\n+\n+> macro-client/checkRecompiled Client.scala","path":"sbt/src/sbt-test/source-dependencies/macro-auxiliary-files/test","position":10,"original_position":10,"commit_id":"da1aee1c70fdabfb60d84638c099aecde4e45f07","original_commit_id":"da1aee1c70fdabfb60d84638c099aecde4e45f07","user":{"login":"Duhemm","id":1765926,"avatar_url":"https://avatars.githubusercontent.com/u/1765926?v=3","gravatar_id":"","url":"https://api.github.com/users/Duhemm","html_url":"https://github.com/Duhemm","followers_url":"https://api.github.com/users/Duhemm/followers","following_url":"https://api.github.com/users/Duhemm/following{/other_user}","gists_url":"https://api.github.com/users/Duhemm/gists{/gist_id}","starred_url":"https://api.github.com/users/Duhemm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Duhemm/subscriptions","organizations_url":"https://api.github.com/users/Duhemm/orgs","repos_url":"https://api.github.com/users/Duhemm/repos","events_url":"https://api.github.com/users/Duhemm/events{/privacy}","received_events_url":"https://api.github.com/users/Duhemm/received_events","type":"User","site_admin":false},"body":"Hello Greg! It's defined here: https://github.com/sbt/sbt/pull/1757/files#diff-2097d5b5a7f0292a54187e2fb573c989R2, in  `sbt/src/sbt-test/source-dependencies/macro-auxiliary-files/macro-client/build.sbt`","created_at":"2015-03-24T23:16:16Z","updated_at":"2015-03-24T23:16:16Z","html_url":"https://github.com/sbt/sbt/pull/1757#discussion_r27083016","pull_request_url":"https://api.github.com/repos/sbt/sbt/pulls/1757","_links":{"self":{"href":"https://api.github.com/repos/sbt/sbt/pulls/comments/27083016"},"html":{"href":"https://github.com/sbt/sbt/pull/1757#discussion_r27083016"},"pull_request":{"href":"https://api.github.com/repos/sbt/sbt/pulls/1757"}}},"pull_request":{"url":"https://api.github.com/repos/sbt/sbt/pulls/1757","id":25413395,"html_url":"https://github.com/sbt/sbt/pull/1757","diff_url":"https://github.com/sbt/sbt/pull/1757.diff","patch_url":"https://github.com/sbt/sbt/pull/1757.patch","issue_url":"https://api.github.com/repos/sbt/sbt/issues/1757","number":1757,"state":"open","locked":false,"title":"Registering dependencies on auxiliary (non-scala) files","user":{"login":"Duhemm","id":1765926,"avatar_url":"https://avatars.githubusercontent.com/u/1765926?v=3","gravatar_id":"","url":"https://api.github.com/users/Duhemm","html_url":"https://github.com/Duhemm","followers_url":"https://api.github.com/users/Duhemm/followers","following_url":"https://api.github.com/users/Duhemm/following{/other_user}","gists_url":"https://api.github.com/users/Duhemm/gists{/gist_id}","starred_url":"https://api.github.com/users/Duhemm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Duhemm/subscriptions","organizations_url":"https://api.github.com/users/Duhemm/orgs","repos_url":"https://api.github.com/users/Duhemm/repos","events_url":"https://api.github.com/users/Duhemm/events{/privacy}","received_events_url":"https://api.github.com/users/Duhemm/received_events","type":"User","site_admin":false},"body":"Hi !\r\n\r\nI have been working on implementing a technique that would allow sbt to record dependencies on auxiliary files from macro-client.\r\n\r\nThe idea is to ask the author of the macro to attach to the expanded macro the list of the files that have been used to produce the expansion. Using this information, sbt would be able to invalidate macro-clients whenever a file used to produce a macro expansion is modified. This information would be given to sbt using a `java.util.HashMap[String, Any]` : The macro author would simply have to add a mapping from `touchedFiles` to a `List[java.io.File]` that contains the list of files that have been used to produce the expansion.\r\n\r\nThe scripted test gives an example of case where we encounter this kind of dependency.\r\n\r\nThe parts of this work that, I guess, may be the most surprising are :\r\n\r\n- Since we do not know where auxiliary files are in general, there's no directory that we can scan and get them all. We only see them if the compiled file advertises them. Therefore, we may not see them at all for a while, even if they have not be deleted. We need to pass them from a previous analysis to the next, because otherwise sbt would consider that they have been deleted.  [Here](https://github.com/sbt/sbt/pull/1757/files#diff-a2b129460f05548355e1345594eafcd8R24)\r\n- Adding a method `allAuxiliary` to `ReadStamps`. The methods of this kind (`allBinary`, ...) are all in the trait `Stamps` that extends `ReadStamps`. This method needs to be here because from method `changedInitial` in `IncrementalCommon.scala` we have an instance of `ReadStamps`. However, we need to check all the stamps on auxiliary dependencies to detect it if they have been changed. [Here](https://github.com/sbt/sbt/pull/1757/files#diff-016e49d59d4b8642540746430ccb7da9R21)\r\n\r\n/cc @xeno-by","created_at":"2014-12-03T11:54:22Z","updated_at":"2015-03-24T23:16:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cbd9371d7b141f1335e2a09226785af99e907b8c","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/sbt/sbt/pulls/1757/commits","review_comments_url":"https://api.github.com/repos/sbt/sbt/pulls/1757/comments","review_comment_url":"https://api.github.com/repos/sbt/sbt/pulls/comments{/number}","comments_url":"https://api.github.com/repos/sbt/sbt/issues/1757/comments","statuses_url":"https://api.github.com/repos/sbt/sbt/statuses/da1aee1c70fdabfb60d84638c099aecde4e45f07","head":{"label":"Duhemm:deps-auxiliary-files","ref":"deps-auxiliary-files","sha":"da1aee1c70fdabfb60d84638c099aecde4e45f07","user":{"login":"Duhemm","id":1765926,"avatar_url":"https://avatars.githubusercontent.com/u/1765926?v=3","gravatar_id":"","url":"https://api.github.com/users/Duhemm","html_url":"https://github.com/Duhemm","followers_url":"https://api.github.com/users/Duhemm/followers","following_url":"https://api.github.com/users/Duhemm/following{/other_user}","gists_url":"https://api.github.com/users/Duhemm/gists{/gist_id}","starred_url":"https://api.github.com/users/Duhemm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Duhemm/subscriptions","organizations_url":"https://api.github.com/users/Duhemm/orgs","repos_url":"https://api.github.com/users/Duhemm/repos","events_url":"https://api.github.com/users/Duhemm/events{/privacy}","received_events_url":"https://api.github.com/users/Duhemm/received_events","type":"User","site_admin":false},"repo":{"id":14860622,"name":"sbt","full_name":"Duhemm/sbt","owner":{"login":"Duhemm","id":1765926,"avatar_url":"https://avatars.githubusercontent.com/u/1765926?v=3","gravatar_id":"","url":"https://api.github.com/users/Duhemm","html_url":"https://github.com/Duhemm","followers_url":"https://api.github.com/users/Duhemm/followers","following_url":"https://api.github.com/users/Duhemm/following{/other_user}","gists_url":"https://api.github.com/users/Duhemm/gists{/gist_id}","starred_url":"https://api.github.com/users/Duhemm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Duhemm/subscriptions","organizations_url":"https://api.github.com/users/Duhemm/orgs","repos_url":"https://api.github.com/users/Duhemm/repos","events_url":"https://api.github.com/users/Duhemm/events{/privacy}","received_events_url":"https://api.github.com/users/Duhemm/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Duhemm/sbt","description":"sbt, a build tool for Scala","fork":true,"url":"https://api.github.com/repos/Duhemm/sbt","forks_url":"https://api.github.com/repos/Duhemm/sbt/forks","keys_url":"https://api.github.com/repos/Duhemm/sbt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Duhemm/sbt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Duhemm/sbt/teams","hooks_url":"https://api.github.com/repos/Duhemm/sbt/hooks","issue_events_url":"https://api.github.com/repos/Duhemm/sbt/issues/events{/number}","events_url":"https://api.github.com/repos/Duhemm/sbt/events","assignees_url":"https://api.github.com/repos/Duhemm/sbt/assignees{/user}","branches_url":"https://api.github.com/repos/Duhemm/sbt/branches{/branch}","tags_url":"https://api.github.com/repos/Duhemm/sbt/tags","blobs_url":"https://api.github.com/repos/Duhemm/sbt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Duhemm/sbt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Duhemm/sbt/git/refs{/sha}","trees_url":"https://api.github.com/repos/Duhemm/sbt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Duhemm/sbt/statuses/{sha}","languages_url":"https://api.github.com/repos/Duhemm/sbt/languages","stargazers_url":"https://api.github.com/repos/Duhemm/sbt/stargazers","contributors_url":"https://api.github.com/repos/Duhemm/sbt/contributors","subscribers_url":"https://api.github.com/repos/Duhemm/sbt/subscribers","subscription_url":"https://api.github.com/repos/Duhemm/sbt/subscription","commits_url":"https://api.github.com/repos/Duhemm/sbt/commits{/sha}","git_commits_url":"https://api.github.com/repos/Duhemm/sbt/git/commits{/sha}","comments_url":"https://api.github.com/repos/Duhemm/sbt/comments{/number}","issue_comment_url":"https://api.github.com/repos/Duhemm/sbt/issues/comments{/number}","contents_url":"https://api.github.com/repos/Duhemm/sbt/contents/{+path}","compare_url":"https://api.github.com/repos/Duhemm/sbt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Duhemm/sbt/merges","archive_url":"https://api.github.com/repos/Duhemm/sbt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Duhemm/sbt/downloads","issues_url":"https://api.github.com/repos/Duhemm/sbt/issues{/number}","pulls_url":"https://api.github.com/repos/Duhemm/sbt/pulls{/number}","milestones_url":"https://api.github.com/repos/Duhemm/sbt/milestones{/number}","notifications_url":"https://api.github.com/repos/Duhemm/sbt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Duhemm/sbt/labels{/name}","releases_url":"https://api.github.com/repos/Duhemm/sbt/releases{/id}","created_at":"2013-12-02T11:33:49Z","updated_at":"2015-03-08T14:15:29Z","pushed_at":"2015-03-14T13:49:26Z","git_url":"git://github.com/Duhemm/sbt.git","ssh_url":"git@github.com:Duhemm/sbt.git","clone_url":"https://github.com/Duhemm/sbt.git","svn_url":"https://github.com/Duhemm/sbt","homepage":"scala-sbt.org","size":30462,"stargazers_count":0,"watchers_count":0,"language":"Scala","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"0.13"}},"base":{"label":"sbt:0.13","ref":"0.13","sha":"015c61ad69739f88819035551e11f8a77350e718","user":{"login":"sbt","id":1158012,"avatar_url":"https://avatars.githubusercontent.com/u/1158012?v=3","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"repo":{"id":279553,"name":"sbt","full_name":"sbt/sbt","owner":{"login":"sbt","id":1158012,"avatar_url":"https://avatars.githubusercontent.com/u/1158012?v=3","gravatar_id":"","url":"https://api.github.com/users/sbt","html_url":"https://github.com/sbt","followers_url":"https://api.github.com/users/sbt/followers","following_url":"https://api.github.com/users/sbt/following{/other_user}","gists_url":"https://api.github.com/users/sbt/gists{/gist_id}","starred_url":"https://api.github.com/users/sbt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sbt/subscriptions","organizations_url":"https://api.github.com/users/sbt/orgs","repos_url":"https://api.github.com/users/sbt/repos","events_url":"https://api.github.com/users/sbt/events{/privacy}","received_events_url":"https://api.github.com/users/sbt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/sbt/sbt","description":"sbt, a build tool for Scala","fork":false,"url":"https://api.github.com/repos/sbt/sbt","forks_url":"https://api.github.com/repos/sbt/sbt/forks","keys_url":"https://api.github.com/repos/sbt/sbt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sbt/sbt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sbt/sbt/teams","hooks_url":"https://api.github.com/repos/sbt/sbt/hooks","issue_events_url":"https://api.github.com/repos/sbt/sbt/issues/events{/number}","events_url":"https://api.github.com/repos/sbt/sbt/events","assignees_url":"https://api.github.com/repos/sbt/sbt/assignees{/user}","branches_url":"https://api.github.com/repos/sbt/sbt/branches{/branch}","tags_url":"https://api.github.com/repos/sbt/sbt/tags","blobs_url":"https://api.github.com/repos/sbt/sbt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sbt/sbt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sbt/sbt/git/refs{/sha}","trees_url":"https://api.github.com/repos/sbt/sbt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sbt/sbt/statuses/{sha}","languages_url":"https://api.github.com/repos/sbt/sbt/languages","stargazers_url":"https://api.github.com/repos/sbt/sbt/stargazers","contributors_url":"https://api.github.com/repos/sbt/sbt/contributors","subscribers_url":"https://api.github.com/repos/sbt/sbt/subscribers","subscription_url":"https://api.github.com/repos/sbt/sbt/subscription","commits_url":"https://api.github.com/repos/sbt/sbt/commits{/sha}","git_commits_url":"https://api.github.com/repos/sbt/sbt/git/commits{/sha}","comments_url":"https://api.github.com/repos/sbt/sbt/comments{/number}","issue_comment_url":"https://api.github.com/repos/sbt/sbt/issues/comments{/number}","contents_url":"https://api.github.com/repos/sbt/sbt/contents/{+path}","compare_url":"https://api.github.com/repos/sbt/sbt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sbt/sbt/merges","archive_url":"https://api.github.com/repos/sbt/sbt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sbt/sbt/downloads","issues_url":"https://api.github.com/repos/sbt/sbt/issues{/number}","pulls_url":"https://api.github.com/repos/sbt/sbt/pulls{/number}","milestones_url":"https://api.github.com/repos/sbt/sbt/milestones{/number}","notifications_url":"https://api.github.com/repos/sbt/sbt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sbt/sbt/labels{/name}","releases_url":"https://api.github.com/repos/sbt/sbt/releases{/id}","created_at":"2009-08-17T00:31:14Z","updated_at":"2015-03-24T05:13:12Z","pushed_at":"2015-03-24T22:42:08Z","git_url":"git://github.com/sbt/sbt.git","ssh_url":"git@github.com:sbt/sbt.git","clone_url":"https://github.com/sbt/sbt.git","svn_url":"https://github.com/sbt/sbt","homepage":"scala-sbt.org","size":49311,"stargazers_count":2127,"watchers_count":2127,"language":"Scala","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":406,"mirror_url":null,"open_issues_count":297,"forks":406,"open_issues":297,"watchers":2127,"default_branch":"0.13"}},"_links":{"self":{"href":"https://api.github.com/repos/sbt/sbt/pulls/1757"},"html":{"href":"https://github.com/sbt/sbt/pull/1757"},"issue":{"href":"https://api.github.com/repos/sbt/sbt/issues/1757"},"comments":{"href":"https://api.github.com/repos/sbt/sbt/issues/1757/comments"},"review_comments":{"href":"https://api.github.com/repos/sbt/sbt/pulls/1757/comments"},"review_comment":{"href":"https://api.github.com/repos/sbt/sbt/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/sbt/sbt/pulls/1757/commits"},"statuses":{"href":"https://api.github.com/repos/sbt/sbt/statuses/da1aee1c70fdabfb60d84638c099aecde4e45f07"}}}}