Subject: 29.1; [windows][patch] build-deps-zips.py is broken and hard to maintain
From: Corwin Brust <[email-masked]>
To: [email-masked]
Date: Thu, 10 Aug 2023 07:40:48 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

The script nt/admin/dist-build/build-deps-zips.py needs help.  This is
the script that I use to collect and package dependencies and sources
for dependencies on Microsoft Windows, as part of releasing Emacs
binaries for Windows.  It is a python script that runs under MSYS2
MSYS console (not MinGW).

Neither the version currently in the emacs-29 nor in the master
branches will work for the given Emacs version without changes.  The
attached patch would make emacs-29 match what I am using locally.

In addition to other changes, the patch reflects my current "transformation map"
approach to deal with MSYS source package paths change, which seems to
be happening quite a bit upstream.

In case it may not be clear, my process is to run the script
after updating local MSYS packages that are dependencies (optional or
no), or edit and run it when Emacs' dependencies have changed.

The patch reflects the script as I have been using it during the Emacs
29 release process.  I'm sure there's general room for improvement
(editing this script is literally my only python coding credit), I'm
opening this bug report because bug#65188 (a packaging error preventing
WEBP from working for people using the Windows binaries) has called
attention to the importance of having additional eyes on build tooling
(especially when it so far contains hard-coded lists of upstream deps).

In GNU Emacs 29.1 (build 2, x86_64-w64-mingw32) of 2023-08-02 built on
 AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.19045
System Description: Microsoft Windows 10 Home (v10.0.2009.19045.3324)

Configured using:
 'configure --with-modules --without-dbus --with-native-compilation=aot
 --without-compress-install --with-tree-sitter CFLAGS=-O2'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB

Important settings:
  value of $LANG: ENU
  locale-coding-system: cp1252

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message mailcap yank-media puny dired
dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068
epg-config gnus-util text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra
help-mode bytecomp byte-compile cl-lib sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils rmc iso-transl tooltip cconv
eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win
w32-vars term/common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors
frame minibuffer nadvice seq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help abbrev obarray oclosure
cl-preloaded button loaddefs theme-loaddefs faces cus-face macroexp
files window text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget keymap hashtable-print-readable backquote
threads w32notify w32 lcms2 multi-tty make-network-process
native-compile emacs)

Memory information:
((conses 16 80415 13861)
 (symbols 48 7175 0)
 (strings 32 21269 1764)
 (string-bytes 1 617449)
 (vectors 16 16398)
 (vector-slots 8 334731 15794)
 (floats 8 29 46)
 (intervals 56 238 0)
 (buffers 984 10))