Owr actions update (#19)
* Go for Broke * Let it fire * Add PipLine * Create the dir if it doesn't exist * Install Setuptools * Track Test Action's files * Fix Calling Job * Track Build Action files * Install Distutils, rename filenames * Fix Fail conditions * Make Build scripts smarter * Add file * Concat DLLs lists * Try to fail if Error DLLs * Try to make the fail smarter * Moar verbosity * Print the stuff first * Print outputs objects * See if this skips failure * Use py instead * Print error list * Don't ValueError * Try checking a different way * Try something else * Bleh, spell filename correctly * Update excluded_dlls.json * Ugh, gotta compare old to new somehow * Compare to old list * Condense build script * Moar verbosity * Update the global version * Update Excluded DLLs list * Actually use the bad DLLs list * Make a version number * Fix version number building * Fix version number building again * Fix Diagnostics * Try REST API stuff * Try REST API again * Moar REST * await * Get SHA * Try it all together * Del test workflow * Add Perms * Use a Token * Try this Token * Try different Token * Try different Token * Create App Version earlier * See this error again * Don't fail if App Version not made yet * Use New Secret * Print whole response * Documentation for Tagger * Update CI Instructions * Update CI * List References * Find latest tag Fix App Version getter * Fix commas * Check returned data * Update Build Script * Fix substring * Fix Git tag * Fix tag again * Visual indicators * Use encoding * Remove an indicator * Update CI * Update Project Name * PyInstaller Spec Template file * Update Build Script * Fix Tagger * Update CI * Download AppVersion during build * Test job can fail * Upload Logs instead of printing them * Change from Reusable Workflow to Action * Change ref to token * Compare to string * Use PAT * Use String literal * Remove Reusable Workflow * Update CI Scripts * Go for Broke * Let it fire * Add PipLine * Create the dir if it doesn't exist * Install Setuptools * Track Test Action's files * Fix Calling Job * Track Build Action files * Install Distutils, rename filenames * Fix Fail conditions * Make Build scripts smarter * Add file * Concat DLLs lists * Try to fail if Error DLLs * Try to make the fail smarter * Moar verbosity * Print the stuff first * Print outputs objects * See if this skips failure * Use py instead * Print error list * Don't ValueError * Try checking a different way * Try something else * Bleh, spell filename correctly * Update excluded_dlls.json * Ugh, gotta compare old to new somehow * Compare to old list * Condense build script * Moar verbosity * Update the global version * Update Excluded DLLs list * Actually use the bad DLLs list * Make a version number * Fix version number building * Fix version number building again * Fix Diagnostics * Try REST API stuff * Try REST API again * Moar REST * await * Get SHA * Try it all together * Del test workflow * Add Perms * Use a Token * Try this Token * Try different Token * Try different Token * Create App Version earlier * See this error again * Don't fail if App Version not made yet * Use New Secret * Print whole response * Documentation for Tagger * Update CI Instructions * Update CI * List References * Find latest tag Fix App Version getter * Fix commas * Check returned data * Update Build Script * Fix substring * Fix Git tag * Fix tag again * Visual indicators * Use encoding * Remove an indicator * Update CI * Update Project Name * PyInstaller Spec Template file * Update Build Script * Fix Tagger * Update CI * Download AppVersion during build * Test job can fail * Upload Logs instead of printing them * Change from Reusable Workflow to Action * Change ref to token * Compare to string * Use PAT * Use String literal * Remove Reusable Workflow * Update CI Scripts --------- Co-authored-by: Minnie A. Trethewey (Mike) <minnietrethewey@gmail.com>
This commit is contained in:
98
source/Template.spec
Normal file
98
source/Template.spec
Normal file
@@ -0,0 +1,98 @@
|
||||
# -*- mode: python -*-
|
||||
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from json.decoder import JSONDecodeError
|
||||
from PyInstaller.utils.hooks import collect_submodules
|
||||
|
||||
block_cipher = None
|
||||
console = False # <--- change this to True to enable command prompt when the app runs
|
||||
|
||||
if sys.platform.find("mac") or sys.platform.find("osx"):
|
||||
console = True
|
||||
|
||||
BINARY_SLUG = "<BINARY_SLUG>"
|
||||
|
||||
|
||||
def recurse_for_py_files(names_so_far):
|
||||
# get py files
|
||||
returnvalue = []
|
||||
for name in os.listdir(os.path.join(*names_so_far)):
|
||||
# ignore __pycache__
|
||||
if name != "__pycache__":
|
||||
subdir_name = os.path.join(*names_so_far, name)
|
||||
if os.path.isdir(subdir_name):
|
||||
new_name_list = names_so_far + [name]
|
||||
for filename in os.listdir(os.path.join(*new_name_list)):
|
||||
base_file, file_extension = os.path.splitext(filename)
|
||||
# if it's a .py
|
||||
if file_extension == ".py":
|
||||
new_name = ".".join(new_name_list+[base_file])
|
||||
if not new_name in returnvalue:
|
||||
returnvalue.append(new_name)
|
||||
returnvalue.extend(recurse_for_py_files(new_name_list))
|
||||
return returnvalue
|
||||
|
||||
|
||||
hiddenimports = recurse_for_py_files(["source"])
|
||||
for hidden in (collect_submodules("pkg_resources")):
|
||||
hiddenimports.append(hidden)
|
||||
|
||||
a = Analysis(
|
||||
[f"../{BINARY_SLUG}.py"],
|
||||
pathex=[],
|
||||
binaries=[],
|
||||
datas=[('../data/', 'data/')],
|
||||
hiddenimports=hiddenimports,
|
||||
hookspath=[],
|
||||
runtime_hooks=[],
|
||||
excludes=[],
|
||||
win_no_prefer_redirects=False,
|
||||
win_private_assemblies=False,
|
||||
cipher=block_cipher,
|
||||
noarchive=False
|
||||
)
|
||||
|
||||
# https://stackoverflow.com/questions/17034434/how-to-remove-exclude-modules-and-files-from-pyinstaller
|
||||
excluded_binaries = [
|
||||
'mfc140u.dll',
|
||||
'msvcp140.dll',
|
||||
'ucrtbase.dll',
|
||||
'VCRUNTIME140.dll'
|
||||
]
|
||||
|
||||
# win is temperamental
|
||||
with open(os.path.join(".","resources","app","meta","manifests","excluded_dlls.json")) as dllsManifest:
|
||||
dlls = []
|
||||
try:
|
||||
dlls = json.load(dllsManifest)
|
||||
except JSONDecodeError as e:
|
||||
raise ValueError("Windows DLLs manifest malformed!")
|
||||
for dll in dlls:
|
||||
for submod in ["core", "crt"]:
|
||||
for ver in ["1-1-0", "1-1-1", "1-2-0", "2-1-0"]:
|
||||
excluded_binaries.append(f"api-ms-win-{submod}-{dll}-l{ver}.dll")
|
||||
|
||||
a.binaries = TOC([x for x in a.binaries if x[0] not in excluded_binaries])
|
||||
|
||||
pyz = PYZ(
|
||||
a.pure,
|
||||
a.zipped_data,
|
||||
cipher=block_cipher
|
||||
)
|
||||
exe = EXE(
|
||||
pyz,
|
||||
a.scripts,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
[],
|
||||
name=BINARY_SLUG,
|
||||
debug=False,
|
||||
bootloader_ignore_signals=False,
|
||||
strip=False,
|
||||
upx=True,
|
||||
runtime_tmpdir=None,
|
||||
console=console
|
||||
)
|
||||
Reference in New Issue
Block a user