* (macOS) PyInstaller now attempts to preserve the ``.framework`` bundles when
collecting shared libraries from them. If a shared library is to be collected
from a ``.framework`` bundle, the ``Info.plist`` is also automatically
collected. The ``.framework`` bundle collection code also attempts to fix the
bundles' structure to conform to code-signing requirements (i.e., creation of
the ``Current`` symbolic link in the ``Versions`` directory, and top-level
contents being symbolic links that point to counterparts in the
``Versions/Current`` directory). Note that other resources (for example from
``Resources`` or ``Helpers`` directories) still need to be explicitly
collected by hooks. (:issue:`7619`)
* (macOS) The file relocation mechanism in ``BUNDLE`` that generates macOS .app
bundles has been completely redesigned. All data files are now placed into
directory structure rooted in ``Contents/Resources``, all shared libraries (as
well as nested .framework bundles) are placed into directory structure rooted
in ``Contents/Frameworks``, and only the the program executable is placed into
the ``Contents/MacOS`` directory. The contents of ``Contents/Resources`` and
``Contents/Frameworks`` directories are cross-linked via symlinks between the
two directory trees in order to maintain illusion of mixed-content directories
(in both directory trees). The cross-linking is done at either file level or
(sub)directory level, depending on the content type of a (sub)directory. For
directories in ``Contents/Frameworks`` that contain a dot in the name, a
work-around is automatically applied: the directory is created with a modified
name that does not include the dot, and next to it, a symbolic link is created
under the original name and pointing to the directory with modified name.
(:issue:`7619`)
* (non-Windows) PyInstaller now attempts to preserve the parent directory
structure for shared libraries discovered and collected by the binary
dependency analysis, instead of automatically collecting them into the
top-level application directory. Due to library search path assumptions
made in various places, symbolic links to collected libraries are created
in the top-level application directory. This complements earlier work
(:issue:`7028`) that implemented DLL parent directory structure
preservation on Windows. (:issue:`7619`)
* (Windows) Add an option to hide or minimize the console window in
console-enabled applications, but only if the program's process owns
the console window (i.e., the program was not launched from an existing
console window). (:issue:`7729`)
* (Windows) The :option:`--add-data` and :option:`--add-binary` options accept
the POSIX syntax of ``--add-data=source:dest`` rather than
``--add-data=source;dest``. The latter will continue to work on Windows to
avoid breaking backwards compatibility but is discouraged in favour of the now
cross platform format. (:issue:`6724`)
* Add automatic binary vs. data file (re)classification step to the analysis
process. PyInstaller now inspects all files passed to ``Analysis`` via
</tr></table>
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Updates the requirements on pyinstaller to permit the latest version.
Release notes
Sourced from pyinstaller's releases.
Changelog
Sourced from pyinstaller's changelog.
... (truncated)
Commits
7001def
Release v6.0.0. [skip ci]87cda61
building: fix executable-bit preservation for collected shell scriptsd1adaed
tests: add a test with bundled shell script8bbc4f7
bootloader: onefile: set executable bit only on extracted binaries3bd5160
building: useshutil.copyfile
when copying files into onedir build3b4099b
Cherry pick v5 release commits into develop. [skip ci]962ac8f
hookutils: remove requirements_for_package984545a
hookutils: adjust behavior of collect_data_files with include_py_filesdeb6613
hookutils: have collect_all look up the dist from package namee4e6ea3
hookutils: implement replacement for is_module_satisfiesDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show