Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Oct 2008 08:24:01 +0200
From:      Hans Petter Selasky <hselasky@c2i.net>
To:        freebsd-current@freebsd.org
Cc:        Luigi Rizzo <rizzo@icir.org>
Subject:   Re: Video4Linux header files
Message-ID:  <200810080824.01507.hselasky@c2i.net>
In-Reply-To: <20070519144256.A41946@xorpc.icir.org>
References:  <200705191730.06964.hselasky@c2i.net> <200705192324.34663.hselasky@c2i.net> <20070519144256.A41946@xorpc.icir.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Saturday 19 May 2007, Luigi Rizzo wrote:
> On Sat, May 19, 2007 at 11:24:34PM +0200, Hans Petter Selasky wrote:
> > On Saturday 19 May 2007 21:14, Luigi Rizzo wrote:
>
> ...
>
> > > - i don't know how problematic is this, but v4l2 headers seem to use
> > >   unnamed unions which, last time i tried, conflict with the compiler
> > >   setting used to build the kernel. While this is possibly an
> > > orthogonal problem which we may have to address at some point (as
> > > unnamed unions seem to be a common paradigm in linux headers), it is
> > > yet another hurdle.
> >
> > Unnamed unions are not so good. I suggest that we terminate unnamed
> > unions with an "u".

We can make this a compile time option:

#ifdef NOT_GCC_4X
#define MY_UNION u
#else
#define MY_UNION 
#endif

union {

} MY_UNION;

I see no problem about that. Else it will be a nightmare to port the code to 
other and especially older compilers.

>
> It is not our choice. Linux v4l2 headers use these unions,
> software is written against these headers, we can't change the
> names unless we want to make extensive changes to the sources.

We can be compatible with both!

>
> > > I suppose a suitable plan would be the following, but i have not had
> > > the time to work on it:
> > >
> > > 1. add a v4lcompat build-dependency on the ports potentially affected,
> > >    making sure they still build correctly using v4l1
> > > 2. add v4l1 headers in the base system (possibly changing the v4lcompat
> > >    port to not install the headers if they are already in the base
> > > system);
> >
> > I want to put a V4L2.0 "videodev.h" under /usr/src/sys/sys/ with some
> > modifications. What do you think about that?
>
> All the constraints i mentioned in the original email still apply.
> First you need to address the unnamed unions problem, then
> you will have to deal with a significant amount of breakage in
> the ports.

See comment above.

>
> > > 3. modify the vl4compat port to add the v4l2 headers, again fixing
> > >    any breakage in the builds
> > > 4. as in step 2, add the v4l2 headers to the system, changing v4lcompat
> > >    as needed where the v4l* headers are in the base OS
> >
> > Does anyone know which ports use the current Linux compat layer port and
> > the v4lcompat port ?
>
> There is some magic port script you can run on the ports tree to get the
> list of ports which depend on v4lcompat. But the problem, as i tried to
> explain in the original message, is that there are ports which don't have a
> v4lcompat dependency while they should (at least to have a
> consistent build environment) and others which misbehave when they find
> a v4l header.

--HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810080824.01507.hselasky>