Thanks for the support! I managed to even get a package build to work -- I 
had to install the rest of the gtk libraries which I was skipping before 
with disable-gtk, several of which required the manual copying trick. I 
also had to add a bit to the debuild line (again for my own reference):
debian/configure -r
PKG_CONFIG_PATH="/usr/lib/arm-linux-gnueabihf/pkgconfig/" debuild -
eDEB_BUILD_OPTIONS=parallel=4 -us -uc -d -j4 -d -b -aarmhf

I guess in terms of documentation, it would be convenient if the main build 
from source docs referenced the latest docker image and build repo: 
http://www.machinekit.io/docs/developing/machinekit-developing/. I found 
several references online to arceye's docker image, where proot-helper 
errored out. After trying several docker images referenced online, I gave 
up and went on this wild goose chase to do the full cross-compile in my own 
chroot environment.

And now I can finally work on the REAL project I needed -- getting UVW 
blending to work! 
https://github.com/LinuxCNC/linuxcnc/tree/feature/uvw-blending-dev The yak 
shaving continues...

On Sunday, April 21, 2019 at 9:28:08 PM UTC-7, John Morris wrote:
>
> James, 
>
> Very nice!  This is not an easy thing to do.  As Mick said, we do 
> something very similar, all inside Docker containers, to speed up armhf 
> builds on the amd64-arch CI systems the project uses to run  tests and 
> builds. 
>
> Building packages is an additional challenge, and requires installing even 
> more package dependencies alongside the build-arch tool chain to get 
> `dpkg-buildpackage` even to *agree to  try* building your packages! 
>
> The basic trick we use to get around incomplete `MultiArch` support is to 
> install conflicting packages in a multistrap root under `/sysroot`, and 
> tell the compiler and linker to grab headers and libraries from there with 
> the `gcc --sysroot=/sysroot` argument.  After that, the real fun begins!   
> Your `libboost-python-dev` hack is a good example of the many tricks we use 
> to make this work, and the result is a big, stinky mess. 
>
> Happily, Docker neatly contains all this ugliness in an image that's easy 
> to reproduce and easy to run, both in the project's CI systems and in our 
> developer environments.  You can see what exactly goes into it in the below 
> GitHub repository (PRs are very welcome if you can improve it).  Hopefully 
> these kinks in `MultiArch` will be worked out some day and this will all be 
> much simpler. 
>
> https://github.com/zultron/mk-cross-builder 
>
>     John 
>
> ________________________________________ 
> From: machi...@googlegroups.com <javascript:> <machi...@googlegroups.com 
> <javascript:>> on behalf of schoo...@gmail.com <javascript:> <
> schoo...@gmail.com <javascript:>> 
> Sent: Saturday, April 20, 2019 8:56 PM 
> To: machi...@googlegroups.com <javascript:> 
> Subject: Re: [Machinekit] Successful cross-compiling with Debian Stretch 
>
> Hi James, 
>
> I went on a similar journey a few years ago, first using a chroot file 
> system and qemu and then multiarch cross builds. 
> You learn a lot on the way and the latter is certainly faster. 
>
> We have been using John Morris's multiarch cross compiling docker 
> containers for a while now. 
> They use the same approach as you did. 
>
> If you install docker-ce and checkout 
> dovetailautomata/mk-cross-builder:armhf_9 from dockerhub, you can build 
> your packages with 
> `scripts/build_docker -t armhf_9 -c deb -j $(nproc)` 
> from the root dir of the machinekit repo. 
>
> That is how we produce all the machinekit packages now and it works well 
> locally too. 
>
> regards 
>
>
>
>
> On 19/04/19 17:30, James Gao wrote: 
> Hi everyone, 
> Just wanted to report that I got Machinekit to successfully cross-compile 
> through a Debian Stretch debootstrap. It seems that the latest multiarch 
> support in stretch is good enough that (most) of the armhf libraries 
> installed correctly. This doesn't require qemu, so it takes a fraction of 
> the time to build. I was searching for more instructions on how to do a 
> cross-compile build, and came across this thread: 
> https://groups.google.com/forum/#!topic/machinekit/HWS807SS8ks<
> https://groups.google.com/forum/#%21topic/machinekit/HWS807SS8ks> which 
> requested a PR -- let me know if that's still preferred. 
>
> This is partially for my own benefit, but here's a short summary of the 
> commands I used to get it to work: 
> sudo debootstrap --components=main,contrib,non-free stretch {DEST_FOLDER} 
> http://deb.debian.org/debian/ 
>
> I configured schroot to launch the system: 
> cat <<EOF > /etc/schroot/chroot.d/amd64-stretch 
> [amd64-stretch] 
> description=Debian Stretch (amd64) 
> directory={DEST_FOLDER} 
> root-users={USERNAME} 
> users={USERNAME} 
> type=directory 
> EOF 
> schroot -s amd64-stretch 
>
> Once inside, I configured multiarch and installed some basic packages: 
> sudo dpkg --add-architecture armhf 
> sudo apt update 
> sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf cython 
> pkg-config autoconf git libczmq-dev:armhf 
> git pull https://github.com/machinekit/machinekit.git 
> cd machinekit/src/ 
> ./autogen.sh 
> PKG_CONFIG_PATH="/usr/lib/arm-linux-gnueabihf/pkgconfig/" ./configure 
> --with-platform-beaglebone --host arm-linux-gnueabihf 
>
> Now the great dependency hunt begins -- basically just run the configure 
> line, and install the :armhf version of whatever library it complains 
> about. I can put together a more comprehensive list if requested. 
>
> The only library that requires special treatment is libboost-python-dev. 
> If you try to install the :armhf version of that library, it tries to 
> replace python with the armhf version, which will break the system. I went 
> ahead and just directly extracted only the contents of 
> /usr/lib/arm-linux-gnueabihf/ from 
> http://ftp.us.debian.org/debian/pool/main/b/boost1.62/libboost-python1.62.0_1.62.0+dfsg-4_armhf.deb
>  
> and 
> http://ftp.us.debian.org/debian/pool/main/b/boost1.62/libboost-python1.62-dev_1.62.0+dfsg-4_armhf.deb
>  
>
> I'm pretty sure I have a working armhf build -- I haven't had a chance to 
> run it on target yet because I need to figure out how to package it 
> (currently still in the RIP environment). 
> -- 
> website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
> https://github.com/machinekit 
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Machinekit" group. 
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to machi...@googlegroups.com <javascript:><mailto:
> machinekit+unsubscr...@googlegroups.com <javascript:>>. 
> Visit this group at https://groups.google.com/group/machinekit. 
> For more options, visit https://groups.google.com/d/optout. 
>
>
> -- 
> website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
> https://github.com/machinekit 
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Machinekit" group. 
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to machi...@googlegroups.com <javascript:><mailto:
> machinekit+unsubscr...@googlegroups.com <javascript:>>. 
> Visit this group at https://groups.google.com/group/machinekit. 
> For more options, visit https://groups.google.com/d/optout. 
>

-- 
website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
https://github.com/machinekit
--- 
You received this message because you are subscribed to the Google Groups 
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to machinekit+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/machinekit.
For more options, visit https://groups.google.com/d/optout.

Reply via email to