{"action":"opened","number":1324,"pull_request":{"url":"https://api.github.com/repos/shoes/shoes4/pulls/1324","id":97450062,"html_url":"https://github.com/shoes/shoes4/pull/1324","diff_url":"https://github.com/shoes/shoes4/pull/1324.diff","patch_url":"https://github.com/shoes/shoes4/pull/1324.patch","issue_url":"https://api.github.com/repos/shoes/shoes4/issues/1324","number":1324,"state":"open","locked":false,"title":"DNM: Packaging love :heart:","user":{"login":"jasonrclark","id":130504,"avatar_url":"https://avatars.githubusercontent.com/u/130504?v=3","gravatar_id":"","url":"https://api.github.com/users/jasonrclark","html_url":"https://github.com/jasonrclark","followers_url":"https://api.github.com/users/jasonrclark/followers","following_url":"https://api.github.com/users/jasonrclark/following{/other_user}","gists_url":"https://api.github.com/users/jasonrclark/gists{/gist_id}","starred_url":"https://api.github.com/users/jasonrclark/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jasonrclark/subscriptions","organizations_url":"https://api.github.com/users/jasonrclark/orgs","repos_url":"https://api.github.com/users/jasonrclark/repos","events_url":"https://api.github.com/users/jasonrclark/events{/privacy}","received_events_url":"https://api.github.com/users/jasonrclark/received_events","type":"User","site_admin":false},"body":"This is a WIP PR to start thrashing out packaging. Fair warning, this PR is probably gonna get long and involved, so buckle your seatbelts! 🚗 💥 \r\n\r\nFirst things first, I'm aiming to get packaging from `bin/shoes` to generate a run-able jar.\r\n\r\n## furoshiki update\r\nThis relies on https://github.com/shoes/furoshiki/pull/21 to pull in newest `warbler`. This gets the generated package up onto JRuby 9.1, which I believe will address #1209.\r\n\r\n(Side note for those following along at home, testing this packaging is a pain in the 🍑! One of the biggest causes is that warbler picks up installed gems (which makes sense). But that means if we make a change to a Shoes gem to get things working, gotta re-build and install to test it. Aw, yeah.)\r\n\r\n## Problem with `shoes-core` extensions\r\nNext stall that I hit was that the generated jar refused to load `shoes-core` with this error:\r\n\r\n```\r\n✔ ♥♥♥♥ [jruby-9.1.6.0] (master)*\r\n~/source/shoes4:java -XstartOnFirstThread -jar samples/packaging/pkg/package_me.jar\r\nIgnoring shoes-core-4.0.0.pre7 because its extensions are not built.  Try: gem pristine shoes-core --version 4.0.0.pre7\r\nLoadError: no such file to load -- shoes\r\n  require at org/jruby/RubyKernel.java:959\r\n  require at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55\r\n   <main> at uri:classloader:/META-INF/init.rb:5\r\n  require at org/jruby/RubyKernel.java:959\r\n   (root) at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1\r\n   <main> at uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:55\r\nERROR: org.jruby.embed.EvalFailedException: (LoadError) no such file to load -- shoes\r\n```\r\n\r\nDone a little digging but haven't gotten a good solution to this quite yet in configuring warbler. Will see if I can get a minimal test-case together and open an issue over there to see if it's something known and/or a bug.\r\n\r\nThat said, we do have a workaround in the form of 1ec80f9b9e06c6d93666d577ff7f25df3e69c637. We only have \"native extensions\" to do our funky shell-script installation and avoid double-loading JRuby ([sigh](https://github.com/shoes/shoes4/blob/master/shoes-core/ext/install/Rakefile#L4)). If I can't get traction on the warbler/rubygems end of this, we could instead move the executable generation over into the `shoes` metagem, which we don't even bother pulling into our packaged apps. Then `shoes-core` could be extension-free, install happily, and no one would be the wiser. It actually makes a little sense to me that `shoes` would be the home for executable shenanigans vs `shoes-core` which is intended as the squeaky clean home for our DSL.\r\n\r\n## Packaging detection issue\r\nSo, once dropping the extension building temporarily to get things chugging along, ran into a second snag with detecting when we're in a packaged state from the SWT app code for writing out the icon image. This changed from JRuy 1.7 to 9.x. We already properly handle it the new way elsewhere, so this will update it to be happy.\r\n\r\n## Next steps\r\nDone for tonight, but will work next on getting a minimal duplication of our pain with `warbler` + `shoes-core`. Will probably do the move of executable fun from `shoes-core` to `shoes` in parallel on speculation since it's just mechanics.\r\n\r\nAfter that, may play with testing out from a full `shoes` gem installation since there seemed to be other issues at play there related to Bundler.","created_at":"2016-12-11T06:27:10Z","updated_at":"2016-12-11T06:27:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"593e5801235cd81dbbb32e3f51d0bb3fde5939b9","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/shoes/shoes4/pulls/1324/commits","review_comments_url":"https://api.github.com/repos/shoes/shoes4/pulls/1324/comments","review_comment_url":"https://api.github.com/repos/shoes/shoes4/pulls/comments{/number}","comments_url":"https://api.github.com/repos/shoes/shoes4/issues/1324/comments","statuses_url":"https://api.github.com/repos/shoes/shoes4/statuses/1ec80f9b9e06c6d93666d577ff7f25df3e69c637","head":{"label":"shoes:packaging-love","ref":"packaging-love","sha":"1ec80f9b9e06c6d93666d577ff7f25df3e69c637","user":{"login":"shoes","id":119935,"avatar_url":"https://avatars.githubusercontent.com/u/119935?v=3","gravatar_id":"","url":"https://api.github.com/users/shoes","html_url":"https://github.com/shoes","followers_url":"https://api.github.com/users/shoes/followers","following_url":"https://api.github.com/users/shoes/following{/other_user}","gists_url":"https://api.github.com/users/shoes/gists{/gist_id}","starred_url":"https://api.github.com/users/shoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoes/subscriptions","organizations_url":"https://api.github.com/users/shoes/orgs","repos_url":"https://api.github.com/users/shoes/repos","events_url":"https://api.github.com/users/shoes/events{/privacy}","received_events_url":"https://api.github.com/users/shoes/received_events","type":"Organization","site_admin":false},"repo":{"id":4434126,"name":"shoes4","full_name":"shoes/shoes4","owner":{"login":"shoes","id":119935,"avatar_url":"https://avatars.githubusercontent.com/u/119935?v=3","gravatar_id":"","url":"https://api.github.com/users/shoes","html_url":"https://github.com/shoes","followers_url":"https://api.github.com/users/shoes/followers","following_url":"https://api.github.com/users/shoes/following{/other_user}","gists_url":"https://api.github.com/users/shoes/gists{/gist_id}","starred_url":"https://api.github.com/users/shoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoes/subscriptions","organizations_url":"https://api.github.com/users/shoes/orgs","repos_url":"https://api.github.com/users/shoes/repos","events_url":"https://api.github.com/users/shoes/events{/privacy}","received_events_url":"https://api.github.com/users/shoes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shoes/shoes4","description":"Shoes 4 : the next version of Shoes","fork":false,"url":"https://api.github.com/repos/shoes/shoes4","forks_url":"https://api.github.com/repos/shoes/shoes4/forks","keys_url":"https://api.github.com/repos/shoes/shoes4/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shoes/shoes4/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shoes/shoes4/teams","hooks_url":"https://api.github.com/repos/shoes/shoes4/hooks","issue_events_url":"https://api.github.com/repos/shoes/shoes4/issues/events{/number}","events_url":"https://api.github.com/repos/shoes/shoes4/events","assignees_url":"https://api.github.com/repos/shoes/shoes4/assignees{/user}","branches_url":"https://api.github.com/repos/shoes/shoes4/branches{/branch}","tags_url":"https://api.github.com/repos/shoes/shoes4/tags","blobs_url":"https://api.github.com/repos/shoes/shoes4/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shoes/shoes4/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shoes/shoes4/git/refs{/sha}","trees_url":"https://api.github.com/repos/shoes/shoes4/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shoes/shoes4/statuses/{sha}","languages_url":"https://api.github.com/repos/shoes/shoes4/languages","stargazers_url":"https://api.github.com/repos/shoes/shoes4/stargazers","contributors_url":"https://api.github.com/repos/shoes/shoes4/contributors","subscribers_url":"https://api.github.com/repos/shoes/shoes4/subscribers","subscription_url":"https://api.github.com/repos/shoes/shoes4/subscription","commits_url":"https://api.github.com/repos/shoes/shoes4/commits{/sha}","git_commits_url":"https://api.github.com/repos/shoes/shoes4/git/commits{/sha}","comments_url":"https://api.github.com/repos/shoes/shoes4/comments{/number}","issue_comment_url":"https://api.github.com/repos/shoes/shoes4/issues/comments{/number}","contents_url":"https://api.github.com/repos/shoes/shoes4/contents/{+path}","compare_url":"https://api.github.com/repos/shoes/shoes4/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shoes/shoes4/merges","archive_url":"https://api.github.com/repos/shoes/shoes4/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shoes/shoes4/downloads","issues_url":"https://api.github.com/repos/shoes/shoes4/issues{/number}","pulls_url":"https://api.github.com/repos/shoes/shoes4/pulls{/number}","milestones_url":"https://api.github.com/repos/shoes/shoes4/milestones{/number}","notifications_url":"https://api.github.com/repos/shoes/shoes4/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shoes/shoes4/labels{/name}","releases_url":"https://api.github.com/repos/shoes/shoes4/releases{/id}","deployments_url":"https://api.github.com/repos/shoes/shoes4/deployments","created_at":"2012-05-24T14:57:59Z","updated_at":"2016-12-11T05:32:52Z","pushed_at":"2016-12-11T06:27:11Z","git_url":"git://github.com/shoes/shoes4.git","ssh_url":"git@github.com:shoes/shoes4.git","clone_url":"https://github.com/shoes/shoes4.git","svn_url":"https://github.com/shoes/shoes4","homepage":"","size":56983,"stargazers_count":1041,"watchers_count":1041,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":171,"mirror_url":null,"open_issues_count":140,"forks":171,"open_issues":140,"watchers":1041,"default_branch":"master"}},"base":{"label":"shoes:master","ref":"master","sha":"74c560c9ac6135a1c932daea4383c35cc5ad0d62","user":{"login":"shoes","id":119935,"avatar_url":"https://avatars.githubusercontent.com/u/119935?v=3","gravatar_id":"","url":"https://api.github.com/users/shoes","html_url":"https://github.com/shoes","followers_url":"https://api.github.com/users/shoes/followers","following_url":"https://api.github.com/users/shoes/following{/other_user}","gists_url":"https://api.github.com/users/shoes/gists{/gist_id}","starred_url":"https://api.github.com/users/shoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoes/subscriptions","organizations_url":"https://api.github.com/users/shoes/orgs","repos_url":"https://api.github.com/users/shoes/repos","events_url":"https://api.github.com/users/shoes/events{/privacy}","received_events_url":"https://api.github.com/users/shoes/received_events","type":"Organization","site_admin":false},"repo":{"id":4434126,"name":"shoes4","full_name":"shoes/shoes4","owner":{"login":"shoes","id":119935,"avatar_url":"https://avatars.githubusercontent.com/u/119935?v=3","gravatar_id":"","url":"https://api.github.com/users/shoes","html_url":"https://github.com/shoes","followers_url":"https://api.github.com/users/shoes/followers","following_url":"https://api.github.com/users/shoes/following{/other_user}","gists_url":"https://api.github.com/users/shoes/gists{/gist_id}","starred_url":"https://api.github.com/users/shoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/shoes/subscriptions","organizations_url":"https://api.github.com/users/shoes/orgs","repos_url":"https://api.github.com/users/shoes/repos","events_url":"https://api.github.com/users/shoes/events{/privacy}","received_events_url":"https://api.github.com/users/shoes/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/shoes/shoes4","description":"Shoes 4 : the next version of Shoes","fork":false,"url":"https://api.github.com/repos/shoes/shoes4","forks_url":"https://api.github.com/repos/shoes/shoes4/forks","keys_url":"https://api.github.com/repos/shoes/shoes4/keys{/key_id}","collaborators_url":"https://api.github.com/repos/shoes/shoes4/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/shoes/shoes4/teams","hooks_url":"https://api.github.com/repos/shoes/shoes4/hooks","issue_events_url":"https://api.github.com/repos/shoes/shoes4/issues/events{/number}","events_url":"https://api.github.com/repos/shoes/shoes4/events","assignees_url":"https://api.github.com/repos/shoes/shoes4/assignees{/user}","branches_url":"https://api.github.com/repos/shoes/shoes4/branches{/branch}","tags_url":"https://api.github.com/repos/shoes/shoes4/tags","blobs_url":"https://api.github.com/repos/shoes/shoes4/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/shoes/shoes4/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/shoes/shoes4/git/refs{/sha}","trees_url":"https://api.github.com/repos/shoes/shoes4/git/trees{/sha}","statuses_url":"https://api.github.com/repos/shoes/shoes4/statuses/{sha}","languages_url":"https://api.github.com/repos/shoes/shoes4/languages","stargazers_url":"https://api.github.com/repos/shoes/shoes4/stargazers","contributors_url":"https://api.github.com/repos/shoes/shoes4/contributors","subscribers_url":"https://api.github.com/repos/shoes/shoes4/subscribers","subscription_url":"https://api.github.com/repos/shoes/shoes4/subscription","commits_url":"https://api.github.com/repos/shoes/shoes4/commits{/sha}","git_commits_url":"https://api.github.com/repos/shoes/shoes4/git/commits{/sha}","comments_url":"https://api.github.com/repos/shoes/shoes4/comments{/number}","issue_comment_url":"https://api.github.com/repos/shoes/shoes4/issues/comments{/number}","contents_url":"https://api.github.com/repos/shoes/shoes4/contents/{+path}","compare_url":"https://api.github.com/repos/shoes/shoes4/compare/{base}...{head}","merges_url":"https://api.github.com/repos/shoes/shoes4/merges","archive_url":"https://api.github.com/repos/shoes/shoes4/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/shoes/shoes4/downloads","issues_url":"https://api.github.com/repos/shoes/shoes4/issues{/number}","pulls_url":"https://api.github.com/repos/shoes/shoes4/pulls{/number}","milestones_url":"https://api.github.com/repos/shoes/shoes4/milestones{/number}","notifications_url":"https://api.github.com/repos/shoes/shoes4/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/shoes/shoes4/labels{/name}","releases_url":"https://api.github.com/repos/shoes/shoes4/releases{/id}","deployments_url":"https://api.github.com/repos/shoes/shoes4/deployments","created_at":"2012-05-24T14:57:59Z","updated_at":"2016-12-11T05:32:52Z","pushed_at":"2016-12-11T06:27:11Z","git_url":"git://github.com/shoes/shoes4.git","ssh_url":"git@github.com:shoes/shoes4.git","clone_url":"https://github.com/shoes/shoes4.git","svn_url":"https://github.com/shoes/shoes4","homepage":"","size":56983,"stargazers_count":1041,"watchers_count":1041,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":171,"mirror_url":null,"open_issues_count":140,"forks":171,"open_issues":140,"watchers":1041,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/shoes/shoes4/pulls/1324"},"html":{"href":"https://github.com/shoes/shoes4/pull/1324"},"issue":{"href":"https://api.github.com/repos/shoes/shoes4/issues/1324"},"comments":{"href":"https://api.github.com/repos/shoes/shoes4/issues/1324/comments"},"review_comments":{"href":"https://api.github.com/repos/shoes/shoes4/pulls/1324/comments"},"review_comment":{"href":"https://api.github.com/repos/shoes/shoes4/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/shoes/shoes4/pulls/1324/commits"},"statuses":{"href":"https://api.github.com/repos/shoes/shoes4/statuses/1ec80f9b9e06c6d93666d577ff7f25df3e69c637"}},"merged":false,"mergeable":true,"mergeable_state":"unstable","merged_by":null,"comments":0,"review_comments":0,"commits":2,"additions":2,"deletions":2,"changed_files":2}}
{"actor":{"display_login":"jasonrclark"}}