[Top][All Lists]

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

Re: Process to build standalone Emacs + deps in Windows

From: Phillip Lord
Subject: Re: Process to build standalone Emacs + deps in Windows
Date: Wed, 25 Mar 2020 22:34:18 +0000
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.90 (gnu/linux)

Juan José García-Ripoll <address@hidden> writes:

> Juan José García-Ripoll <address@hidden> writes:
>> I attach a patch file that changes build-dep-zips.py with the following
>> fixes
> As usual, the missing attachment below.

In reply to two of your emails, sorry:

+    if dependencies:
+        print(f"Package {pkg} depends on:")
+        for d in dependencies:
+            print(f" -> {d}")

I wouldn't add this. It's only useful some of the time, not in normal
usage, and anyway "pactree" does the same thing better.

def gather_deps(deps, arch, directory):

-    os.mkdir(arch)
+    if not os.path.exists(arch):
+        os.mkdir(arch)

This is wrong, I think. IIRC, my script crashes out at this point if
"arch" exists. This is needed, otherwise I could run build-dep-zips.py
twice at different times and both old and new dependencies would get
added. This forces cleanliness.

+    ## exclude files
+    excludes=['lib/*.a', # No files to link against
+              'lib/*/*.exe', # No hidden executables
+              'libexec/*/*.exe',
+              'include/*', # No development files
+              'lib/cmake/*',
+              'lib/pkgconfig/*',
+              'lib/python*/*',
+              'share/aclocal/*',
+              'share/gettext/*',
+              'share/doc/*', # No documentation from libraries
+              'share/gtk-doc/*',
+              'share/man/*',
+              'share/info/*',
+              'bin/*tiff*.exe', # No graphic manipulation tools
+              'bin/img*.exe',
+              'bin/*gif*.exe',
+              'bin/*jpg*.exe',
+              'bin/*jpeg*.exe',
+              'bin/*png*.exe',
+              'bin/*svg*.exe',
+              'bin/*xpm*.exe',
+              'bin/*icc.exe',
+              'bin/fax2*.exe',
+              'bin/pango-*.exe',
+              'bin/gdk-*.exe',
+              'bin/jasper.exe',
+              'bin/fc-*.exe', # No font configuration tools
+              'bin/gr2fonttest.exe',
+              'bin/hb-*.exe',
+              'bin/msg*.exe', # No tools to manipulate gettext catalogues
+              'bin/*gettext.exe'
+    ]

This list would need to go near the front, so we have a clean
configuration section. It also displays the key problem -- it's really
long and non obvious so a maintenance burden

If we just did a few big top level directories, would that not solve all
the problems.

+# The dependency extraction relies on an English version of pacman
+# We need to configure the locale to match the expectations
+if 'LANG' in os.environ:
+    os_lang = os.environ['LANG']
+    if (len(os_lang) > 2) and (os_lang[0:2] != 'en'):
+        os.environ['LANG']='en_US'

I am vaguely curious what it looks like in Spanish. I thought the output
was fairly mechanistic.

- Since we are pulling in compression utilities, we may just as well tell the
  configuration to compress the *.el files. Windows is the only platform where
  this does not happen

No, because I generate the no-deps version first, then add the deps. The
-no-deps version doesn't have the compression utilities. Of course, we
do not need the *.el files at all.

  a) Is there a way to test the resulting standalone distribution to
  verify that Emacs is running properly?

No. The only testing I do is to start Emacs and see if it starts and
looks okay (literally looks okay -- the icons can get broken). The lack
of a test suite that I can run is what keeps me cautious, especially as
I don't use this build. I wrote a robot testing framework for
org-drill.el; we could do something similar for testing this version of

  b) I realized that Cairo is pulled in as a dependency, but Emacs is
  built without support for Cairo. Is this intentional?

No, it will be a transitive dependency of something. pactree will


reply via email to

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