Skip to content
Snippets Groups Projects

Windows installer fixes

Merged Matt Harbison requested to merge topic/default/installer-build-fixes into branch/default
  1. Feb 22, 2025
    • Matt Harbison's avatar
      setup: drop the inaccessible `py2exehacked` code around distutils · e2c239dae5a2
      Matt Harbison authored
      The comment heavily implies, and experimenting confirms, that there's no
      `sys.real_prefix` in a venv on Python3.  I have no idea how the problems
      described would manifest, but nobody has complained for the several years of
      py3 releases build from a venv.  The experimenting was done with 6.9.2 and the
      TortoiseHg build script.
      e2c239dae5a2
  2. Feb 24, 2025
    • Matt Harbison's avatar
      docs: update the IRC channel reference in the Windows readme · 80ec613fea43
      Matt Harbison authored
      I noticed this when trying the Inno installer.
      80ec613fea43
    • Matt Harbison's avatar
      packaging: adapt `__version__.py` parsing for `setuptools_scm` output · d333e14477f1
      Matt Harbison authored
      The file is now generated by `setuptools_scm`, which stores values as strings
      with strong quotes.  This avoids the following failure at the end of the Inno
      installer build:
      
              <snip>
              creating installer
              Traceback (most recent call last):
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\packaging.py", line 70, in <module>
                  run()
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\packaging.py", line 62, in run
                  cli.main()
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\hgpackaging\cli.py", line 154, in main
                  args.func(**kwargs)
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\hgpackaging\cli.py", line 35, in build_inno
                  inno.build_with_pyoxidizer(
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\hgpackaging\inno.py", line 55, in build_with_pyoxidizer
                  build_installer(
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\hgpackaging\inno.py", line 146, in build_installer
                  version = read_version_py(source_dir)
                File "c:\Users\Matt\projects\mercurial\mercurial-devel\contrib\packaging\hgpackaging\util.py", line 188, in read_version_py
                  raise Exception('could not parse %s' % p)
              Exception: could not parse c:\Users\Matt\projects\mercurial\mercurial-devel\mercurial\__version__.py
      
      Note that non-tagged builds end up with complex version strings, and include
      characters that WiX rejects.  That's probably fine- we don't do nightly or other
      non-tagged builds for installers.
      
      Also note that while the Inno installer is capable of using this version string
      as part of the installer, the WiX installer is not for some reason.  That
      installer needs to be built with `--version VERSION` to inject the version into
      the installer metadata and the filename.
      d333e14477f1
    • Matt Harbison's avatar
      contrib: add modern `setuptools` and `setuptools_scm` to the packaging venv · 0e2be2abd963
      Matt Harbison authored
      With `py -3.9 contrib/packaging/packaging.py wix --pyoxidizer-target x86_64-pc-windows-msvc`,
      there is an immediate failure after building the venv (3.9.13 has `setuptools`
      58.1.0):
      
          ModuleNotFoundError: No module named 'setuptools.command.build'
      
      With that fixed, the same command then fails immediately with this error:
      
          Couldn't import setuptools_scm (direct call of setup.py?)
      
      Unfortunately, referencing `setuptools` in the requirements file needs
      `--allow-unsafe` to avoid a warning about not pinning `setuptools`.  However,
      the same warning happens if `setuptools` is pinned to a specific revision, so I
      have no idea what it is complaining about.  It's a separate venv that is only
      used for packaging, so we can fix it if it becomes a problem in the future.
      
      Interestingly, the Inno installer build doesn't fail immediately, and I can see
      it installing `setuptools` and `setuptools_scm` in the wall of text it emits.
      Eventually it does fail with the same errors without this change.
      0e2be2abd963
Loading