Cross-compiling with 4.1 ?
cvubrugier at lacie.com
Wed Oct 9 01:34:58 MDT 2013
Dear Andrew Bartlett,
On Wed, 09 Oct 2013 16:10:50 +1300, Andrew Bartlett wrote :
> On Mon, 2013-09-02 at 11:19 +0200, Christophe Vu-Brugier wrote:
> > Two months ago, I tried to cross compile samba 4.0.7 and it did not
> > work. I looked a little bit why Samba 4 did not cross-compile but did
> > not manage to make it build fully. Here is what I saw:
> > * some programs are built for the target whereas they are expected to
> > be built for the host. This is the case for some heimdal binaries.
> Exactly which binaries are wrong, and are there examples of others that
> are right that we could use as an example to fix this?
Some binaries are built with use_hostcc=True, for instance in
source4/heimdal_build. These binaries are "asn1_compile" and
"compile_et". Unfortunately, setting use_hostcc to True does nothing
because the logic to use the host compiler is missing from Samba's
> > * in buildtools/wafadmin/Tools/python.py, I think that the
> > PYTHONXCPREFIX variable should be used if the user defines it. This
> > is necessary in order to build python packages for the target.
> > There are probably other errors occuring when cross-compiling Samba 4.
> > The errors I mention are just the first that I encountered.
> > > I know there are several
> > > OEMs who absolutely depend on this to
> > > create working file server builds.
> > My employer (LaCie) is such an OEM. We are sticking with Samba 3.6
> > because of the cross-compilation issues of Samba 4.0.
> > I am a bit busy at the moment, but I will try to cross-compile the
> > latest version of Samba, look more deeply at the errors and come up with
> > patches. I think the first step is to open a bug report.
> Did you get anywhere with patches?
Not really, I have some ugly patches that allow me to pass the
configure step, but the build is still failing. However, I have
gathered more information about what prevents Samba 4.1 from being
1/ Python. Samba is looking for the system python libraries and
headers. We need to add a way to specify an alternative python
path to a cross-compiled version of python.
For that, we can get inspiration from distutils-cross
2/ C includes. The build passes -I/usr/include -I/usr/local/include to
gcc. However, passing host system headers is wrong when
cross-compiling. Moreover, I think there is no need to do that
because if you are building for the host, the compiler looks for
headers in /usr/include and /usr/local/include (see `cpp -v`).
3/ Host tools that are built for the target which I mentioned above.
More information about the samba-technical