Maciej W. Rozycki wrote:
On Wed, 15 May 2019, Jacob Bachmeyer wrote:
This patch really exposes a significant deficiency in our current
implementation of default_target_compile: the order of various flags
can be significant, but we only have that order implicitly expressed in
the code, which goes all the way back to (of course) the "Initial
revision" that is probably from a time before Tcl had the features that
will allow significant cleanup in here.
I suspect the origins may be different, however as valuable as your
observation is functional problems have precedence over issues with code
structuring, so we need to fix the problem at hand first. I'm sure
DejaGNU maintainers will be happy to review your implementation of code
restructuring afterwards.
My concern is that your patch may only solve a small part of the problem
-- enough to make your specific case work, yes, but then someone else
will hit other parts of the problem later and we spiral towards "tissue
of hacks" unmaintainability.
The biggest hint to me that your patch is incomplete is that it only
adds -largs/-margs to wrap LDFLAGS. I suspect that there are other
-?args options that should be used also with other flag sets, but those
do not appear in this patch. Do we know what the GNU Ada frontend
actually expects?
Some of these could probably be combined and I may have combined
categories that should be separate in the above list. The GNU toolchain
has always been a kind of "magic box that just works" (until it doesn't
and the manual explains the problem) for me, so I am uncertain what the
ordering rules for combining these categories should be. Anyone know
the traditional rules and, perhaps more importantly, what systems need
which rules?
The ordering rules are system-specific I'm afraid and we have to be
careful not to break working systems out there. People may be forced to a
DejaGNU upgrate, due to a newer version of a program being tested having
such a requirement, and can legitimately expect their system to continue
working.
We can start by simply preserving the existing ordering until we know
something should change, but the main goal of my previous message was to
collect the requirements for a specification for default_target_compile
so I can write regression tests (some of which will fail due to known
bugs like broken Ada support in our current implementation) before
embarking on extensive changes to that procedure. Improving
"target.test" was already on my local TODO list.
NB I have been repeatedly observing cases where a forced upgrade of a
system component I neither care nor I am competent about, triggered by an
upgrade of a component I do care about, caused the system to malfunction
in a way that I find both unacceptable and extremely hard to debug. It
seems to have become more frequent in the recent years, and I find this
both very frustrating and have wasted lots of time trying to fix the
damage caused. I would therefore suggest to take all the measures
possible to save people from going through such an experience.
Yes, I have also noticed an attitude that can be summed up as "Who cares
about backwards compatibility? New! Shiny!" usually from people who
have no clue and no business being anywhere near a source editor.
(Surprise! Their code has lots of bugs, usually severe, too.) The
problem is not new -- jwz called it out as the "Cascade of
Attention-Deficit Teenagers" model, noting that it seemed to
particularly plague GNOME, long ago.
Unfortunately, people with that particular attitude seem to have
acquired outsize influence over the last few years. I would suspect an
organized attack if I were more conspiracy-oriented, but Hanlon's razor
strongly suggests that this is simply a consequence of lowering barriers
to entry.
-- Jacob