{"action":"created","issue":{"url":"https://api.github.com/repos/twitter/heron/issues/1032","repository_url":"https://api.github.com/repos/twitter/heron","labels_url":"https://api.github.com/repos/twitter/heron/issues/1032/labels{/name}","comments_url":"https://api.github.com/repos/twitter/heron/issues/1032/comments","events_url":"https://api.github.com/repos/twitter/heron/issues/1032/events","html_url":"https://github.com/twitter/heron/issues/1032","id":163996187,"number":1032,"title":"Split out pex_rules.bzl to a separate project?","user":{"login":"benley","id":1432730,"avatar_url":"https://avatars.githubusercontent.com/u/1432730?v=3","gravatar_id":"","url":"https://api.github.com/users/benley","html_url":"https://github.com/benley","followers_url":"https://api.github.com/users/benley/followers","following_url":"https://api.github.com/users/benley/following{/other_user}","gists_url":"https://api.github.com/users/benley/gists{/gist_id}","starred_url":"https://api.github.com/users/benley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benley/subscriptions","organizations_url":"https://api.github.com/users/benley/orgs","repos_url":"https://api.github.com/users/benley/repos","events_url":"https://api.github.com/users/benley/events{/privacy}","received_events_url":"https://api.github.com/users/benley/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":9,"created_at":"2016-07-06T04:28:21Z","updated_at":"2016-07-11T18:46:55Z","closed_at":null,"body":"The pex python rules found in `//tools/rules:pex_rules.bzl` would be useful to numerous projects beyond Heron.  I have started maintaining an enhanced variant of those rules in a new repository: https://github.com/benley/bazel_rules_pex.\r\n\r\nSome of the changes I made:\r\n\r\n* Everything works with bazel's sandboxing enabled now(!)\r\n* `setuptools` and `wheel` are fetched as external `http_file` resources, not vendored into the project tree.\r\n* The pex wrapper can now correctly (but optionally) use .whl dependencies along with eggs.\r\n* The rules now work when loaded from a remote skylark repository.\r\n* There is full documentation, generated from the source docstrings via skydoc.\r\n* Added an `entrypoint` attribute to `pex_binary`, allowing a python module name to be used instead of a `main` file.  Useful for building pexes for external egg/whl dependencies.\r\n* pex_library targets can now be passed to the native `py_library`, `py_binary`, and `py_test` rules as a dependency, and vice versa.\r\n* `main` module resolution now works correctly for generated source files.\r\n* `pex_test` no longer invokes the py.test runner by default. Instead it works more like bazel's built-in py_test rule.  The previous py.test behaviour is now available as a `pex_pytest` macro. _(incompatible change! but trivially reconciled)_\r\n* `pex_test` is now a trivial special case of `pex_binary`.\r\n* `pex_pytest` itself is now a fairly simple wrapper around `pex_binary`.\r\n* `pex_pytest` now automatically adds a dependency on py.test\r\n* The `resources` attribute has been renamed to `data` to be consistent with most other Bazel rule types. Its behaviour has not changed, just the name. _(incompatible change! but trivially reconciled.)_\r\n* There is a lot less duplicated code.\r\n\r\nWould there be any interest in combining efforts here?  My goal is to get rules_pex published as a semi-official project in the bazelbuild github organization, alongside the various other language-specific Bazel rules.  I would also be happy to contribute some or all of these improvements back to Heron, whether or not Heron ends up importing the rules from a separate project.\r\n\r\nThanks! Looking forward to any feedback."},"comment":{"url":"https://api.github.com/repos/twitter/heron/issues/comments/231827631","html_url":"https://github.com/twitter/heron/issues/1032#issuecomment-231827631","issue_url":"https://api.github.com/repos/twitter/heron/issues/1032","id":231827631,"user":{"login":"benley","id":1432730,"avatar_url":"https://avatars.githubusercontent.com/u/1432730?v=3","gravatar_id":"","url":"https://api.github.com/users/benley","html_url":"https://github.com/benley","followers_url":"https://api.github.com/users/benley/followers","following_url":"https://api.github.com/users/benley/following{/other_user}","gists_url":"https://api.github.com/users/benley/gists{/gist_id}","starred_url":"https://api.github.com/users/benley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/benley/subscriptions","organizations_url":"https://api.github.com/users/benley/orgs","repos_url":"https://api.github.com/users/benley/repos","events_url":"https://api.github.com/users/benley/events{/privacy}","received_events_url":"https://api.github.com/users/benley/received_events","type":"User","site_admin":false},"created_at":"2016-07-11T18:46:55Z","updated_at":"2016-07-11T18:46:55Z","body":"I'll try to keep my fork in sync with the update!  Haven't had time to do much work on this in the last week but I'll get back to it soon."}}
{"actor":{"display_login":"benley"}}