Breaking up a monolithic patch
Florent Thoumie
flz at xbsd.org
Wed Jun 8 10:18:09 GMT 2005
On Jun 8, 2005, at 12:12 PM, Loren M. Lang wrote:
> On Wed, Jun 08, 2005 at 07:16:59AM +0200, Florent Thoumie wrote:
>
>> Le Mardi 07 juin 2005 ? 12:50 -0700, Loren M. Lang a ?crit :
>>
>>> I have been working on porting Cinelerra to freebsd and I
>>> currently have
>>> one large monolithic patch that will make cinelerra compile and
>>> run on
>>> freebsd. Now I am trying to figure out how to break it up. It
>>> looks
>>> like the simplest method would be to break it up for each file
>>> that's
>>> modified, then I could use the existing update-patches framework to
>>> maintain it. But I think the better solution would be to break
>>> it up
>>> functionally, though it's harder to maintain. I could make a
>>> series of
>>> patches to be applied in order, where one patch would modify
>>> cinelerra
>>> to have a customizable prefix, another would disable the linux
>>> firewire
>>> support. This approach would make several patches that will overlap
>>> some and touch some of the same files, but it would be more
>>> useful in
>>> the long run. It would be easy to see what was modified to disable
>>> firewire and figure out how to update it to use the freebsd firewire
>>> support instead of disabling it. If I do this though, I'll probably
>>> need to spend some time making a script to help generate the patches
>>> appropriately.
>>>
>>
>> Use Tools/scripts/splitpatch force !
>>
>
> Actually I was able to accomplish this already with the update-patches
> target, all it does it split the monolithic patch into one patch per
> file that was modified. What I'd really like to do is patch it per
> change in functionality. At the moment there are about 69 files
> that I
> need to patch and splitting 1 patch into 69 doesn't help much as it's
> still just as hard to figure out what all is happening.
>
> I'd prefer to have about 6 or 7 patches as that is how many problems I
> am having to patch. For example, I'd have one patch that fixes the
> PREFIX so it's configurable instead of hard-coded like the original
> is.
> To fix this, I have to patch several .c and .h files, plus the a
> couple
> of makefiles. Another patch I'd have would disable the firewire code,
> at least until I can port it to freebsd properly. That patch touchs
> several files as well with some overlap in the makefiles. The problem
> is that this touches some of the same files as the first patch, but
> that
> isn't a big problem as long at I apply them in order and create
> them in
> reverse order.
>
> Doing this will help much more as it will be obvious what all the
> patches are for. They'll be named by their goal, not the target
> files.
> Also, it will be easier to send in patches to the maintainer as he
> won't
> want the code to disable the firewire, but may accept the PREFIX
> patch.
> Lastly, this will make it easier to audit and deal with later. I can
> easily see what I need to do to get firewire working again as it's all
> in one place.
>
> Is there anything to help with this or should I just work on
> developing
> my own scripts to automate this procedure.
Try to use ${REINPLACE_CMD} in place of patches
when you can.
Send patches upstream so we don't have to put them
in the ports tree.
Not sure you will ever find a script that will read
your mind.
--
Florent Thoumie
flz at xbsd.org
More information about the freebsd-ports
mailing list