emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [feature/native-comp] breakage on build


From: Óscar Fuentes
Subject: Re: [feature/native-comp] breakage on build
Date: Sun, 07 Feb 2021 03:52:56 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Phillip Lord <phillip.lord@russet.org.uk> writes:

> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>> Phillip Lord <phillip.lord@russet.org.uk> writes:
>>
>>> It's attractive in the first instance to conflate these three. We
>>> could install all the dependencies for Emacs and all the tools we want
>>> using pacman. But, I think this is wrong, because Emacs itself (i.e.
>>> emacs.exe) is a fixed point in time; it needs to have a fixed set of
>>> dependencies and they should not update for a given emacs.exe. This
>>> fits poorly with the msys2 rolling release. So, problem one requires
>>> us to extract dependencies from a given release of msys2 then freeze
>>> them.
>>
>> Agreed, MSYS2 is a fat beast to depend on, but it provides a truckload
>> of functionality and saves you from dealing with a tangled hell of
>> dependencies. It is reasonable to expect that those dependencies will
>> grow and become more complicated on the future (native-comp is a glaring
>> example.)
>
>
> Well I agree. But "fat beast" is an understatement. If I install msys2,
> Emacs and all the dependencies, it comes in at nearly 2Gb on disk. The
> install takes around half an hour on my machine (and only that fast
> because I turn of the Windows antimalware service).

The dominating factor on my experience is the download time. Telling
pacman to use the right mirror solves this. (See
/etc/pacman.d/mirrorlist.* )

> It also includes a
> pile of stuff that the user might not want (i.e. python or ruby) because
> they have their own installation already.

There are some serious python buffs among the MSYS2 maintainers and it
is listed as a dependency of anything that could remotely use it, but
ruby is not in my installs (searched for ruby.*) and they certainly
contain much more than Emacs needs, although I don't install all
optional dependencies.

Maybe your dependency list would benefit from some review. Just show it.

> So I don't think we can avoid
> the necessity for an Emacs with dependencies. native-comp is, indeed, a
> glaring example, but it's also the only one. Adding the other
> dependencies that have arisen (jansson, harfbuzz and gmp) has been
> straightforward enough.
>
>
> But, you are correct, a value add with all the tools installation of
> Emacs might as well just be an msys2 install running. I believe you
> already have already done that work! Or a powershell script that pulls
> down msys2 installs it and dependencies and then pulls down
> Emacs-no-deps over the top might be the way to go.

I have a trivial bash script that installs several packages. I use it
after a fresh MSYS2 install and then I'm ready to go. Downloading MSYS2,
installing it, running the script... it all takes about 30 seconds of
attended work. It's that simple.

>>> At the moment, number one is working, number two I think needs to be
>>> solved as lots of people will want native comp on windows, and number
>>> three is (and may remain) aspirational.
>>
>> The goal you are pursuing is difficult enough and, IMHO, you are
>> complicating it further by adding (somewhat fuzzy) requirements that lie
>> beyond the point that seems reasonable to me, speaking as an Emacs user.
>
>
> Maybe. What I see is people using Emacs and getting their spelling wrong
> because there is no spell checker.

This Emacs has an spell checker and I get spelling wrong, as well as
grammar and everything else :-)

The route of creating an MSYS2 binary package (well, two, if you wish to
support i686) is as easy as it gets: create the package (I can help you
with it if the current PKGBUILD for mingw-w64-emacs-git in
https://github.com/msys2/MINGW-packages-dev/tree/master/mingw-w64-emacs-git
needs work). Then instruct the users to install MSYS2, download your
binary package and install it with pacman (copy and paste a command on
the MSYS2 shell). The most difficult step is to create a desktop icon
for runemacs.exe, which can be manually accomplished on the usual way
(and we used to have a tool for that, IIRC). That's about two minutes of
attended work.

At that point, you solved the dependencies problem, the source code
availability problem (for the dependencies) and delegated lots of
maintenance work.

But we need /mingw64/bin (its native equivalent, actually) on exec-path
for the .exe dependencies to work. We can tell the users to modify their
.emacs.el, but it would be much nicer if Emacs did that itself.

Oh, and we still miss some dependencies, like `find'. But that can be
added too, once we (the MSYS2 contributors) check that it will not break
other things.

Oh-2, currently MSYS2's Emacs does not install some things (e/ctags,
IIRC) because there are better alternatives on the repository.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]