emacs-devel
[Top][All Lists]
Advanced

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

Re: Emacs 27.1 Windows Binaries -- testing wanted


From: phillip . lord
Subject: Re: Emacs 27.1 Windows Binaries -- testing wanted
Date: Sat, 22 Aug 2020 16:13:52 +0100
User-agent: Roundcube Webmail/1.4.6

On 2020-08-22 15:35, Eli Zaretskii wrote:
Date: Sat, 22 Aug 2020 14:53:15 +0100
From: phillip.lord@russet.org.uk
Cc: emacs-devel@gnu.org

>> If I think back to the bugs with Emacs binary releases, this would
>> have
>> stopped only a few: harfbuzz and svg failure in this release. It would
>> not have prevented missing dependencies (I have missed all of
>> harfbuzz,
>> lcms and libjansson till late in the day), nor the failed optimization
>> or stripping.
>
> I don't understand this, either.  If the dependencies of HarfBuzz are
> not installed, then the HarfBuzz font backend will not be available,
> and the way I suggested for testing its availability will tell you
> HarfBuzz doesn't work, which is AFAIU what you wanted.  And the same
> with any other DLLs: if their dependencies are not available, they
> will fail to load when the feature test runs, and the test will fail.

It would work if, when harfbuzz was installed w32-features was updated, but not if it wasn't. As the harfbuzz merge didn't update build-deps.zh
which it arguable should have, then why would a test file be updated.

Then I don't understand what you said in the quoted part above: you
seemed to be saying that you could have detected the absence of
HarfBuzz, but not of its dependencies. Which is why I wrote that
having HarfBuzz without the dependencies will cause loading HarfBuzz
to fail, and Emacs will think that HarfBuzz is not available.  It
doesn't matter whether the HarfBuzz DLL or its dependency DLLs are
missing: in both cases the HarfBuzz DLL will fail to load.

IOW, I thought you were describing the situation where w32-features
_was_ updated to add a test for HarfBuzz.  If not, then how could you
have discovered that the DLL itself is not in the bundle?


So, there have been two problems with harfbuzz. First, when harfbuzz was installed, build-deps.py was not updated. A test system would not have picked this up. But someone complained about it in pre-release or snapshot builds. After that I added harfbuzz to build-deps.py, but it wasn't actually running. Iff I had added a test to w32-feature.el for harfbuzz, which this would have been discovered earlier.


> No, our tests use skip-unless to avoid running tests that need
> features or programs which are unavailable.
>
>> json parsing is tested by make check and it will not work on msys2
>> if the dependencies are not installed.
>
> I didn't look into this, but if json testing fails instead of skipping
> all the tests, that's a bug that should be fixed.

I think you are correct about all of these. In either case, the tests
will not pass!

Skipping a test and failing a test is not the same.  You are looking
for failures: tests that should have succeeded, but didn't.

Indeed not. But, skipping a test because something is not compiled in is wrong iff the feature is supposed to be compiled in. Running "make check" on my windows build machine will only pick up errors with json parsing if libjansson was installed. It would nice to have a "make check" which assumes that all standard features (appropriate for the platform) are installed and fails (not skips).


> That's not what worries me.  What worries me is the fact that a file
> distributed as part of the Lisp libraries will have its contents
> depend on the last release you personally did, with whatever quirks
> that required from the tests in that file.  It doesn't sound right to
> me.

Not sure I understand this. A lisp library with "w32-" in it's name will have behaviour which reflects how the official binaries are supposed to behave. If this worries you, as I say, I can add it to `data-directory'
instead. But, it has to be in the distribution.

I thought we were talking about a feature that could serve any end
user, including those who build their own Emacs, not just the person
who produces the official binaries. If this is only about the
official binaries, then why does it have to be under lisp/?  Where you
build the binaries, you always have the admin/ directory, albeit not
in the distribution zip, so how can its being in admin/ be a problem
for you?  You should be able to invoke the test file from any
directory on your system, not just from the unpacked archive.

Because I have multiple admin directories, as I build both snapshot and release binaries. I do this by having a git worktree for emacs-27 and another for master. By putting the lisp test file in the distribution, I can guarantee that it is the right one.

I am guessing that I would be the main user of this, and possibly the only user. It might be useful for anyone building Emacs binaries, however, so that they could check that their binary distribution has all of the standard features compiled in (or dynamically loadable). But this would require more logic as the standard features are not quite the same on all platforms, I think. It might also be useful for if someone reports that a feature is missing from a windows distribution that they have downloaded as it would provide a standard way of checking.

Regardless, these are secondary issues. Right now, I want something that means I can check whether I have created a regression of the svg or harfbuzz issues. Without this, I am going to be very wary of trying alternative mechanisms for identifying dependencies; I still think that the windows binary distribution is unnecessarily complicated, based on the msys2 dependencies as given.

Phil





reply via email to

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