All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrei Gherzan <andrei@gherzan.ro>
To: Joachim Schiele <js@lastlog.de>
Cc: yocto@yoctoproject.org
Subject: Re: [meta-raspberrypi][PATCH V4 1/5] userland: Fix install prefix and generate pkgconfigs
Date: Wed, 21 Oct 2015 14:05:00 +0200	[thread overview]
Message-ID: <20151021120500.GA5610@resin> (raw)
In-Reply-To: <mvoesa$s1n$1@ger.gmane.org>

Hello,

On Thu, Oct 15, 2015 at 04:57:13PM +0200, Joachim Schiele wrote:
> On 13.10.2015 19:13, Andrei Gherzan wrote:
> > On Tue, Oct 13, 2015 at 02:14:28AM +0200, Joachim Schiele wrote:
> >> On 03.10.2015 23:53, Andrei Gherzan wrote:
> >>> On Sat, Oct 03, 2015 at 02:47:24PM -0700, Khem Raj wrote:
> >>>> On Sat, Oct 3, 2015 at 2:27 PM, Andrei Gherzan <andrei@gherzan.ro> wrote:
> >>>>> On Sat, Oct 03, 2015 at 10:46:07PM +0200, Andrei Gherzan wrote:
> >>>>>> On Sat, Oct 03, 2015 at 10:40:50PM +0200, Andrei Gherzan wrote:
> >>>>>>> On Sat, Oct 03, 2015 at 10:33:12PM +0200, Andrei Gherzan wrote:
> >>>>>>>> On Sat, Oct 03, 2015 at 01:31:24PM -0700, Khem Raj wrote:
> >>>>>>>>> On Sat, Oct 3, 2015 at 1:11 PM, Andrei Gherzan <andrei@gherzan.ro> wrote:
> >>>>>>>>>> On Sat, Oct 03, 2015 at 01:06:55PM -0700, Khem Raj wrote:
> >>>>>>>>>>> On Sat, Oct 3, 2015 at 12:18 PM, Andrei Gherzan <andrei@gherzan.ro> wrote:
> >>>>>>>>>>>> I tested with and without - same result.
> >>>>>>>>>>>> DISTRO_FEATURES="alsa argp bluetooth ext2 irda largefile pcmcia usbgadget
> >>>>>>>>>>>> usbhost wifi xattr nfs zeroconf pci 3g nfc x11 ipv4 ipv6 libc-backtrace
> >>>>>>>>>>>> libc-big-macros libc-bsd libc-cxx-tests libc-catgets libc-charsets libc-crypt
> >>>>>>>>>>>> libc-crypt-ufc libc-db-aliases libc-envz libc-fcvt libc-fmtmsg libc-fstab
> >>>>>>>>>>>> libc-ftraverse                  libc-getlogin libc-idn libc-inet-anl libc-libm
> >>>>>>>>>>>> libc-locales libc-locale-code                   libc-memusage libc-nis
> >>>>>>>>>>>> libc-nsswitch libc-rcmd libc-rtld-debug libc-spawn libc-streams libc-sunrpc
> >>>>>>>>>>>> libc-utmp libc-utmpx libc-wordexp libc-posix-clang-wchar libc-posix-regexp
> >>>>>>>>>>>> libc-posix-regexp-glibc                     libc-posix-wchar-io largefile
> >>>>>>>>>>>> opengl ptest multiarch wayland pulseaudio sysvinit bluez5"
> >>>>>>>>>>>>
> >>>>>>>>>>>> No modification to the default poky distro.
> >>>>>>>>>>>
> >>>>>>>>>>> hmm I am using angstrom and it works there and for verification I now
> >>>>>>>>>>> tried with OE-Core ( alone ) it works there too, can you check some
> >>>>>>>>>>> other parameters that are there in your sandbox ? here is my build
> >>>>>>>>>>>
> >>>>>>>>>>>  MACHINE=raspberrypi2 bitbake userland
> >>>>>>>>>>> Parsing recipes: 100%
> >>>>>>>>>>> |######################################################################################################################################################################################################|
> >>>>>>>>>>> ETA:  00:00:00
> >>>>>>>>>>> Parsing of 918 .bb files complete (0 cached, 918 parsed). 1350
> >>>>>>>>>>> targets, 59 skipped, 0 masked, 0 errors.
> >>>>>>>>>>> NOTE: Resolving any missing task queue dependencies
> >>>>>>>>>>>
> >>>>>>>>>>> Build Configuration:
> >>>>>>>>>>> BB_VERSION        = "1.28.0"
> >>>>>>>>>>> BUILD_SYS         = "x86_64-linux"
> >>>>>>>>>>> NATIVELSBSTRING   = "Ubuntu-14.04"
> >>>>>>>>>>> TARGET_SYS        = "arm-oe-linux-gnueabi"
> >>>>>>>>>>> MACHINE           = "raspberrypi2"
> >>>>>>>>>>> DISTRO            = "nodistro"
> >>>>>>>>>>> DISTRO_VERSION    = "nodistro.0"
> >>>>>>>>>>> TUNE_FEATURES     = "arm armv7a vfp thumb neon callconvention-hard
> >>>>>>>>>>> vfpv4 cortexa7"
> >>>>>>>>>>> TARGET_FPU        = "vfp-vfpv4-neon"
> >>>>>>>>>>> meta-raspberrypi  = "kraj/master:a903a9cd18ae556121265da93ed74f857944a0da"
> >>>>>>>>>>> meta              = "kraj/master:602e512b92bcc78403144fedeb4211bbf56ff1c8"
> >>>>>>>>>>>
> >>>>>>>>>>> NOTE: Preparing RunQueue
> >>>>>>>>>>> NOTE: Executing SetScene Tasks
> >>>>>>>>>>> NOTE: Executing RunQueue Tasks
> >>>>>>>>>>> NOTE: Tasks Summary: Attempted 454 tasks of which 315 didn't need to
> >>>>>>>>>>> be rerun and all succeeded.
> >>>>>>>>>>
> >>>>>>>>>> Here is my build configuration.
> >>>>>>>>>>
> >>>>>>>>>> Build Configuration:
> >>>>>>>>>> BB_VERSION        = "1.28.0"
> >>>>>>>>>> BUILD_SYS         = "x86_64-linux"
> >>>>>>>>>> NATIVELSBSTRING   = "Arch-rolling"
> >>>>>>>>>> TARGET_SYS        = "arm-poky-linux-gnueabi"
> >>>>>>>>>> MACHINE           = "raspberrypi2"
> >>>>>>>>>> DISTRO            = "poky"
> >>>>>>>>>> DISTRO_VERSION    = "2.0"
> >>>>>>>>>> TUNE_FEATURES     = "arm armv7a vfp thumb neon callconvention-hard vfpv4
> >>>>>>>>>> cortexa7"
> >>>>>>>>>> TARGET_FPU        = "vfp-vfpv4-neon"
> >>>>>>>>>> meta
> >>>>>>>>>> meta-yocto
> >>>>>>>>>> meta-yocto-bsp    = "master:eac61f37e36099f74485dab398b57f3812826d17"
> >>>>>>>>>> meta-raspberrypi  = "master:48da0cdc5fb147a20b41a77b2dfeef4efd483b32"
> >>>>>>>>>> meta-oe
> >>>>>>>>>> meta-multimedia   = "master:f4533380c8a5c1d229f692222ee0c2ef9d187ef8"
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> But anyway can you please check in your userland install dir for the header I'm
> >>>>>>>>>> missing? Or in sysroot.
> >>>>>>>>>
> >>>>>>>>> its part of userland itself so no other package should be needed and
> >>>>>>>>> not required in sysroot
> >>>>>>>>>
> >>>>>>>>> ./work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/package/usr/src/debug/userland/git-r5/build/interface/vmcs_host/wayland-dispmanx-server-protocol.h
> >>>>>>>>> ./work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/packages-split/userland-dbg/usr/src/debug/userland/git-r5/build/interface/vmcs_host/wayland-dispmanx-server-protocol.h
> >>>>>>>>> ./work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/build/interface/khronos/wayland-dispmanx-server-protocol.h
> >>>>>>>>> ./work/raspberrypi2-oe-linux-gnueabi/userland/git-r5/build/interface/vmcs_host/wayland-dispmanx-server-protocol.h
> >>>>>>>>
> >>>>>>>> This is odd... what revision of userland are you using? The one on current
> >>>>>>>> meta-rpi master?
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Andrei Gherzan
> >>>>>>>
> >>>>>>> This is not even in the current HEAD of master in userland official repository:
> >>>>>>> https://github.com/raspberrypi/userland/tree/master/interface/vmcs_host
> >>>>>>>
> >>>>>>> Are you sure you don't inject the file somehow? I really don't know what's
> >>>>>>> going on.
> >>>>>>>
> >>>>>>> --
> >>>>>>> Andrei Gherzan
> >>>>>>
> >>>>>> I found the mistery. It gets generated in another path:
> >>>>>> ./build/interface/khronos/wayland-dispmanx-server-protocol.h
> >>>>>>
> >>>>>> Figuring out why.
> >>>>>>
> >>>>>> --
> >>>>>> Andrei Gherzan
> >>>>>
> >>>>> I managed to get to the bottom of this. It's a racing issue. Basically, with
> >>>>> MAKE_PARALLEL high enough, the
> >>>>>
> >>>>> add_library(EGL ${SHARED} ${EGL_SOURCE})
> >>>>>
> >>>>> in git/interface/khronos/CMakeLists.txt gets to run before the header is
> >>>>> generated. No dependency configured for that. And in the sources of EGL there
> >>>>> is egl_wayland.c which includes the generated header by the call:
> >>>>>
> >>>>> wayland_add_protocol_server(
> >>>>>        EGL_SOURCE
> >>>>>        ../../interface/wayland/dispmanx.xml
> >>>>>        dispmanx
> >>>>> )
> >>>>>
> >>>>> Any idea how to define this dependency? What is the value of your PARALLEL_MAKE
> >>>>
> >>>> I use -j16, can you add the .h file with path to EGL_SOURCE
> >>>
> >>> Adding the path to EGL_SOURCE won't work because cmake will complain that the
> >>> header is not in place. We need a dependency definition.
> >>>
> >>> --
> >>> Andrei Gherzan
> >>>
> >>
> >> in this file:
> >> ./tmp/work/raspberrypi-poky-linux-gnueabi/userland/git-r5/egl.pc"
> >>
> >> i replaced
> >>
> >> Cflags: -I${includedir}/vc -I${includedir}/interface
> >> -I${includedir}/interface/vcos -I${includedir}/interface/vcos/pthreads
> >>
> >> with that
> >>
> >> Cflags: -I${includedir}/vc -I${includedir}/interface
> >> -I${includedir}/interface/vcos -I${includedir}/interface/vcos/pthreads
> >> -I../build/interface/khronos/
> >>
> >> (basically adding -I../build/interface/khronos/)
> >>
> >> IIRC that worked for me. you can give that a try at least ;-)
> >>
> >>
> >> --
> >> _______________________________________________
> >> yocto mailing list
> >> yocto@yoctoproject.org
> >> https://lists.yoctoproject.org/listinfo/yocto
> >
> > Hi Joachim,
> >
> > I'm not sure how would this help as long as the pc file is generated by
> > userland and the error I'm facing is while compiling userland.
> >
> > --
> > Andrei Gherzan
> >
>
> hi andrei,
>
> you are right, my last answer was actually fror a different problem.
> after looking into this issue, which is basically finding a way to make
> -j n (with n > 1) work:
>
> --- in short ---
> so add a custom dependency:
>
> ######### interface/vmcs_host/CMakeLists.txt #########
> if (BUILD_WAYLAND)
> wayland_add_protocol_server(
>     VCHOSTIF_SOURCE
>     ../../interface/wayland/dispmanx.xml
>     dispmanx
> )
> + add_custom_target (myVmcs_hostTarget DEPENDS
> wayland-dispmanx-server-protocol.h)
>
> ######### interface/khronos/CMakeLists.txt #########
>    add_library(wayland-egl ${SHARED} ${WAYLAND_EGL_SOURCE})
>    + add_dependencies(wayland-egl myVmcs_hostTarget)
>    install(TARGETS wayland-egl DESTINATION lib)
>
>
> note: i consider this a rather hacky solution. it works but assumes the
> filename to be wayland-dispmanx-server-protocol.h even though if someone
> changes the cmake function called 'wayland_add_protocol_server' (which
> comes with the patch) to use a different filename, it will break.
>
> the cmake background is described here:
> #
> http://stackoverflow.com/questions/4010212/cmake-struggling-with-add-custom-command-dependencies
>
> tested with: conf/local.conf:
> BB_NUMBER_THREADS = "4"
> PARALLEL_MAKE = "-j 4"
>

I tried defining a custom dep too but the error persisted. As well, I recreated
the patch using exactly your changes (for the sake of being on the same code)

Index: git/interface/khronos/CMakeLists.txt
===================================================================
--- git.orig/interface/khronos/CMakeLists.txt
+++ git/interface/khronos/CMakeLists.txt
@@ -95,6 +95,7 @@ if (BUILD_WAYLAND)
    )
.
    add_library(wayland-egl ${SHARED} ${WAYLAND_EGL_SOURCE})
+   add_dependencies(wayland-egl myVmcs_hostTarget)
    install(TARGETS wayland-egl DESTINATION lib)
.
    configure_file ("wayland-egl/wayland-egl.pc.in" "wayland-egl/wayland-egl.pc" @ONLY)
Index: git/interface/vmcs_host/CMakeLists.txt
===================================================================
--- git.orig/interface/vmcs_host/CMakeLists.txt
+++ git/interface/vmcs_host/CMakeLists.txt
@@ -23,6 +23,7 @@ wayland_add_protocol_server(
    ../../interface/wayland/dispmanx.xml
    dispmanx
)
+add_custom_target (myVmcs_hostTarget DEPENDS
wayland-dispmanx-server-protocol.h)
endif ()
.
add_library(vchostif ${VCHOSTIF_SOURCE})

Now. Even with this patch, the compile fails sometimes with:
tmp/work/raspberrypi2-poky-linux-gnueabi/userland/git-r
5/git/interface/vmcs_host/vc_vchi_dispmanx.h:72:66: fatal error:
interface/vmcs_host/wayland-dispm
anx-server-protocol.h: No such file or directory

I use autodetection of BB_NUMBER_THREADS and PARALLEL_MAKE. They end up:
BB_NUMBER_THREADS="4"
PARALLEL_MAKEINST="-j 4"

Regards,
--
Andrei Gherzan


  reply	other threads:[~2015-10-21 12:05 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-03 16:37 [meta-raspberrypi][PATCH V4 1/5] userland: Fix install prefix and generate pkgconfigs Khem Raj
2015-10-03 16:37 ` [meta-raspberrypi][PATCH V4 2/5] userland: Add wayland support Khem Raj
2015-10-03 16:37 ` [meta-raspberrypi][PATCH V4 3/5] userland: Adjust include location for pthreads-headers Khem Raj
2015-10-24 20:05   ` Andrei Gherzan
2015-10-03 16:37 ` [meta-raspberrypi][PATCH V4 4/5] weston: Enable rpi compositor backend Khem Raj
2015-10-03 16:37 ` [meta-raspberrypi][PATCH V4 5/5] userland: Fix build with clang compiler Khem Raj
2015-10-03 18:24 ` [meta-raspberrypi][PATCH V4 1/5] userland: Fix install prefix and generate pkgconfigs Andrei Gherzan
2015-10-03 19:00   ` Khem Raj
2015-10-03 19:03     ` Andrei Gherzan
2015-10-03 19:15       ` Khem Raj
2015-10-03 19:18         ` Andrei Gherzan
2015-10-03 20:06           ` Khem Raj
2015-10-03 20:11             ` Andrei Gherzan
2015-10-03 20:31               ` Khem Raj
2015-10-03 20:33                 ` Andrei Gherzan
2015-10-03 20:40                   ` Andrei Gherzan
2015-10-03 20:45                     ` Khem Raj
2015-10-03 20:46                     ` Andrei Gherzan
2015-10-03 21:27                       ` Andrei Gherzan
2015-10-03 21:47                         ` Khem Raj
2015-10-03 21:53                           ` Andrei Gherzan
2015-10-13  0:14                             ` Joachim Schiele
2015-10-13 17:13                               ` Andrei Gherzan
2015-10-15 14:57                                 ` Joachim Schiele
2015-10-21 12:05                                   ` Andrei Gherzan [this message]
2015-10-24 19:56 ` Andrei Gherzan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151021120500.GA5610@resin \
    --to=andrei@gherzan.ro \
    --cc=js@lastlog.de \
    --cc=yocto@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.