From de8a0a21b2a96ca62556e1508fbd2de0cfe83b83 Mon Sep 17 00:00:00 2001 From: Andrew Senetar Date: Tue, 31 Dec 2019 20:28:35 -0600 Subject: [PATCH] Update Packaging - Add changes from OSX build to local hscommon/build.py - Update package.py & srcpkg.sh - Remove invalid submodule references - Update srcpkg.sh to use xz - Update package.py pyinstaller configuration - Call PyInstaller inline - Add --noconfirm option to be more script friendly - Add UCRT Redist location to path should fix #545 as now all the dlls are included --- core/tests/engine_test.py | 12 ++++++++++-- hscommon/build.py | 15 +++++++++++++-- package.py | 38 ++++++++++++++++++++++---------------- scripts/srcpkg.sh | 6 +++--- 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/core/tests/engine_test.py b/core/tests/engine_test.py index b39ae0af..b36378ce 100644 --- a/core/tests/engine_test.py +++ b/core/tests/engine_test.py @@ -393,7 +393,11 @@ class TestCaseGetMatches: eq_(getmatches([]), []) def test_simple(self): - itemList = [NamedObject("foo bar"), NamedObject("bar bleh"), NamedObject("a b c foo")] + itemList = [ + NamedObject("foo bar"), + NamedObject("bar bleh"), + NamedObject("a b c foo"), + ] r = getmatches(itemList) eq_(2, len(r)) m = first(m for m in r if m.percentage == 50) # "foo bar" and "bar bleh" @@ -514,7 +518,11 @@ class TestCaseGetMatches: sys.setrecursionlimit(1000) def test_min_match_percentage(self): - itemList = [NamedObject("foo bar"), NamedObject("bar bleh"), NamedObject("a b c foo")] + itemList = [ + NamedObject("foo bar"), + NamedObject("bar bleh"), + NamedObject("a b c foo"), + ] r = getmatches(itemList, min_match_percentage=50) eq_(1, len(r)) # Only "foo bar" / "bar bleh" should match diff --git a/hscommon/build.py b/hscommon/build.py index 0ff9bcaf..d7a90a9f 100644 --- a/hscommon/build.py +++ b/hscommon/build.py @@ -480,7 +480,10 @@ def copy_embeddable_python_dylib(dst): def collect_stdlib_dependencies(script, dest_folder, extra_deps=None): sysprefix = sys.prefix # could be a virtualenv - real_lib_prefix = sysconfig.get_config_var("LIBDEST") + basesysprefix = sys.base_prefix # seems to be path to non-virtual sys + real_lib_prefix = sysconfig.get_config_var( + "LIBDEST" + ) # leaving this in case it is neede def is_stdlib_path(path): # A module path is only a stdlib path if it's in either sys.prefix or @@ -490,7 +493,11 @@ def collect_stdlib_dependencies(script, dest_folder, extra_deps=None): return False if "site-package" in path: return False - if not (path.startswith(sysprefix) or path.startswith(real_lib_prefix)): + if not ( + path.startswith(sysprefix) + or path.startswith(basesysprefix) + or path.startswith(real_lib_prefix) + ): return False return True @@ -508,6 +515,10 @@ def collect_stdlib_dependencies(script, dest_folder, extra_deps=None): "lib/python3." ) # we want to get rid of that lib/python3.x part relpath = relpath[len("lib/python3.X/") :] + elif p.startswith(basesysprefix): + relpath = op.relpath(p, basesysprefix) + assert relpath.startswith("lib/python3.") + relpath = relpath[len("lib/python3.X/") :] else: raise AssertionError() if relpath.startswith( diff --git a/package.py b/package.py index f50f68ca..8d9b562a 100644 --- a/package.py +++ b/package.py @@ -133,17 +133,6 @@ def package_source_txz(): build_path = op.join(base_path, "build") dest = op.join(build_path, name) print_and_do("git archive -o {} HEAD".format(dest)) - # Now, we need to include submodules - SUBMODULES = ["hscommon", "qtlib"] - for submodule in SUBMODULES: - print("Adding submodule {} to archive".format(submodule)) - os.chdir(submodule) - archive_path = op.join(build_path, "{}.tar".format(submodule)) - print_and_do( - "git archive -o {} --prefix {}/ HEAD".format(archive_path, submodule) - ) - os.chdir(base_path) - print_and_do("tar -A {} -f {}".format(archive_path, dest)) print_and_do("xz {}".format(dest)) @@ -155,6 +144,10 @@ def package_windows(): version_array = match.group(0).split(".") match = re.search("[0-9]+", arch) bits = match.group(0) + if bits == "64": + arch = "x64" + else: + arch = "x86" # include locale files if they are built otherwise exit as it will break # the localization if not op.exists("build/locale"): @@ -179,11 +172,24 @@ def package_windows(): except Exception: print("Error creating version info file, exiting...") return - # run pyinstaller via command line - print_and_do( - "pyinstaller -w --name=dupeguru-win{0} --icon=images/dgse_logo.ico " - '--add-data "build/locale;locale" --add-data "build/help;help" ' - "--version-file win_version_info.txt run.py".format(bits) + # run pyinstaller from here: + import PyInstaller.__main__ + + # UCRT dlls are included if the system has the windows kit installed + PyInstaller.__main__.run( + [ + "--name=dupeguru-win{0}".format(bits), + "--windowed", + "--noconfirm", + "--icon=images/dgse_logo.ico", + "--add-data=build/locale;locale", + "--add-data=build/help;help", + "--version-file=win_version_info.txt", + "--paths=C:\\Program Files (x86)\\Windows Kits\\10\\Redist\\ucrt\\DLLs\\{0}".format( + arch + ), + "run.py", + ] ) # remove version info file os.remove("win_version_info.txt") diff --git a/scripts/srcpkg.sh b/scripts/srcpkg.sh index feacb4dd..c0312481 100755 --- a/scripts/srcpkg.sh +++ b/scripts/srcpkg.sh @@ -7,7 +7,7 @@ dest="dupeguru-src-${version}.tar" git archive -o ${dest} HEAD # Now, we need to include submodules -submodules="hscommon qtlib cocoalib" +submodules="cocoalib" for submodule in $submodules; do echo "Adding submodule ${submodule} to archive" @@ -17,5 +17,5 @@ for submodule in $submodules; do rm ${archive_name} done -gzip -f ${dest} -echo "Built source package ${dest}.gz" +xz ${dest} +echo "Built source package ${dest}.xz"