Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
- os: windows-latest
TARGET: windows
CMD_BUILD: >
pyinstaller --onefile cli.py -n cli --additional-hooks-dir=hooks --collect-datas reuse --collect-datas fosslight_util --copy-metadata Jinja2 --add-binary "LICENSE;LICENSES" --add-binary "LICENSES\LicenseRef-3rd_party_licenses.txt;LICENSES" &&
pyinstaller cli.spec &&
move dist/cli.exe fosslight_prechecker_windows.exe
OUT_FILE_NAME: fosslight_prechecker_windows.exe
ASSET_MIME: application/vnd.microsoft.portable-executable
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
TARGET: windows
CMD_BUILD: |
tox -e windows
pyinstaller --onefile cli.py -n cli --additional-hooks-dir=hooks --collect-datas reuse --collect-datas fosslight_util --add-data="src\fosslight_prechecker\templates\default_template.jinja2;." &&
pyinstaller cli.spec &&
move dist\cli.exe fosslight_prechecker_windows.exe && .\fosslight_prechecker_windows.exe
OUT_FILE_NAME: fosslight_prechecker_windows.exe
ASSET_MIME: application/vnd.microsoft.portable-executable
Expand Down
4 changes: 4 additions & 0 deletions .reuse/dep5
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,7 @@ License: GPL-3.0-only
Files: .coderabbit.yaml
Copyright: 2026 LG Electronics
License: GPL-3.0-only

Files: cli.spec
Copyright: 2026 LG Electronics
License: GPL-3.0-only
77 changes: 77 additions & 0 deletions cli.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# -*- mode: python ; coding: utf-8 -*-

from PyInstaller.utils.hooks import collect_data_files, copy_metadata, collect_all, collect_submodules

# Collect data files from packages
datas = []
datas += collect_data_files('reuse')
datas += collect_data_files('fosslight_util')
datas += copy_metadata('Jinja2')

# Collect chardet and binaryornot to fix mypyc module issues
datas_chardet, binaries_chardet, hiddenimports_chardet = collect_all('chardet')
datas += datas_chardet

datas_binaryornot, binaries_binaryornot, hiddenimports_binaryornot = collect_all('binaryornot')
datas += datas_binaryornot

# Add template file
datas += [('src/fosslight_prechecker/templates/default_template.jinja2', '.')]

# Add license files
datas += [('LICENSE', 'LICENSES')]
datas += [('LICENSES/LicenseRef-3rd_party_licenses.txt', 'LICENSES')]

# Collect binaries
binaries = []
binaries += binaries_chardet
binaries += binaries_binaryornot

# Collect hidden imports including all chardet submodules
hiddenimports = ['pkg_resources.extern']
hiddenimports += hiddenimports_chardet
hiddenimports += hiddenimports_binaryornot
hiddenimports += collect_submodules('chardet')
hiddenimports += collect_submodules('binaryornot')
hiddenimports += [
'chardet.universaldetector',
'chardet.detector',
'chardet.pipeline',
'chardet.pipeline.orchestrator',
]

a = Analysis(
['cli.py'],
pathex=[],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
hookspath=['hooks'],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='cli',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
13 changes: 13 additions & 0 deletions hooks/hook-fosslight_prechecker.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,16 @@
from PyInstaller.utils.hooks import collect_all

datas, binaries, hiddenimports = collect_all('fosslight_prechecker')

# Collect data files from binaryornot package
datas_binaryornot, binaries_binaryornot, hiddenimports_binaryornot = collect_all('binaryornot')
datas += datas_binaryornot
binaries += binaries_binaryornot
hiddenimports += hiddenimports_binaryornot

# Collect data files from chardet package (fixes mypyc module issues)
datas_chardet, binaries_chardet, hiddenimports_chardet = collect_all('chardet')
datas += datas_chardet
binaries += binaries_chardet
hiddenimports += hiddenimports_chardet

1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
python-debian==0.1.40
binaryornot
chardet<5.0.0
requests
reuse==1.1.2
PyYAML
Expand Down
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ exclude = .tox/*

[pytest]
filterwarnings = ignore::DeprecationWarning
norecursedirs = build dist .tox .git __pycache__

[testenv:windows]
commands =
Expand Down