I know all that. :) Check out builds/unix/configure.ac
behdad
http://behdad.org/


On Wed, May 1, 2024 at 4:40 PM Mohammad Akhlaghi <moham...@akhlaghi.org>
wrote:

> I had set the 'SHELL' environment variable but still '/bin/sh' was used.
> The only way I could pass my SHELL to the Make command within the
> configure script was through the non-standard hack I mentioned before:
> GNUMAKE="make SHELL=$SHELL"
>
> Autoconf generates the './configure' script automatically though a
> 'configure.ac' file. But I don't see any 'configure.ac' in FreeType's
> source. For example here is the source code of a project that I maintain
> which uses Autoconf:
>
> https://git.savannah.gnu.org/cgit/gnuastro.git/tree
>
> The './configure' script is generated automatically from 'configure.ac'
> when building the tarball (since the configure script is automatically
> generated, we don't keep it under version control).
>
> Cheers,
> Mohammad
>
> On 5/1/24 11:17 PM, Behdad Esfahbod wrote:
> > Scratch that.
> >
> > Where is it exactly failing? On Unix, the build system is essentially
> > autoconf, so it should respect SHELL as you suggest.
> >
> > behdad
> > http://behdad.org/
> >
> >
> > On Wed, May 1, 2024 at 3:15 PM Behdad Esfahbod <beh...@behdad.org>
> wrote:
> >
> >> Can you check if also setting CONFIG_SHELL helps?
> >>
> >> behdad
> >> http://behdad.org/
> >>
> >>
> >> On Wed, May 1, 2024 at 3:06 PM Mohammad Akhlaghi <moham...@akhlaghi.org
> >
> >> wrote:
> >>
> >>> 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