On 03/06/2018 03:16 AM, Florian Weimer wrote:
On 03/05/2018 07:48 PM, Carlos O'Donell wrote:
> Empirically I think it is too late at taskotron for developer
> tooling, and I'd like to be able to give us immediate per-patch
> feedback as we develop our work, particularly if we are going to do
> more automated patch backporting using our tooling.
But we rarely have individual changes or patches in Fedora dist-git.
Downstream, there is even a tendency to munge together unrelated> patches in a single
patch.
Hopefully my notes below help clarify my position.
I do not want to filibuster you, please feel free to respond to
whichever points you think need clarification, and I can summarize
again later.
(a) Few low-quality patches in Fedora.
We should not group together dissimilar patches, this is poor quality
engineering. Patches should be split out logically based on what they
implement.
This is a flaw in our existing fedora packages and not a flaw in
what we should strive to attain in the quality of our work.
(b) Reasons for automated ABI testing in downstream.
1. We often trial out things in Fedora Rawhide with relatively large
patches making sweeping changes, and test this in Rawhide.
Examples include all of the P&C changes that I worked with Torvald
on, and deployed to test in Rawhide. It would have been nice to have
some automated check in Fedora Rawhide to compare ABIs in addition
to the usual manual inspection, looking for anything out of the ordinary.
For example we changed the internals of the various pthread structures
and an immediate warning and review would be good if made a publicly
visible ABI change.
I would like us to do more testing in Fedora Rawhide, and understanding
the exact nature of the ABI change would be useful. It should be as easy
as turning on ABI verification and looking at the logs, or compare them
to either a previous run or to the glibc-abi project's baseline.
2. Enable Fedora Rawhide ABI freeze immediately after glibc upstream freezes,
but keep syncing Fedora Rawhide weekly or daily to catch any last-minute
ABI changes (internal or external) to review.
3. Enable more aggressive backporting between upstream master, upstream
release, Fedora and RHEL branches.
3.1 Fedora<->Upstream release
We should aim for zero patches in Fedora dist-git in Rawhide (except for
point 1 above, and immediate bug fixes or issues without own toolchains),
but for the 3 other branches we maintain for released Fedora, we should
be doing more active backporting to help Fedora. This active backporting
has the benefit that it provides better coverage of fixes from master
(very important!), but carries with it ABI risks.
My hope is that with your sync script, and automated ABI checking, that
the released branches can be updated by anyone on the team with a higher
confidence that the build is OK (requires we fail the builds for testsuite
failures *and* ABI failures e.g. belt and suspenders, but we can fix the
regression testsuite checking as a next step).
Having the assurance at the %install phase is crucial IMO, since
it gives you immediate feedback (important for a good developer worflow).
e.g.
* Cherry pick patch from master to local release branch X.Y.
* Do a sync to fedora Z against a local release branch X.Y.
* Push a scratch build and see if you get any failures across all arches
in both tests and ABI.
* No ABI failures? No test failures? OK, propose cherry pick upstream.
* Commit to upstream release branch, and do the official sync.
Granted adding ABI checking adds complexity to the developer workflow,
but if we never make mistakes, it should never really trigger, and only
some of the team members need update, and sign off on new ABI at each
release? :-)
3.2 Fedora<->Upstream master
At present we do simple syncs from upstream release branches to Fedora
release branches, but we could do better to experiment with more aggressive
models. Like gcc we could fix more things on the stable branches and having
automated ABI checking would help.
For example consider all the work we do in RHEL to backport changes from
upstream master to glibc 2.17. In RHEL 7 timeframe I backported all of
the IN_MODULE() changes and had to verify at each stage that we didn't
change the ABI. This was done by hand because we didn't have automation.
With the new ABI verification I need only have done a build after applying
each patch to verify it built.
3.3 Upstream release<->RHEL/CentOS
In RHEL and CentOS the ABI is frozen at GA, and having automated testing
for ABI with this level of detail, integrated into %install, will help us
ensure we make no mistakes. Even with libabigail integration into any
late-phase content validation, we *need* this earlier during development
of either product. We can't rely on upstream testing in this case because
our ABI may have deviated slightly e.g. backported mix of GLIBC_PRIVATE
changes.
So it's still not clear to me what you are trying to achieve
here.
Based on your comments above, it looks like downstream is already too
late?
We need ABI testing at each stage to provide confidence that allows
developers to work quicker, trusting in the regression tests to help
them make sure fewer mistakes are made.
We absolutely need deeper ABI testing upstream but I can't do that
yet without having had any of my own experience in Fedora and RHEL
doing exactly what I want to recommend upstream.
--
Cheers,
Carlos.