libbsd development policy clarification needed?

Gedare Bloom gedare at
Fri Feb 3 18:51:56 UTC 2023

On Thu, Feb 2, 2023 at 11:24 PM Christian MAUDERER
<christian.mauderer at> wrote:
> Hello Karel,
> On 2023-02-02 12:43, Karel Gardas wrote:
> >
> >    Guys,
> >
> > recently I needed to work with RTEMS/NFS. As this is provided by libbsd
> > I took this and following two sentences below from master branch
> > description provided in README I took as granted that master does have
> > all the features which are currently available and provided by the project:
> >
> > "This branch must be used for libbsd development. Back ports to the
> > 6-freebsd-12 are allowed."
> >
> > I was surprised to be proven wrong then by Fabrizio here:
> >
> >
> > and by later investigation which shows that 6-freebsd-12 branch
> > accumulated NFS work by Chris done in 2021 which is not presented on
> > master. I've investigated just NFS as this was my focus here.
> >
> > So if 6-freebsd-12 became development branch of some sort, then it would
> > be great to have that clarified in the project README file to prevent
> > users confusion? Or if the policy is still the same, then perhaps some
> > branch sync is needed here?
> That currently is an open issue. Basically there is a pending patch set
> that should fix that since several months. But there is a disagreement
> about some of the changes in that patch set (and about the patches
> checked in to 6-freebsd-12). Therefore, it still hasn't been merged.
> If you want to know some more about the problematic points, I recommend
> reading this (long) thread:
> The statement that development has to happen on the master branch is
> still true. The master is intended to track the FreeBSD upstream
> development. Only changes on that branch are guaranteed to live through
> an upgrade to a newer base version of FreeBSD. It's very unfortunate,
> that there are some patches on the 6-freebsd-12 branch only. On the long
> term, that issue has to be resolved.

I have been investigating this problem in the background, and I have
some findings and some questions. First, I have found that there is a
most-common ancestor between master and 6-freebsd-12 at commit
This is at least promising that the discrepancy between the branches
can be resolved.

The proposed pending patch set to "fix" the NFS issue does not fix the
underlying problem. Instead, it introduces further divergence between
the branches. I would instead suggest that we should resolve to fix
the underlying problem. I can see two paths forward.

1. Abandon 6-freebsd-12 after releasing 6. This is probably not ideal
since what I understand is some users have projects based on
6-freebsd-12 and would like an upgrade path. (I guess there is also
the option to abandon master, which also makes little sense.)

2. Pull commits from 6-freebsd-12 into master to make sure master is
the development head. in the future, reject patches that only go
toward release branches. This has its own problems too. It can
realistically only be done in three ways:

2a: Rebase master and cherry-pick commits from 6-freebsd-12 and master
back into master. This rewrites the history of master, and
unfortunately will cause the head of 5-freebsd-12 and the tags for
rtems-5 to no longer exist on the master branch. They will still exist
in the '5' branch. The advantage is in the end there will be a linear
history of development on master that reflects the timeline of actual
development that spanned both branches. Theoretically, this should
make it easier to git-bisect.

2b: Cherry-pick commits from 6-freebsd-12 to master and fix conflicts.
This puts all the missing commits from 6-freebsd-12 on to the current
head of master. I don't know how messy this would be. It ends up
making the history of master convoluted to understand, with fairly old
commits from 2018 being placed on top of newer commits from 2020s.

2c: Merge 6-freebsd-12 into master and fixup conflicts in the merge
commit. This is pretty similar to 2a but ends up with a non-linear
history and a merge commit. It may be a fairly complex merge commit.

To get a sense of the difference between the two branches, I have done
the following command:
$ git log --pretty=oneline master...6-freebsd-12 > ../log.txt
This uses the ... (three-dot) Symmetric Difference Notation. The
result of that is a 750 line file, so 750 commits are different
between the two branches. Some of those commits are actually the same
content, but they have different parents so different hashes. In a
rebase or merge situation, those commits should end up the same. There
may be other git-fu to find just the patches that are unique in the
two branches.

In any case, doing this in a way that ensures the commits build and
tests run is challenging due to the interactions with the rtems.git,
toolchain, and the submodules.

After the 6-freebsd-12 and master are made consistent, then it becomes
possible to update freebsd and also to consider what ways can be
chosen to fix problems in 6-freebsd-12.


> Best regards
> Christian
> >
> > I'm fine with either way, as a user I just need clear not confusing
> > project message...
> >
> > Thanks!
> > Karel
> >
> >
> > _______________________________________________
> > devel mailing list
> > devel at
> >
> --
> --------------------------------------------
> embedded brains GmbH
> Herr Christian MAUDERER
> Dornierstr. 4
> 82178 Puchheim
> Germany
> email:  christian.mauderer at
> phone:  +49-89-18 94 741 - 18
> mobile: +49-176-152 206 08
> Registergericht: Amtsgericht München
> Registernummer: HRB 157899
> Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
> Unsere Datenschutzerklärung finden Sie hier:
> _______________________________________________
> devel mailing list
> devel at

More information about the devel mailing list