All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [buildroot] libdrm tries to compile before cairo
@ 2011-03-18 10:40 Barry Kauler
  2011-03-18 11:38 ` bruce bushby
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Barry Kauler @ 2011-03-18 10:40 UTC (permalink / raw)
  To: buildroot

Hi, I am a first-time user of Buildroot. It has been chugging along
nicely, but libdrm has failed to compile.

It reports that 'cairo.h' is missing. Which it is, cairo has not yet
been compiled in the target.

So, using my own reasoning, I added "cairo" onto LIBDRM_DEPENDENCIES
variable in file 'libdrm.mk'. I also deleted
output/build/libdrm-2.4.19.

However, running 'make' again, it tries to compile libdrm again, and fails.

How do I make it compile cairo (and its deps) before libdrm?

Regards,
Barry Kauler

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
  2011-03-18 10:40 [Buildroot] [buildroot] libdrm tries to compile before cairo Barry Kauler
@ 2011-03-18 11:38 ` bruce bushby
  2011-03-18 12:37   ` Barry Kauler
  2011-03-19  7:22 ` Thomas Petazzoni
  2011-07-25 12:19 ` [Buildroot] " Peter Korsgaard
  2 siblings, 1 reply; 9+ messages in thread
From: bruce bushby @ 2011-03-18 11:38 UTC (permalink / raw)
  To: buildroot

Hi Barry

I'm also new...so can't really offer anything beyond my recent experience.
Could you past your "LIBDRM_DEPENDENCIES" line?

I had some troubles adding "zeromq" until I added:
ZEROMQ_DEPENDENCIES = e2fsprogs host-pkg-config host-e2fsprogs

I suspect I don't need the "host-e2fsprogs" ..... it was only when I added
"e2fsprogs" that everything worked.

If you "de-select" libdrm and allow the build to finish and then run "make
libdrm" ... does it then compile?

My problem with zeromq complained that it couldn't find "uuid-dev" ....even
though I had selected "uuid"....turned out "e2fsprogs" provides
"uuid-dev"...just
wondering if something similar applies to "cairo.h"













On Fri, Mar 18, 2011 at 10:40 AM, Barry Kauler <bkauler@gmail.com> wrote:

> Hi, I am a first-time user of Buildroot. It has been chugging along
> nicely, but libdrm has failed to compile.
>
> It reports that 'cairo.h' is missing. Which it is, cairo has not yet
> been compiled in the target.
>
> So, using my own reasoning, I added "cairo" onto LIBDRM_DEPENDENCIES
> variable in file 'libdrm.mk'. I also deleted
> output/build/libdrm-2.4.19.
>
> However, running 'make' again, it tries to compile libdrm again, and fails.
>
> How do I make it compile cairo (and its deps) before libdrm?
>
> Regards,
> Barry Kauler
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110318/931a133b/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
  2011-03-18 11:38 ` bruce bushby
@ 2011-03-18 12:37   ` Barry Kauler
  0 siblings, 0 replies; 9+ messages in thread
From: Barry Kauler @ 2011-03-18 12:37 UTC (permalink / raw)
  To: buildroot

On 3/18/11, bruce bushby <bruce.bushby@gmail.com> wrote:
> Hi Barry
>
> I'm also new...so can't really offer anything beyond my recent experience.
> Could you past your "LIBDRM_DEPENDENCIES" line?
>
> I had some troubles adding "zeromq" until I added:
> ZEROMQ_DEPENDENCIES = e2fsprogs host-pkg-config host-e2fsprogs
>
> I suspect I don't need the "host-e2fsprogs" ..... it was only when I added
> "e2fsprogs" that everything worked.
>
> If you "de-select" libdrm and allow the build to finish and then run "make
> libdrm" ... does it then compile?
>
> My problem with zeromq complained that it couldn't find "uuid-dev" ....even
> though I had selected "uuid"....turned out "e2fsprogs" provides
> "uuid-dev"...just
> wondering if something similar applies to "cairo.h"
>

Bruce,
Thanks for the response. I have not really understood how Buildroot
works -- I have used T2-project many times, and that cross-compiles in
a true virtual environment -- but not Buildroot.

In Buildroot, libdrm does check if cairo is there and thinks it is,
but it isn't -- Buildroot actually checks my host environment and see
cairo is installed. That is a very confusing situation.

I can't de-select libdrm as it is a dependency of something else. I
will have to roll the package choices right back until it can be
deselected.

Regards,
Barry Kauler

>
>
>
>
>
>
>
>
>
>
>
> On Fri, Mar 18, 2011 at 10:40 AM, Barry Kauler <bkauler@gmail.com> wrote:
>
>> Hi, I am a first-time user of Buildroot. It has been chugging along
>> nicely, but libdrm has failed to compile.
>>
>> It reports that 'cairo.h' is missing. Which it is, cairo has not yet
>> been compiled in the target.
>>
>> So, using my own reasoning, I added "cairo" onto LIBDRM_DEPENDENCIES
>> variable in file 'libdrm.mk'. I also deleted
>> output/build/libdrm-2.4.19.
>>
>> However, running 'make' again, it tries to compile libdrm again, and
>> fails.
>>
>> How do I make it compile cairo (and its deps) before libdrm?
>>
>> Regards,
>> Barry Kauler
>> _______________________________________________
>> buildroot mailing list
>> buildroot at busybox.net
>> http://lists.busybox.net/mailman/listinfo/buildroot
>>
>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
  2011-03-18 10:40 [Buildroot] [buildroot] libdrm tries to compile before cairo Barry Kauler
  2011-03-18 11:38 ` bruce bushby
@ 2011-03-19  7:22 ` Thomas Petazzoni
  2011-03-19  9:30   ` Barry Kauler
  2011-07-25 12:19 ` [Buildroot] " Peter Korsgaard
  2 siblings, 1 reply; 9+ messages in thread
From: Thomas Petazzoni @ 2011-03-19  7:22 UTC (permalink / raw)
  To: buildroot

Hello Barry,

On Fri, 18 Mar 2011 18:40:17 +0800
Barry Kauler <bkauler@gmail.com> wrote:

> Hi, I am a first-time user of Buildroot. It has been chugging along
> nicely, but libdrm has failed to compile.
> 
> It reports that 'cairo.h' is missing. Which it is, cairo has not yet
> been compiled in the target.
> 
> So, using my own reasoning, I added "cairo" onto LIBDRM_DEPENDENCIES
> variable in file 'libdrm.mk'. I also deleted
> output/build/libdrm-2.4.19.
> 
> However, running 'make' again, it tries to compile libdrm again, and
> fails.
> 
> How do I make it compile cairo (and its deps) before libdrm?

Adding "cairo" to LIBDRM_DEPENDENCIES is enough to get it compiled
before libdrm. Something else is wrong in your setup, because that's
really enough.

However, Cairo is not required by libdrm. It seems that the problem is
that since you have Cairo installed on your host, libdrm ./configure
script thinks that Cairo is available. Such "information leakage" from
the host environment to the target environment is common and is one of
the major challenge an embedded Linux build system such as Buildroot
faces.

However, as libdrm uses pkg-config to detect the presence or absence of
cairo, it sounds strange to me that it detects the host version. Could
you please pastebin somewhere the output of the
output/build/libdrm-2.4.9/config.log case in the case of a failing
compilation ?

(I couldn't reproduce here in my test environment, since I don't have
Cairo development files installed on the host)

Thanks,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
  2011-03-19  7:22 ` Thomas Petazzoni
@ 2011-03-19  9:30   ` Barry Kauler
  2011-03-19  9:58     ` Thomas Petazzoni
  0 siblings, 1 reply; 9+ messages in thread
From: Barry Kauler @ 2011-03-19  9:30 UTC (permalink / raw)
  To: buildroot

On 3/19/11, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:
> Hello Barry,
>
> On Fri, 18 Mar 2011 18:40:17 +0800
> Barry Kauler <bkauler@gmail.com> wrote:
>
>> Hi, I am a first-time user of Buildroot. It has been chugging along
>> nicely, but libdrm has failed to compile.
>>
>> It reports that 'cairo.h' is missing. Which it is, cairo has not yet
>> been compiled in the target.
>>
>> So, using my own reasoning, I added "cairo" onto LIBDRM_DEPENDENCIES
>> variable in file 'libdrm.mk'. I also deleted
>> output/build/libdrm-2.4.19.
>>
>> However, running 'make' again, it tries to compile libdrm again, and
>> fails.
>>
>> How do I make it compile cairo (and its deps) before libdrm?
>
> Adding "cairo" to LIBDRM_DEPENDENCIES is enough to get it compiled
> before libdrm. Something else is wrong in your setup, because that's
> really enough.
>
> However, Cairo is not required by libdrm. It seems that the problem is
> that since you have Cairo installed on your host, libdrm ./configure
> script thinks that Cairo is available. Such "information leakage" from
> the host environment to the target environment is common and is one of
> the major challenge an embedded Linux build system such as Buildroot
> faces.
>
> However, as libdrm uses pkg-config to detect the presence or absence of
> cairo, it sounds strange to me that it detects the host version. Could
> you please pastebin somewhere the output of the
> output/build/libdrm-2.4.9/config.log case in the case of a failing
> compilation ?
>
> (I couldn't reproduce here in my test environment, since I don't have
> Cairo development files installed on the host)
>
> Thanks,

Thomas,
Thanks for your reply. I don't have that build anymore. What I did to
work around the problem was create a .config file with cairo and
without libdrm. After that had completed, I then substituted another
.config with extra packages, including libdrm, and it worked.

Yes, I encountered this "information leakage" from the host several
times. I am using Puppy Linux, Wary edition 5.1.2, and some
significant differences from Ubuntu/Debian cause trouble for
Buildroot. For example, I got as far as compiling Xorg, but as Puppy
has Xorg in /usr/X11R7, not /usr. this caused trouble as Buildroot.

Next time that I run Buildroot, I might do it from a different host,
such as Ubuntu.

I could give a long list of problems that I encountered along the way
-- all solvable. For example:

udev 114
This is very old, and I don't think that this works properly with
recent kernels. In Puppy Linux we now use 151, which is intended for
the 2.6.27 kernel or later.

libdrm
complained that libudev.so (and libudev.h) is missing, and it was, the
udev build did not create it. As I am unfamiliar with Buildroot, I
chrooted into a rootfs that I had already created with Buildroot and
compiled udev 151 (and manually copied the files to staging and
target), and that satisfied libdrm. My udev config:

./configure --prefix=/usr --sysconfdir=/etc --sbindir=/sbin
--libdir=/usr/lib --with-rootlibdir=/lib --libexecdir=/lib/udev
--build=i486-pc-linux-gnu --disable-extras --disable-introspection

xorg-server 1.7.5
This is an example of information leakage from host. It complained
that xtrans is version 1.0.4, but 1.2.2 is required. However,
Buildroot has xtrans 1.2.5, it is my host system that has 1.0.4.
I "solved" this by replacing /usr/X11R7/lib/pkgconfig/xtrans.pc in my
host with the xtrans.pc from Buildroot.

cairo
it couldn't find the pixman header files. It looks in /usr/include,
but pixman has the header files in /usr/include/pixman-1/. Workaround
is to copy the header files from /usr/lib/pixman-1/ to /usr/lib/ (in
output/target).

xclipboard
Information leakage from host again. Complains missing -lXaw8, which
is in my host, not in Buildroot. I put a symlink in output/target,
libXaw8.so to libXaw7.so, and that workaround fixed it.

Native compile
Yes, I was able to build a rootfs that I can chroot into and compile
packages, however, Buildroot left out /usr/lib/crt1.0, crti.o, crtn.o,
and libc.so. I manually copied these across from output/staging, and
compiling then worked.

Ha ha, that's enough for now :)

Could I ask one question. I haven't come across the answer to this
yet. My build is "i586-unknown-linux-uclibc", for example
/usr/libexec/gcc/i586-unknown-linux-uclibc.
How can I change that to "i586-pc-linux-uclibc"?

Regards,
Barry Kauler

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
  2011-03-19  9:30   ` Barry Kauler
@ 2011-03-19  9:58     ` Thomas Petazzoni
       [not found]       ` <AANLkTi=bFZ5MepDorK_6i1soraZGqw7B2T25HRZcH6D-@mail.gmail.com>
  0 siblings, 1 reply; 9+ messages in thread
From: Thomas Petazzoni @ 2011-03-19  9:58 UTC (permalink / raw)
  To: buildroot

Hello,

On Sat, 19 Mar 2011 17:30:35 +0800
Barry Kauler <bkauler@gmail.com> wrote:

> Thanks for your reply. I don't have that build anymore.

Could you reproduce it ? Without this, we will not be able to fix the
problem.

> What I did to
> work around the problem was create a .config file with cairo and
> without libdrm. After that had completed, I then substituted another
> .config with extra packages, including libdrm, and it worked.

This is an ugly way of workarounding the problem. The whole purpose of
Buildroot is to provide a *automated* and *reproducible* way of
building an embedded Linux system. So, if you need to do several
builds and need to adjust the configuration between builds, something
is really wrong and needs to be fixed.

To be honest, I'm quite impressed by the uglyness of the workarounds
people are ready to accept.

> Yes, I encountered this "information leakage" from the host several
> times. I am using Puppy Linux, Wary edition 5.1.2, and some
> significant differences from Ubuntu/Debian cause trouble for
> Buildroot. For example, I got as far as compiling Xorg, but as Puppy
> has Xorg in /usr/X11R7, not /usr. this caused trouble as Buildroot.

Which troubles ?

> udev 114
> This is very old, and I don't think that this works properly with
> recent kernels. In Puppy Linux we now use 151, which is intended for
> the 2.6.27 kernel or later.

Yes, our udev is very old. We have patches to bump udev, but they
haven't been merged yet. I hope we can get them merged for the next
Buildroot release, but recent udev versions were causing problems with
uClibc.

> libdrm
> complained that libudev.so (and libudev.h) is missing, and it was, the
> udev build did not create it. As I am unfamiliar with Buildroot, I
> chrooted into a rootfs that I had already created with Buildroot and
> compiled udev 151 (and manually copied the files to staging and
> target), and that satisfied libdrm. My udev config:
> 
> ./configure --prefix=/usr --sysconfdir=/etc --sbindir=/sbin
> --libdir=/usr/lib --with-rootlibdir=/lib --libexecdir=/lib/udev
> --build=i486-pc-linux-gnu --disable-extras --disable-introspection

libdrm can use libudev, but it is not mandatory, just like cairo. I
suspect that libdrm also discovered that libudev was installed on the
host, which led it thinking that it was available on the target as well.

> xorg-server 1.7.5
> This is an example of information leakage from host. It complained
> that xtrans is version 1.0.4, but 1.2.2 is required. However,
> Buildroot has xtrans 1.2.5, it is my host system that has 1.0.4.
> I "solved" this by replacing /usr/X11R7/lib/pkgconfig/xtrans.pc in my
> host with the xtrans.pc from Buildroot.

Ugly. Really.

> cairo
> it couldn't find the pixman header files. It looks in /usr/include,
> but pixman has the header files in /usr/include/pixman-1/. Workaround
> is to copy the header files from /usr/lib/pixman-1/ to /usr/lib/ (in
> output/target).

Similar. With Buildroot, if you need to do anything manually, it
defeats the whole purpose of having an *automated* and *reproducible*
build. So *please* report bugs when you have problems.

> xclipboard
> Information leakage from host again. Complains missing -lXaw8, which
> is in my host, not in Buildroot. I put a symlink in output/target,
> libXaw8.so to libXaw7.so, and that workaround fixed it.

Same thing.

> Native compile
> Yes, I was able to build a rootfs that I can chroot into and compile
> packages, however, Buildroot left out /usr/lib/crt1.0, crti.o, crtn.o,
> and libc.so. I manually copied these across from output/staging, and
> compiling then worked.

Yes, I think native compilation is broken in 2011.02, and I haven't had
the time to dig into it. Buildroot is designed for *cross-compilation*,
so the availability of a native toolchain in the target is not our top
priority. But we would happily accept patches to improve the situation.

> Could I ask one question. I haven't come across the answer to this
> yet. My build is "i586-unknown-linux-uclibc", for example
> /usr/libexec/gcc/i586-unknown-linux-uclibc.
> How can I change that to "i586-pc-linux-uclibc"?

You can change the value of REAL_GNU_TARGET_NAME in
package/Makefile.in, and it should probably work.

But again, please report bugs when you have issues, and don't
workaround them in ugly ways. If you face issues, others are probably
facing similar issues.

Regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
       [not found]       ` <AANLkTi=bFZ5MepDorK_6i1soraZGqw7B2T25HRZcH6D-@mail.gmail.com>
@ 2011-03-19 11:29         ` Barry Kauler
  2011-03-19 12:04           ` bruce bushby
  0 siblings, 1 reply; 9+ messages in thread
From: Barry Kauler @ 2011-03-19 11:29 UTC (permalink / raw)
  To: buildroot

On 3/19/11, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:

> Ugly. Really.

Er, yes, of course I know that. I did those quick hacks as I wanted to
get as far as compiling X.org.

In no way do I imply that those ugly hacks are what I will do
permanently. If I keep using Buildroot, then I will submit bug reports
and solve the problems. As I learn more about Buildroot, I will also
be able to solve some of the problems properly myself.

As already stated, I will in future be using a more Buildroot-friendly
Linux host.

Regards,
Barry Kauler

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [buildroot] libdrm tries to compile before cairo
  2011-03-19 11:29         ` Barry Kauler
@ 2011-03-19 12:04           ` bruce bushby
  0 siblings, 0 replies; 9+ messages in thread
From: bruce bushby @ 2011-03-19 12:04 UTC (permalink / raw)
  To: buildroot

"...Yes, our udev is very old. We have patches to bump udev, but
they haven't been merged yet"

ahh...cheers Thomas!! That probably explains an error I'm getting when I
boot 2.6.38 kernel:

INIT: version 2.88 booting
Populating /dev using udev: udevd (898): /proc/898/oom_adj is deprecated,
please use /proc/898/oom_score_adj instead.


Any ideas when a newer version would be available via the "daily snapshot"?
I would like to help more but not a lot I can do beyond testing :(


Barry: Try moving your build platform to a "virtual guest", it makes life a
lot easier running "main stream flavors" without having to contaminate your
"base machine"


Bruce






On Sat, Mar 19, 2011 at 11:29 AM, Barry Kauler <bkauler@gmail.com> wrote:

> On 3/19/11, Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote:
>
> > Ugly. Really.
>
> Er, yes, of course I know that. I did those quick hacks as I wanted to
> get as far as compiling X.org.
>
> In no way do I imply that those ugly hacks are what I will do
> permanently. If I keep using Buildroot, then I will submit bug reports
> and solve the problems. As I learn more about Buildroot, I will also
> be able to solve some of the problems properly myself.
>
> As already stated, I will in future be using a more Buildroot-friendly
> Linux host.
>
> Regards,
> Barry Kauler
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20110319/fdb7d9c1/attachment.html>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] libdrm tries to compile before cairo
  2011-03-18 10:40 [Buildroot] [buildroot] libdrm tries to compile before cairo Barry Kauler
  2011-03-18 11:38 ` bruce bushby
  2011-03-19  7:22 ` Thomas Petazzoni
@ 2011-07-25 12:19 ` Peter Korsgaard
  2 siblings, 0 replies; 9+ messages in thread
From: Peter Korsgaard @ 2011-07-25 12:19 UTC (permalink / raw)
  To: buildroot

>>>>> "Barry" == Barry Kauler <bkauler@gmail.com> writes:

Hi,

Sorry, I know this is an old mail, but here goes anyway.

 Barry> Hi, I am a first-time user of Buildroot. It has been chugging along
 Barry> nicely, but libdrm has failed to compile.

 Barry> It reports that 'cairo.h' is missing. Which it is, cairo has not yet
 Barry> been compiled in the target.

I think the problem is caused by a missing host-pkg-config dependency,
so libdrm ends up using your host pkg-config (and presumably
cairo.pc). I've fixed it in git, care to retest?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2011-07-25 12:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-18 10:40 [Buildroot] [buildroot] libdrm tries to compile before cairo Barry Kauler
2011-03-18 11:38 ` bruce bushby
2011-03-18 12:37   ` Barry Kauler
2011-03-19  7:22 ` Thomas Petazzoni
2011-03-19  9:30   ` Barry Kauler
2011-03-19  9:58     ` Thomas Petazzoni
     [not found]       ` <AANLkTi=bFZ5MepDorK_6i1soraZGqw7B2T25HRZcH6D-@mail.gmail.com>
2011-03-19 11:29         ` Barry Kauler
2011-03-19 12:04           ` bruce bushby
2011-07-25 12:19 ` [Buildroot] " Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.