The Autoconf-generated configure script, or even CMake, respect SHELL, so if a 
user gives it a problematic shell, they won't be able to build anything abd 
many programs will crash. 

But please consider the scenario mentioned before: when a user doesn't have 
root permissions to change '/bin/sh', they are left with non-standard hacks 
like what I did.

When each program's build system respects 'SHELL', the user is free to use any 
shell they want with any program's build.

Cheers,
Mohammad




On May 1, 2024 10:55:05 PM GMT+02:00, Behdad Esfahbod <beh...@behdad.org> wrote:
>I'm not talking about the user overriding the shell specifically. I'm
>talking about users who genuinely use a non-POSIX shell as their terminal
>shell. Then just running ./configure would fail if configure was to respect
>$SHELL.
>
>Or rather you're saying that only POSIX-compatible shells should set $SHELL.
>behdad
>http://behdad.org/
>
>
>On Wed, May 1, 2024 at 2:45 PM Mohammad Akhlaghi <moham...@akhlaghi.org>
>wrote:
>
>> Thanks Behdad,
>>
>> The problem is that I do not have root permissions on the system with the
>> faulty '/bin/sh': I cannot change '/bin/sh' and need to build my programs
>> with a custom shell.
>>
>> If the user specifies a wrong shell (not the default '/bin/sh'), it is
>> their own responsibility that it is POSIX-compatible. The same way that a
>> user can give a non-GNU Make executable to the GNUMAKE variable.
>>
>> In short, when a user changes defaults, it is their resposibility, not the
>> developer's. So no need to worry about that; the important thing is to give
>> users the freedon to customize for their custom environments (as GNU
>> Autoconf does for example; but Autoconf is not used in FreeType).
>>
>> Cheers,
>> Mohammad
>>
>>
>>
>> On May 1, 2024 10:25:54 PM GMT+02:00, Behdad Esfahbod <beh...@behdad.org>
>> wrote:
>>
>>> There's no guarantee that the user's shell is sh-compatible. autoconf
>>> really means sh here, because that's the shell the script is written for.
>>> Just symlink your favorite shell to sh then, if it's compatible.
>>>
>>> behdad
>>> http://behdad.org/
>>>
>>>
>>> On Wed, May 1, 2024 at 2:13 PM Mohammad Akhlaghi <moham...@akhlaghi.org>
>>> wrote:
>>>
>>>> Hi again,
>>>>
>>>> I was able to find a cleaner hack by running this command before the
>>>> './configure' script:
>>>>
>>>> export GNUMAKE="make SHELL=$SHELL"
>>>>
>>>> Afterwards, FreeType successfully ran with my desired shell.
>>>>
>>>> But generally, it would greatly help those building FreeType from source
>>>> if the configure script accounts for the 'SHELL' environment variable.
>>>>
>>>> Thanks a lot for all the nice work on FreeType,
>>>> Cheers,
>>>> Mohammad
>>>>
>>>> On 5/1/24 9:00 PM, Mohammad Akhlaghi wrote:
>>>> > Dear Freetype developers,
>>>> >
>>>> > I was trying to build FreeType from source and noticed that the
>>>> > './configure' script does not account for the 'SHELL' environment and
>>>> > will always use '/bin/sh'.
>>>> >
>>>> > Looking at the source of the './configure' script, I was able to fix
>>>> the
>>>> > problem by manually adding a 'SHELL=$SHELL' in line 135 of the
>>>> > './configure' script:
>>>> >
>>>> >
>>>> https://gitlab.freedesktop.org/freetype/freetype/-/blob/master/configure?ref_type=heads#L135
>>>> >
>>>> > Accounting for the user's given SHELL is common in many programs when
>>>> > building from source, so it would be good if you could account for it
>>>> in
>>>> > future versions of FreeType also.
>>>> >
>>>> > Cheers,
>>>> > Mohammad
>>>>
>>>>

Reply via email to