emacs-devel
[Top][All Lists]
Advanced

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

Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed


From: Corwin Brust
Subject: Re: Native compilation on Windows, was Re: Bootstrap Compilation Speed
Date: Wed, 2 Feb 2022 17:28:01 -0600

On Wed, Feb 2, 2022 at 4:07 PM Phillip Lord <phillip.lord@russet.org.uk> wrote:
>
> Corwin Brust <corwin@bru.st> writes:
>
> > On Mon, Jan 31, 2022 at 9:58 AM H. Dieter Wilhelm
> > <dieter@duenenhof-wilhelm.de> wrote:
> >>
> >> Currently we have 19 DLLs in the /bin folder (28.0.91), whereas 27.2 has
> >> 77 DLLs!  Corwin could you please check your build configuration, maybe
> >> together with Phil?  (I'm sorry, I'm still of no help here.)
> >
> > Excellent observation.
> >
> > I hope Phil will chime-in with suggestions of what I may have
> > missed/broken.  I'll investigate also, obviously, and others'
> > kibitzing most welcome too.
>
>
> Strange. What are the differences?

Firstly:  I'm not too sure yet.  I still need to download the Emacs
27.2 zip from the official source and do a direct "gap" comparison.

Overall, I'm leaning toward ditching automation of dependency
detection in favor of adding a separate file.   All efforts to
automating dependency recursion seem britle, ultimating causing more
work than they save us as we have to track down one mystery after
another. The proposed new file will
 - exhaustively lists each DLL we ship
 - be referenced in by documentation (such as README.W32)
 - be loaded by scripts, e.g. build-dep-zips.py
 - have additional "columns" to name the msys package, and
 - document why the dependency is required.

I have attached a txt file which is the complete list of what I would
start out including in that file.  Obviously, it's missing the msys
package names and has no commentary, so far.   I would probably call
it admin/nt/dist-build/deps.txt but I don't feel strongly about the
filename.

WDYT?

Meanwhile, in mesier news:

I wrote a perl script (also attached but don't bother) to find second
(and etc) order dependances using LDD that I believe should have been
(but have not been) getting pulled into the build.  I thought that the
msys installation folder path change Dieter caught would sort this,
but the numbers seem to don't add up (yet), probably because of the
undependability of the msys dependency checking that you mentioned.

I thought this would get me up to the same count (77) as Dieter reported, but:

  $ ls *.dll | wc -l
  19

  $ perl ../../../find-deps.pl | xargs -I '{}' cp '{}' .
  searched: 19, found: 392, of which 43 are missing in
/c/Users/corwi/emacs-build/install/emacs-28.0.91/bin

  $ ls *.dll | wc -l
  62

Note, these are the 62 DLLs listed in the attached textt file.

I also used this rather henus string of pipelined commands to
"cross-check" for missing dependencies and only came up with one,
which appears to be an optional dependency of harfbuzz:

  $  find ./ -name '*.dll' -print0 | xargs -0 -I '{}' cygcheck '{}'
2>&1 | grep 'could not' | cut -d ' ' -f 6 | sort | uniq
  libicuuc69.dll

Finally, I double-checked using an even more rediculous set of
pipeline commands. seemingly confirming everything the prior finds are
in the bin directory:

  $ find ./ -name '*.dll' -print0 | xargs -0 -I '{}' cygcheck '{}'
2>&1 | grep -v 'could not' | cut -d ' ' -f 6 | sort | uniq | xargs -0
-L1 echo | xargs -0 cygpath | perl -npe 's|c:|/c|g' | xargs -L1
basename | xargs ls >/dev/null

All this has me convinced some DLLs that shipped with Emacs 27.2
aren't findable as dependencies of anything we currently need for
Emacs 28, but not why.  And that leads me to the suggestion, above:  I
think we should hard-code the DLLs along with their source packages.
We can consider automatically generating/updating the deps file once
we get that far.

Warmest regards,
Corwin

Attachment: dll-list.txt
Description: Text document

Attachment: find-deps.pl
Description: Binary data


reply via email to

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