{"action":"created","issue":{"url":"https://api.github.com/repos/machinekit/machinekit/issues/1072","repository_url":"https://api.github.com/repos/machinekit/machinekit","labels_url":"https://api.github.com/repos/machinekit/machinekit/issues/1072/labels{/name}","comments_url":"https://api.github.com/repos/machinekit/machinekit/issues/1072/comments","events_url":"https://api.github.com/repos/machinekit/machinekit/issues/1072/events","html_url":"https://github.com/machinekit/machinekit/issues/1072","id":181540768,"number":1072,"title":"Reduce Machinekit `armhf` architecture build times","user":{"login":"zultron","id":1940736,"avatar_url":"https://avatars.githubusercontent.com/u/1940736?v=3","gravatar_id":"","url":"https://api.github.com/users/zultron","html_url":"https://github.com/zultron","followers_url":"https://api.github.com/users/zultron/followers","following_url":"https://api.github.com/users/zultron/following{/other_user}","gists_url":"https://api.github.com/users/zultron/gists{/gist_id}","starred_url":"https://api.github.com/users/zultron/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zultron/subscriptions","organizations_url":"https://api.github.com/users/zultron/orgs","repos_url":"https://api.github.com/users/zultron/repos","events_url":"https://api.github.com/users/zultron/events{/privacy}","received_events_url":"https://api.github.com/users/zultron/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":4,"created_at":"2016-10-06T22:23:39Z","updated_at":"2016-10-08T09:00:33Z","closed_at":null,"body":"Current approaches to building ARM executables on Intel architecture rely heavily on emulation and take many times longer than a native build.  This is especially visible in the Machinekit automated builds on x86 architecture Travis CI build hosts.  In order to finish within the Travis 50 minute build limit, the armhf package builds were split into three (one for each RT thread flavor).  By comparison, native x86 builds take just 12 minutes.\r\n\r\nIn [another issue][1] I outlined some approaches to speeding up ARM builds.  Among those, the best option would be cross-building, if it could be made to work.  The advantages:\r\n\r\n- Shortest build times:  same as native builds\r\n- Future-proof:  Multi-Arch awareness is a goal of the Debian distribution, and cross-building will have better and better support over time\r\n- No special OS requirements:  e.g. `ptrace()`, needed by `proot` in the current emulation method, is now disallowed in the Docker Hub image build environment, making it difficult to build the ARM-arch chroot image\r\n- Machinekit is ready for cross-building:  the build system has already had a great deal of work to be cross-compile-ready\r\n\r\nThe disadvantage is Debian Multi-Arch support is not yet complete.  In Jessie, most core packages have been converted, but not all.  Although this situation will improve over time, currently, Machinekit depends on a number of packages without Multi-Arch support, and it is difficult to install all the needed packages in the correct architectures at once.  Working around this will be the main challenge in setting up the cross-build environment.\r\n\r\nMy initial experiments show that with some force, Machinekit can be cross-compiled against Jessie packages.  Travis package builds take 10 minutes on Travis CI (4 minutes with `ccache` enabled).  In RIP build tests, the build result could be transferred to an ARM architecture host and all regression tests pass.\r\n\r\nThis issue is to track this particular effort.  I will follow up soon with details for reproducing these initial results.\r\n\r\n[1]: https://github.com/machinekit/machinekit/issues/1060#issuecomment-250810451\r\n"},"comment":{"url":"https://api.github.com/repos/machinekit/machinekit/issues/comments/252412934","html_url":"https://github.com/machinekit/machinekit/issues/1072#issuecomment-252412934","issue_url":"https://api.github.com/repos/machinekit/machinekit/issues/1072","id":252412934,"user":{"login":"ArcEye","id":770392,"avatar_url":"https://avatars.githubusercontent.com/u/770392?v=3","gravatar_id":"","url":"https://api.github.com/users/ArcEye","html_url":"https://github.com/ArcEye","followers_url":"https://api.github.com/users/ArcEye/followers","following_url":"https://api.github.com/users/ArcEye/following{/other_user}","gists_url":"https://api.github.com/users/ArcEye/gists{/gist_id}","starred_url":"https://api.github.com/users/ArcEye/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ArcEye/subscriptions","organizations_url":"https://api.github.com/users/ArcEye/orgs","repos_url":"https://api.github.com/users/ArcEye/repos","events_url":"https://api.github.com/users/ArcEye/events{/privacy}","received_events_url":"https://api.github.com/users/ArcEye/received_events","type":"User","site_admin":false},"created_at":"2016-10-08T09:00:33Z","updated_at":"2016-10-08T09:00:33Z","body":"> ... here are the 'simple' instructions; the complexity is hidden in the Dockerfile. The instructions depend on changes in #1074.\r\n\r\nThanks, I will give it a spin a bit later"}}
{"actor":{"display_login":"ArcEye"}}