Make the renderers plugin directory a package

The pyinstaller specs gather plugin modules two different ways.  The .py
files are shipped verbatim by collect_data_files(include_py_files=True),
while collect_submodules() supplies the hiddenimports that pyinstaller
actually analyses for dependencies.  The first walks the filesystem, the
second walks pkgutil, and pkgutil skips a directory with no __init__.py.

volatility3/framework/plugins/renderers has been such a directory since
the arrow and parquet renderers moved into it, so parquet_renderer.py was
copied into the binary but never analysed, and the pyarrow it imports was
left out.  The frozen build still advertised the arrow and parquet
renderers, because the framework finds them at runtime with os.walk, and
then died with an unhandled RuntimeError when either was selected.

Adding the __init__.py makes pkgutil descend into the directory, which is
all collect_submodules needs, and matches every other plugin subpackage.
Both specs use the same collect_submodules line, so neither needs editing.
This commit is contained in:
Hmkz0x00
2026-08-13 15:33:55 +05:30
parent fffd844b8e
commit 34c62a7b0d
@@ -0,0 +1,8 @@
# This file is Copyright 2025 Volatility Foundation and licensed under the Volatility Software License 1.0
# which is available at https://www.volatilityfoundation.org/license/vsl-v1.0
#
"""All core renderer plugins.
These modules should only be imported from volatility3.plugins NOT
volatility3.framework.plugins
"""