On Wed, Mar 27, 2019 at 8:33 AM Nicolas Mailhot
<nicolas.mailhot(a)laposte.net> wrote:
Le 2019-03-27 03:46, Nico Kadel-Garcia a écrit :
> On Tue, Mar 26, 2019 at 3:44 AM Nicolas Mailhot
> <nicolas.mailhot(a)laposte.net> wrote:
>> POSIX is dead as a shell compatibility target. You want to replace
>> bash
>> with something faster, by all means do it. With something that
>> includes
>> the GNU extensions like pushd/popd that most packagers expect today.
>
> Is there any reason to *ever* use pushd or popd in %build or %install
> today?
That is totally the wrong attitude when you want to replace an
implementation used for years by thousands of volunteer people in tens
of thousands of interdependent files.
Again, not interested in the side of the discussion about replacing
bash as the default interpreter. This is a reminder that I would
personally prefer that bash weren't behind /bin/sh.
It is used now, ergo packagers (the people who did the work) find it
useful and convenient. You want them to do something else, you need to
I strongly disagree with the shortcut you make here.
The only use of pushd/popd I made in scriptlets was because it was
part of the Python packaging guidelines and I happen to maintain a
bunch of Python packages. So what I was doing then wasn't to choose
something I would deem useful and convenient but rather follow
guidelines to the best of my abilities.
So sure some people may find it useful and convenient, but others may
not even be aware or care that this construct is bash-specific so
please refrain from authoritatively introduce causality where there
isn't.
And on the convenience factor:
pushd somewhere
...
popd
is not harder than:
cd somewhere
...
cd -
The bash construct becomes interesting only when you need to stack
directories and not keep explicit track of where you are returning to.
This convenience I do not wish to remove from package maintainers,
even in scriptlets.
make it worth their effort to something else. Winning 10 minutes of
CPU
time in a single pathological spec like gcc isn't it.
The easiest way to make it worth their effort is to reduce the effort to
zero, ie implement the capabilities commonly people use in your target
replacement shell. That will be way way easier than trying to invent
something compelling enough for them to change their habits. 10% of
specs doing something is definitely common use.
Another way is to take the conversion work unto yourself. But that does
not solve the ongoing effort of helping packagers that try to use bash
syntax in their spec because they need to do something, and find out it
does not work, and give up because the additional work of looking for
alternatives makes the cost/benefit analysis of packaging something
negative. We have many packages where the cost/benefit hovers next to
the limit, because we have nice volunteers that will go to their limits
for Fedora.
Conversely whenever as a Fedora end user I run into a failing script
on a non Fedora system because it uses GNUisms it makes my life harder
to work on the multiple systems I have to deal with. By having bash as
/bin/sh Fedora defers the moment when I realize this is happening and
pain ensues. That is because Fedora is my main system and others are
second-class citizens in my workflow. I'd hate to elect a different
one as main my system for obvious reasons.
Yet another is to propose a syntax with is clearly simpler, more
expressive, more productive and better documented for humans (Not CPUs.
CPUs do not get to vote). But, that solves "new spec and macro code"
problem, not the "existing code" problem.
Hazing people with negative terms like bashism never convinced anyone.
I'm sure some comments of this nature actually got a "fair enough"
response from a couple people.
Especially when others are doing the work, not you. In my language,
that
is called “arriving after the battle”: complaining loudly at the people
who sweated and blooded doing some work, that they didn't do it well
enough, when you were safely somewhere else, at the time help was
needed.
I am personally taking an opportunity to raise my concern about the
default shell seeing this after-the-battle thread.
Maybe I should start a different one on /bin/sh?
I was not aware of this until the link was shared in this thread but
this is an interesting read on the topic:
https://wiki.ubuntu.com/DashAsBinSh
If RPM goes somewhere on this topic [1] maybe that could be a change for f31?
Dridi
[1]
https://github.com/rpm-software-management/rpm/issues/646