On 27/11/2019 01:45, Joel Sherrill wrote:
On Sun, Nov 24, 2019 at 4:44 PM Chris Johns <chr...@rtems.org
<mailto:chr...@rtems.org>> wrote:
On 23/11/19 1:31 am, Sebastian Huber wrote:
> On 22/11/2019 15:25, Joel Sherrill wrote:
>> On Fri, Nov 22, 2019, 8:19 AM Sebastian Huber
>> <sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@embedded-brains.de>
>> <mailto:sebastian.hu...@embedded-brains.de
<mailto:sebastian.hu...@embedded-brains.de>>> wrote:
>> I am about to add the documentation of the new build system
to the user
>> manual. There is no longer a bootstrap of the sources
necessary. Should
>> I remove all information for the bootstrapping from the user
manual?
>> Should there be a chapter for the old build system?
>>
>> Don't remove the old process until the code is removed. I
thought we had
>> agreed to a final autoconf based release. A release with both
will help ensure
>> it is functionally equivalent and provide a baseline for comparison.
>
> I would remove the old build system as soon as possible. Shipping
a release with
> two build systems makes maintenance more difficult. Getting rid of
> Automake/Autoconf would remove these packages from the RSB build
for example.
After a some consideration over the weekend I am not sure what we
should do and
I think we need to discuss it some more.
We need to answer the important question of user churn. A change of
this type
will have a flow on effect to established users and any
infrastructure they have
to build and deploy RTEMS. An example is the `5/bsps` build sets in
the RTEMS, a
build system change breaks those configurations. I am sure there are
many other
scripts in use today. I also know there are sites running 4.11 and 5
in parallel
and building each will break.
We need to decide if this churn to our users is something we want now.
I currently do not favor a release with both build systems being
present.
My big concern is ensuring that we know the new build system works
exactly like
the old one. And by works, I mean produces the same binary code with the
same
configure options expressed in the new build system's manner.
Yes, I think we need a check list which everyone interested in a
particular BSP should use to determine if the new build system produces
sane results.
Here are some
things we need to consider. These are of varying complexity and type.
(1) Users historically test "dot zero" releases and the "dot one"
incorporates
a lot of fixes that we really wish had been in the "dot zero". This
raises the
question of when do we get enough community testing to have confidence
the new system has no breakages from the old one?
Breakages can occur due to build system changes, code changes, new
compiler versions, etc. I think this is a general problem and not
specific to the build system change. If no testing is done before a
release, then we should accept this and ship a 5.2 release as the "real"
one.
(2) rtems-bsp-builder will need to change to support the new build system.
I think this is a must have to ensure a certain level of no breakages.
(2a) Related: Do we know the new build system builds all the configurations
rtems-bsp-builder performs?
It would be nice if this could be done by someone knowing the
rtems-bsp-builder code. I had a quick look into it and it is not
something I can do in couple of minutes.
I tested some build variations with a simple script.
(3) BSPs have a number of variables which can be overridden. How will we
know these still are supported and work?
The BSP options were converted by a Python script:
https://git.rtems.org/sebh/rtems.git/tree/gen-bsps.py?h=build
It is quite likely that I converted all options. This should be one of
the check list items.
(4) an unknown number of instructions will have to change. [This may be
time to purge/convert/fix more wiki content. This is not necessarily a bad
thing -- just a stick to beat us to do something.]
Yes, but I cannot change this over night. My general long term approach
is to move content to the Sphinx documentation and remove wiki content
and README files.
(5) Developer disruption. I am hoping this doesn't have the negative impact
switching from CVS to git did. But it could. It isn't that the switch
over itself
is bad. It's just that we can forget all the side-effects and human
retraining.
I don't think that changing a configure command line to the new
config.ini file will be a very hard job.
My overarching concern with all of these is "risk reduction". The primary
risk is breaking something. And the risk reduction is (1) testing before
switch
over and (2) having a reference after switch over for behavior?
So what's the criteria for switching over? I have no idea what the
acceptance
criteria is. Can we define that?
For the integration my criteria would be:
1. The new build system builds all tests (maybe except Ada).
2. You can build libbsd with a couple of BSPs.
3. The rtems-examples work using the legacy Makefiles (seems to work).
4. Test runs on a couple of BSPs show the same pass/failures compared to
the old build system.
What can that reference be? I think this is from heaviest to lightest.
+ Build systems in parallel on same branch for N time?
+ final release with old build system and then kill it.
+ final autoconf snapshot known to work -- implies testing the snapshot
which
we don't do right now..
+ (lightest) tag RSB, tools, rtems, and libbsd repos with a
"pre-autoconf-death"
tag. This at least lets someone easily go back to that point in time
across the repos.
You can't do this easily with git log because you would have to find the
right place
in multiple repositories.
I probably can be convinced that the lightest option is acceptable. Whatever
the reference point is, it just needs to be documented what it is and how to
recreate it.
I would merge the new build system in one patch into the RTEMS sources.
Then I would add a configuration option to the old configure script
(e.g. "--I-only-want-to-compare-results-with-the-new-build-system").
This basically disables the normal use. It intentionally breaks existing
configuration scripts to that you know something happens. You can still
build with the old build system. You should do this only the compare the
results of the old and new build system. The new build system should be
used, fixed and improved. In a three month (maybe more?) period we keep
the old build system in the sources and documentation. Afterwards we
remove it completely.
Before the stuff is removed, we tag the repositories.
If we decide it is OK to have the churn we can proceed as we
currently are. The
build changes can be merged and the autotools build system can be
removed.
If we decide we would like to make RTEMS 5 the last autotools
release we need to
make the release and that would mean a focused effort by more than
just me. We
cannot leave all the hard work done by Sebastian for a new build
system on hold.
I agree on not letting the new build system hold.
Good.
Either path effects someone, a developer, for example Sebastian, our
users with
churn or me and I hope other core developers with a release.
Churn will occur at some point. My concern is risk.
Yes, at some point all the configuration scripts to build a BSP need a
change.
A release means getting the release itself debugged then we need to
test it. It
also means there may be possible changes and we need to be mindful
of the effect
that might have on the work Sebastian has already done.
And knowing that we don't have good infrastructure to test those
snapshots right now,
I would lean to having tags in the repos. We have good testing on the repos.
Perhaps after the build system switch, we can focus on testing the
snapshots.
We only have a finite amount of volunteer time to make this transition.
Where is
the effort best spent?
My gut hunch is on updating the testing infrastructure and documentation
after
the switch to get back to full speed as quickly as possible.
I look forward to hearing what our developers and community think.
Me too.
I'm not trying to put extra burden, work or churn on anyone. I'm just
concerned
that this build system transition has inherent risks. We need to do what
we can
to reduce risk before the switch, provide a known (good?) reference point,
and make sure we have a complete work list. And commitment to finish that
work list.
And we all have holidays. etc coming up.
From my point of view it would be nice to have at least the patches
integrated in the next one or two weeks.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel