On Thu, 2008-07-31 at 19:53 -0700, Jesse Barnes wrote:
> On Thursday, July 31, 2008 6:40 pm Dave Airlie wrote:
> > > Well, if the overhead of merging upstream is a concern, then how about
> > > not worrying about bc at all and let people who want to back port deal
> > > with it?  Oh, and what about just keeping the drm drivers in a linux
> > > kernel tree?  That'll make upstream merging even easier yet...
> >
> > The less crap I have to remove from the diffs the better, I have a script
> > and it removes stuff mostly fine, maybe someone should actually bring this
> > idea up on the list with a proper plan for how to deal with
> >
> > a) BSD
> 
> I'd like to hear Robert's concerns here, but I've been working with some of 
> the BSD folks lately, and it seems like the main concerns are:
>   1) making it easy for contributors to identify which portions of code are
>      shared
>   2) licensing
> Since both the BSDs and Linux effectively copy code out of the DRM repo and 
> into their respective kernel trees at this point, having the actual repo 
> based on one of them shouldn't be an issue as long as both 1 and 2 are 
> handled.  The remaining compat macros could probably just be wrapped in some 
> sort of Linux equivalent (DRM_SPINUNLOCK->spin_unlock, what's the 
> difference?), or we could annotate things for the BSD guys to run scripts 
> over.  As it stands, they still have to go over things by hand anyway...

As an ex-BSD kernel maintainer, I stood against moving to a linux
kernel-based tree for a long time.  For a long time I felt like I was
the only guy holding back the move.  I couldn't get NetBSD to work in
the "upstream" tree, and it sounds like OpenBSD's following the same
route, so maybe I was doing it wrong all along in trying to have one
tree for all OSes to share.

Entries 1 and 2 in the list were of concern to me for quite some time,
as those championing the move to a linux tree were doing it primarily
for GPL and style motivations (at least vocally).  I didn't like the GPL
motivation, and felt like we had other avenues to fix the style
motivation (which I eventually worked on, and was about half done with I
think).

The other problem as a BSD maintainer was how to merge code.  Originally
all I had available was CVS and cp, so the shared-code system we had was
useful -- I just worked in the DRM tree and periodically copied changes
over and cvs committed.  Eventually I got perforce access, and was
trying to use that to manage merges, but CVS IDs and perforce diff
formatting and performance issues made it more work than copying diffs
by hand.  I settled on a series of seds on the DRM tree and cping it to
the BSD tree, which worked reasonably well.

Luckily, those times are past.  We've got git now.  If I was doing BSD
at this point, I would probably rather set it up as a branch of a
linux-2.6 kernel tree that I merged from:

Initial setup today:
cd linux-2.6
git-checkout -b freebsd-drm
cd drivers/gpu/drm
cp ~/src/drm/bsd-core/drm*.[ch] .
cp ~/src/drm/bsd-core/i915/Makefile i915/
cp ~/src/drm/bsd-core/i915*.[ch] i915/
(etc)
git-add .
git-commit -a -v

Next merges:
git-merge origin/master
(resolve conflicts and make it compile again as linux-specific bits
trickle in)
git commit -a

Then I could use my old script for copying an external tree into the
FreeBSD repo and continue doing mega-commits as before.  The advantage
here is that since I'm merging the linux-specific OS side, I don't have
to go and read the two side-by-side all the time to make sure they
haven't drifted too far apart, which was almost all of the time I spent
working on the BSD code.  This is assuming that the two codebases stay
close enough together for the merger to do something sane, but I think
that would be the case for the most part.  To improve that, I'd add more
compat macros to leave the FreeBSD side more linux-looking.  FreeBSD's
grown a layer for taking osol code mostly as-is for the ZFS and dtrace
ports, and I think growing some compatibility for taking mostly
linux-looking code would probably be a sensible plan for maintaining
this codebase, and would probably help various other potential FreeBSD
projects as well.

I don't think anyone is proposing changing the licensing of DRM code
this time around, so with this plan as a BSD guy I wouldn't even care
which parts of the code were "shared" versus "os-specific".

> > b) backwards compat for using updated DRM drivers on older kernels.

Since I'm now maintaining a linux-2.6 tree for getting my GEM work
merged, I'm having to deal with backporting concerns already.  The plan
I'm proposing for our project is for us to do topic branches like other
linux kernel developers, propose them for merge either through you or
directly, and maintain one branch for "all the things I want on top of
current linux kernel to get what we need."  As we head towards our
quarterly release, I'll prepare a branch against the latest released
kernel of everything we need for the quarterly release, which is then
the stuff that backporters would take up and integrate into whatever
ancient-yet-doesn't-resemble-any-release-ever mess they've got.

This gets us better merge process ("here's my short patch series on top
of linus"), something believable for our project's stable release (full
kernel, not a pile of kernel code that might work as long as you've
added our kernel subsystem patches and you're not running a distro
that's patched in changes to other function arguments anyway), and a
clear message for backporters of what they need for the new hotness.

-- 
Eric Anholt
[EMAIL PROTECTED]                         [EMAIL PROTECTED]


Attachment: signature.asc
Description: This is a digitally signed message part

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to