diff --git a/devenver.py b/devenver.py index 6d13879..f3f4893 100644 --- a/devenver.py +++ b/devenver.py @@ -126,6 +126,7 @@ class UnzipMethod(Enum): SHUTILS = 0 ZIP7_BOOTSTRAP = 1 DEFAULT = 2 + NO_UNZIP = 3 def get_exe_install_dir(install_dir, label, version_label): result = pathlib.Path(install_dir, label.replace(' ', '_'), version_label) @@ -184,7 +185,7 @@ def download_and_install_archive(download_url, for exe_dict in exes_are_not_a_file: lprint(f' {exe_dict["path"]}', level=1) lprint(f' Installation cannot proceed as unpacking would overwrite these paths', level=1) - return + exit() # Check if any files are missing # ---------------------------------------------------------------------- @@ -199,8 +200,7 @@ def download_and_install_archive(download_url, lprint(f'- {label} is installed but some of the expected executables are missing from the installation!', level=1) for exe_dict in exes_are_not_a_file: lprint(f' {exe_dict["path"]}', level=1) - lprint(f' Installation cannot proceed as unpacking could delete ', level=1) - return + exit() assert(len(exes_missing) == len(exe_list)) assert(len(exes_present) == 0) @@ -221,75 +221,74 @@ def download_and_install_archive(download_url, # Install the archive by unpacking it # ---------------------------------------------------------------------- - if unzip_method == UnzipMethod.SHUTILS: + archive_path = download_path + if unzip_method == UnzipMethod.DEFAULT: + if archive_path.suffix == '.exe' or archive_path.suffix == '.AppImage': + unzip_method = UnzipMethod.NO_UNZIP + + if unzip_method == UnzipMethod.NO_UNZIP: + os.makedirs(exe_install_dir, exist_ok=True) + shutil.copy(archive_path, exe_install_dir) + elif unzip_method == UnzipMethod.SHUTILS: lprint(f'- SHUtils unzip install {label} to: {exe_install_dir}', level=1) - shutil.unpack_archive(download_path, exe_install_dir, 'zip') - else: - command = '' - if unzip_method == UnzipMethod.ZIP7_BOOTSTRAP: - command = f'"{zip7_bootstrap_exe}" x -bd "{download_path}" -o"{exe_install_dir}"' - lprint(f'- 7z (bootstrap) unzip {label} to: {exe_install_dir}', level=1) - lprint(f' Command: {command}', level=1) - subprocess.run(command) - else: - archive_path = download_path + shutil.unpack_archive(download_path, exe_install_dir) + elif unzip_method == UnzipMethod.ZIP7_BOOTSTRAP: + command = f'"{zip7_bootstrap_exe}" x -bd "{download_path}" -o"{exe_install_dir}"' + lprint(f'- 7z (bootstrap) unzip {label} to: {exe_install_dir}', level=1) + lprint(f' Command: {command}', level=1) + subprocess.run(command) + else: # Default + intermediate_zip_file_extracted = False - if archive_path.suffix == '.exe': - os.makedirs(exe_install_dir, exist_ok=True) - shutil.copy(archive_path, exe_install_dir) + # We could have a "app.zst" situation or an "app.tar.zst" situation + # + # "app.zst" only needs 1 extraction from the zstd tool + # "app.tar.zst" needs 1 zstd extract and then 1 7zip extract + # + # When we have "app.tar.zst" we extract to the install folder, e.g. + # + # "app/1.0/app.tar" + # + # We call this an intermediate zip file, we will extract that file + # with 7zip. After we're done, we will delete that _intermediate_ + # file to cleanup our install directory. + if archive_path.suffix == '.zst' or archive_path.suffix == '.xz' or archive_path.suffix == '.gz': - else: - intermediate_zip_file_extracted = False + archive_without_suffix = pathlib.Path(str(archive_path)[:-len(archive_path.suffix)]).name + next_archive_path = pathlib.Path(exe_install_dir, archive_without_suffix) - # We could have a "app.zst" situation or an "app.tar.zst" situation - # - # "app.zst" only needs 1 extraction from the zstd tool - # "app.tar.zst" needs 1 zstd extract and then 1 7zip extract - # - # When we have "app.tar.zst" we extract to the install folder, e.g. - # - # "app/1.0/app.tar" - # - # We call this an intermediate zip file, we will extract that file - # with 7zip. After we're done, we will delete that _intermediate_ - # file to cleanup our install directory. - if archive_path.suffix == '.zst' or archive_path.suffix == '.xz' or archive_path.suffix == '.gz': - - archive_without_suffix = pathlib.Path(str(archive_path)[:-len(archive_path.suffix)]).name - next_archive_path = pathlib.Path(exe_install_dir, archive_without_suffix) - - if os.path.exists(next_archive_path) == False: - if archive_path.suffix == '.zst': - command = f'"{zstd_exe}" --output-dir-flat "{exe_install_dir}" -d "{archive_path}"' - lprint(f'- zstd unzip {label} to: {exe_install_dir}', level=1) - lprint(f' Command: {command}', level=1) - else: - command = f'"{zip7_exe}" x -aoa -spe -bso0 "{archive_path}" -o"{exe_install_dir}"' - command = command.replace('\\', '/') - lprint(f'- 7z unzip install {label} to: {exe_install_dir}', level=1) - lprint(f' Command: {command}', level=1) - - os.makedirs(exe_install_dir) - subprocess.run(command) - - # Remove the extension from the file, we just extracted it - archive_path = next_archive_path - - # If there's still a suffix after we removed the ".zst" we got - # an additional archive to unzip, e.g. "app.tar" remaining. - intermediate_zip_file_extracted = len(archive_path.suffix) > 0 - - - if len(archive_path.suffix) > 0: + if os.path.exists(next_archive_path) == False: + if archive_path.suffix == '.zst': + command = f'"{zstd_exe}" --output-dir-flat "{exe_install_dir}" -d "{archive_path}"' + lprint(f'- zstd unzip {label} to: {exe_install_dir}', level=1) + lprint(f' Command: {command}', level=1) + else: command = f'"{zip7_exe}" x -aoa -spe -bso0 "{archive_path}" -o"{exe_install_dir}"' command = command.replace('\\', '/') lprint(f'- 7z unzip install {label} to: {exe_install_dir}', level=1) lprint(f' Command: {command}', level=1) - subprocess.run(command) - if intermediate_zip_file_extracted: - lprint(f'- Detected intermediate zip file in install root, removing: {archive_path}', level=1) - os.remove(archive_path) + os.makedirs(exe_install_dir) + subprocess.run(command) + + # Remove the extension from the file, we just extracted it + archive_path = next_archive_path + + # If there's still a suffix after we removed the ".zst" we got + # an additional archive to unzip, e.g. "app.tar" remaining. + intermediate_zip_file_extracted = len(archive_path.suffix) > 0 + + + if len(archive_path.suffix) > 0: + command = f'"{zip7_exe}" x -aoa -spe -bso0 "{archive_path}" -o"{exe_install_dir}"' + command = command.replace('\\', '/') + lprint(f'- 7z unzip install {label} to: {exe_install_dir}', level=1) + lprint(f' Command: {command}', level=1) + subprocess.run(command) + + if intermediate_zip_file_extracted: + lprint(f'- Detected intermediate zip file in install root, removing: {archive_path}', level=1) + os.remove(archive_path) # Remove duplicate root folder if detected # ---------------------------------------------------------------------- @@ -370,6 +369,14 @@ def download_and_install_archive(download_url, version_label=version_label, exe_rel_path=exe_rel_path) + # If you install the Linux manifest on Windows then we ensure we + # still call link (e.g. hardlink) because symlinks need special + # Windows 10 permissions to be set... + # + # It's weird that we install Linux manifest on Windows, yes, but + # I use it for testing without having to boot up a whole nother + # OS. + use_hardlink = is_windows or os.name == 'nt' for symlink_entry in exe_dict["symlink"]: symlink_dest = symlink_dir / symlink_entry symlink_src = exe_path @@ -377,7 +384,7 @@ def download_and_install_archive(download_url, if os.path.exists(symlink_dest): # Windows uses hardlinks because symlinks require you to enable "developer" mode # Everyone else uses symlinks - if (is_windows and not os.path.isfile(symlink_dest)) or (not is_windows and not os.path.islink(symlink_dest)): + if (use_hardlink and not os.path.isfile(symlink_dest)) or (not use_hardlink and not os.path.islink(symlink_dest)): lprint( "- Cannot create symlink! The destination file to create the symlink at.", level=1) lprint( " already exists and is *not* a link. We cannot remove this safely as we", level=1) lprint( " don't know what it is, exiting.", level=1) @@ -390,7 +397,7 @@ def download_and_install_archive(download_url, os.unlink(symlink_dest) if not skip_link: - if is_windows == True: + if use_hardlink: os.link(src=symlink_src, dst=symlink_dest) else: os.symlink(src=symlink_src, dst=symlink_dest) @@ -406,7 +413,7 @@ def download_and_install_archive(download_url, if is_windows: devenv_script_buffer += f"set PATH=%~dp0{path};%PATH%\n" else: - devenv_script_buffer += f"PATH=$( cd -- \"$( dirname -- \"${BASH_SOURCE[0]}\" ) &> /dev/null && pwd ){path}\";%PATH%\n" + devenv_script_buffer += f"PATH=$( cd -- \"$( dirname -- \"${{BASH_SOURCE[0]}}\" ) &> /dev/null && pwd ){path}\";%PATH%\n" # Search the 2 dictionarries, 'first' and 'second' for the key. A matching key # in 'first' taking precedence over the 'second' dictionary. If no key is @@ -507,24 +514,25 @@ def install_app_list(app_list, download_dir, install_dir, is_windows): # Bootstrapping code, when installing the internal app list, we will # assign the variables to point to our unarchiving tools. # ------------------------------------------------------------------ - if is_windows: - if app_list is internal_app_list: - global zip7_exe - global zip7_bootstrap_exe - global zstd_exe + if app_list is internal_app_list: + global zip7_exe + global zip7_bootstrap_exe + global zstd_exe + if label == '7zip': exe_path = get_exe_install_path(install_dir, label, version, manifest['executables'][0]['path']) - if label == '7zip': + if is_windows or os.name == 'nt': if version == '920': unzip_method = UnzipMethod.SHUTILS zip7_bootstrap_exe = exe_path else: unzip_method = UnzipMethod.ZIP7_BOOTSTRAP zip7_exe = exe_path - - if label == 'zstd': - zstd_exe = exe_path - else: - unzip_method = UnzipMethod.SHUTILS + else: + unzip_method = UnzipMethod.ZIP7_SHUTILS + zip7_exe = exe_path + zip7_bootstrap_exe = exe_path + elif label == 'zstd': + zstd_exe = exe_path # Download and install # ------------------------------------------------------------------ @@ -614,66 +622,98 @@ def run(user_app_list, global internal_app_list internal_app_list = [] - if is_windows: - internal_app_list.append({ - 'label': '7zip', - 'manifests': [], - }) + internal_app_list.append({ + "label": "7zip", + "manifests": [], + }) + if is_windows or os.name == "nt": version = "920" - internal_app_list[-1]['manifests'].append({ # Download the bootstrap 7zip, this can be unzipped using shutils - 'download_checksum': '2a3afe19c180f8373fa02ff00254d5394fec0349f5804e0ad2f6067854ff28ac', - 'download_url': f'https://www.7-zip.org/a/7za{version}.zip', - 'version': version, - 'executables': [ + internal_app_list[-1]["manifests"].append({ # Download the bootstrap 7zip, this can be unzipped using shutils + "download_checksum": "2a3afe19c180f8373fa02ff00254d5394fec0349f5804e0ad2f6067854ff28ac", + "download_url": f"https://www.7-zip.org/a/7za{version}.zip", + "version": version, + "executables": [ { - 'path': '7za.exe', - 'symlink': [], - 'add_to_devenv_path': False, - 'checksum': 'c136b1467d669a725478a6110ebaaab3cb88a3d389dfa688e06173c066b76fcf' + "path": "7za.exe", + "symlink": [], + "add_to_devenv_path": False, + "checksum": "c136b1467d669a725478a6110ebaaab3cb88a3d389dfa688e06173c066b76fcf" } ], - 'add_to_devenv_script': [], + "add_to_devenv_script": [], }) - version = "2201" - internal_app_list[-1]['manifests'].append({ # Download proper 7zip, extract this exe with the bootstrap 7zip - 'download_checksum': 'b055fee85472921575071464a97a79540e489c1c3a14b9bdfbdbab60e17f36e4', - 'download_url': f'https://www.7-zip.org/a/7z{version}-x64.exe', - 'version': version, - 'executables': [ - { - 'path': '7z.exe', - 'symlink': [], - 'add_to_devenv_path': True, - 'checksum': '254cf6411d38903b2440819f7e0a847f0cfee7f8096cfad9e90fea62f42b0c23' - } - ], - 'add_to_devenv_script': [], - }) + version = "2201" + download_url = "" + download_checksum = "" + checksum = "" + exe_path = "" - # ------------------------------------------------------------------------------ + if is_windows or os.name == "nt": + download_url = f"https://www.7-zip.org/a/7z{version}-x64.exe" + download_checksum = "b055fee85472921575071464a97a79540e489c1c3a14b9bdfbdbab60e17f36e4" + checksum = "254cf6411d38903b2440819f7e0a847f0cfee7f8096cfad9e90fea62f42b0c23" + exe_path = "7z.exe" + else: + download_url = f"https://www.7-zip.org/a/7z{version}-linux-x64.tar.xz" + download_checksum = "none" + checksum = "none" + exe_path = "7z" - version = "1.5.2" - internal_app_list.append({ - "label": "zstd", - "manifests": [ - { - "download_checksum": "68897cd037ee5e44c6d36b4dbbd04f1cc4202f9037415a3251951b953a257a09", - "download_url": f"https://github.com/facebook/zstd/releases/download/v{version}/zstd-v{version}-win64.zip", - "version": version, - "executables": [ - { - "path": "zstd.exe", - "symlink": [], - "add_to_devenv_path": True, - "checksum": "f14e78c0651851a670f508561d2c5d647da0ba08e6b73231f2e7539812bae311", - }, - ], - "add_to_devenv_script": [], - }, - ], - }) + internal_app_list[-1]["manifests"].append({ # Download proper 7zip, extract this exe with the bootstrap 7zip + "download_checksum": download_checksum, + "download_url": download_url, + "version": version, + "executables": [ + { + "path": exe_path, + "symlink": [], + "add_to_devenv_path": True, + "checksum": checksum, + } + ], + "add_to_devenv_script": [], + }) + + # ------------------------------------------------------------------------------ + + version = "1.5.2" + download_url = "" + download_checksum = "" + checksum = "" + exe_path = "" + + if is_windows or os.name == 'nt': + download_url = f"https://github.com/facebook/zstd/releases/download/v{version}/zstd-v{version}-win64.zip" + download_checksum = "68897cd037ee5e44c6d36b4dbbd04f1cc4202f9037415a3251951b953a257a09" + checksum = "f14e78c0651851a670f508561d2c5d647da0ba08e6b73231f2e7539812bae311" + exe_path = "zstd.exe" + else: + download_url = f"https://github.com/facebook/zstd/releases/download/v{version}/zstd-{version}.tar.gz" + download_checksum = "none" + checksum = "none" + exe_path = "zstd" + + internal_app_list.append({ + "label": "zstd", + "manifests": [ + { + "download_checksum": download_checksum, + "download_url": download_url, + "version": version, + "executables": [ + { + "path": "zstd.exe", + "symlink": [], + "add_to_devenv_path": True, + "checksum": checksum, + }, + ], + "add_to_devenv_script": [], + }, + ], + }) # Run # -------------------------------------------------------------------------- diff --git a/win_app_manifest_dev.py b/win_app_manifest_dev.py index aa7a51a..4dc9d60 100644 --- a/win_app_manifest_dev.py +++ b/win_app_manifest_dev.py @@ -18,8 +18,8 @@ def get_manifest(is_windows): else: exe_path = f"WezTerm-{version}-Ubuntu18.04.AppImage" download_url = f"https://github.com/wez/wezterm/releases/download/{version}/{exe_path}" - download_checksum = "7041d2c02d226c0c051cc9f6373d51ac9a2de00025e18582077c76e8ad68abe1" - checksum = "none" + download_checksum = "1611b4d5ba2598587874b3ff51dc0849e7ece7f2e0a0d376e13fbd00f9ae2807" + checksum = download_checksum result.append({ "label": "WezTerm", @@ -85,9 +85,9 @@ def get_manifest(is_windows): checksum = "426074cd812586551fbab2bde67377113e2085c78c2e9a887748e85b4dc3dda5" else: exe_path = f"bin/cmake" - download_url = f"https://github.com/Kitware/CMake/releases/download/v{version}/cmake-{version}-linux-x86_64.tar.gz", - download_checksum = "none" - checksum = "none" + download_url = f"https://github.com/Kitware/CMake/releases/download/v{version}/cmake-{version}-linux-x86_64.tar.gz" + download_checksum = "3fbcbff85043d63a8a83c8bdf8bd5b1b2fd5768f922de7dc4443de7805a2670d" + checksum = "0f2d7256be13a5955af1462d6dd40e1f0c0ce9fa822953f31ae27aa78da73440" result[-1]['manifests'].append({ "download_checksum": download_checksum, @@ -111,9 +111,9 @@ def get_manifest(is_windows): download_checksum = "3bd57d1cfcf720a4cc72db77bda4c76a7b700fb0341821ad868963ad28856cd0" checksum = "f2e3b486d87d2a6bc19b3a62c740028f3f8945875196ac7d3d0e69649e98730a" else: - download_url = f"https://github.com/Kitware/CMake/releases/download/v{version}/cmake-{version}-Linux-x86_64.tar.gz", - download_checksum = "none" - checksum = "none" + download_url = f"https://github.com/Kitware/CMake/releases/download/v{version}/cmake-{version}-Linux-x86_64.tar.gz" + download_checksum = "9e7c48b797484f74c5ee3ae55132b40b16ed8e81ee762402da8971205b0a896b" + checksum = "f12fbb91b198738cd0ade85ab1aa3f65964579a850042de3d2385cc0d593ad46" result[-1]['manifests'].append({ "download_checksum": download_checksum, @@ -141,15 +141,15 @@ def get_manifest(is_windows): if is_windows: exe_path = f"doxygen.exe" - download_url = f"https://github.com/doxygen/doxygen/releases/download/Release_{version.replace('.', '_')}/doxygen-{version}.windows.x64.bin.zip", + download_url = f"https://github.com/doxygen/doxygen/releases/download/Release_{version.replace('.', '_')}/doxygen-{version}.windows.x64.bin.zip" download_checksum = "3b34098c5fb016baa1d29aba101fe9d6843213b966b92a6b12c8856c547ee0c4" checksum = "3cb4d89f2b3db7eec2b6797dc6b49cdfe9adda954575898895260f66f312d730" symlink = [f"doxygen-{version}.exe"] else: - exe_path = f"doxygen" - download_url = f"https://github.com/doxygen/doxygen/releases/download/Release_{version.replace('.', '_')}/doxygen-{version}.linux.bin.tar.gz", - download_checksum = "none" - checksum = "none" + exe_path = f"bin/doxygen" + download_url = f"https://github.com/doxygen/doxygen/releases/download/Release_{version.replace('.', '_')}/doxygen-{version}.linux.bin.tar.gz" + download_checksum = "d157f247d579d0c976bb2595e7806bc4d0ffad105cbe0406b243afa1dc686a32" + checksum = "0f03e67bfdc61c6c9dd4ad1412ac2d90b478bfa7ddbd513c3faa9615b5d80c17" symlink = [f"doxygen-{version}"] result.append({ @@ -434,13 +434,14 @@ def get_manifest(is_windows): "manifests": [], }) - version = "15.0.7" + version = "" download_url = "" download_checksum = "" executables = [] if is_windows: - download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/LLVM-{version}-win64.exe", + version = "15.0.7" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/LLVM-{version}-win64.exe" download_checksum = "7041d2c02d226c0c051cc9f6373d51ac9a2de00025e18582077c76e8ad68abe1" executables = [ { @@ -457,12 +458,13 @@ def get_manifest(is_windows): } ] else: - download_url = f"" - download_checksum = "none" + version = "15.0.6" # No linux release for 15.0.7 + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-18.04.tar.xz" + download_checksum = "38bc7f5563642e73e69ac5626724e206d6d539fbef653541b34cae0ba9c3f036" executables = [ { "path": f"bin/clang++", - "checksum": "none", + "checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "symlink": [f"clang++-{version}"], "add_to_devenv_path": True, }, @@ -482,8 +484,9 @@ def get_manifest(is_windows): "add_to_devenv_script": [], }) - version = "14.0.6" if is_windows: + version = "14.0.6" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/LLVM-{version}-win64.exe" download_checksum = "e8dbb2f7de8e37915273d65c1c2f2d96844b96bb8e8035f62c5182475e80b9fc" executables = [ { @@ -500,6 +503,8 @@ def get_manifest(is_windows): } ] else: + version = "14.0.0" # Only version with linux downloads + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-18.04.tar.xz" download_checksum = "none" executables = [ { @@ -526,6 +531,7 @@ def get_manifest(is_windows): version = "13.0.1" if is_windows: + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/LLVM-{version}-win64.exe" download_checksum = "9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f" executables = [ { @@ -543,6 +549,7 @@ def get_manifest(is_windows): ] else: download_checksum = "none" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-18.04.tar.xz" executables = [ { "path": f"bin/clang++", @@ -569,6 +576,7 @@ def get_manifest(is_windows): version = "12.0.1" if is_windows: download_checksum = "fcbabc9a170208bb344f7bba8366cca57ff103d72a316781bbb77d634b9e9433" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/LLVM-{version}-win64.exe" executables = [ { "path": f"bin/clang++.exe", @@ -585,6 +593,7 @@ def get_manifest(is_windows): ] else: download_checksum = "none" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-18.04.tar.xz" executables = [ { "path": f"bin/clang++", @@ -611,6 +620,7 @@ def get_manifest(is_windows): version = "11.1.0" if is_windows: download_checksum = "b5770bbfac712d273938cd155e232afaa85c2e8d865c7ca504a104a838568516" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/LLVM-{version}-win64.exe" executables = [ { "path": f"bin/clang++.exe", @@ -627,6 +637,7 @@ def get_manifest(is_windows): ] else: download_checksum = "none" + download_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-18.04.tar.xz" executables = [ { "path": f"bin/clang++", @@ -659,12 +670,12 @@ def get_manifest(is_windows): checksum = "" if is_windows: - download_url = f"https://github.com/ninja-build/ninja/releases/download/v{version}/ninja-win.zip", + download_url = f"https://github.com/ninja-build/ninja/releases/download/v{version}/ninja-win.zip" download_checksum = "524b344a1a9a55005eaf868d991e090ab8ce07fa109f1820d40e74642e289abc" checksum = "23e7d60c17b3fcd42d9c00d49eca3c3771b04d7ccb13e49836b06b34e20211c7" exe_path = "ninja.exe" else: - download_url = f"https://github.com/ninja-build/ninja/releases/download/v{version}/ninja-linux.zip", + download_url = f"https://github.com/ninja-build/ninja/releases/download/v{version}/ninja-linux.zip" download_checksum = "none" checksum = "none" exe_path = "ninja" @@ -850,11 +861,11 @@ def get_manifest(is_windows): symlink = [] if is_windows: - download_url = f"https://ziglang.org/download/{version}/zig-windows-x86_64-{version}.zip" - download_checksum = "5768004e5e274c7969c3892e891596e51c5df2b422d798865471e05049988125" - checksum = "607c9928a24f9d2e08df1ee240ebfd15ab1eb3c14b85e02f7dad6f8c8b53fea8" - exe_path = "zig.exe" - symlink = [f"zig-{version}.exe"] + download_url = f"https://ziglang.org/download/{version}/zig-windows-x86_64-{version}.zip" + download_checksum = "5768004e5e274c7969c3892e891596e51c5df2b422d798865471e05049988125" + checksum = "607c9928a24f9d2e08df1ee240ebfd15ab1eb3c14b85e02f7dad6f8c8b53fea8" + exe_path = "zig.exe" + symlink = [f"zig-{version}.exe"] else: download_url = f"https://ziglang.org/download/{version}/zig-linux-x86_64-{version}.zip" download_checksum = "none" @@ -1418,10 +1429,10 @@ def get_manifest(is_windows): checksum = "" if is_windows: - download_url = f"https://cancel.fm/dl/Ripcord_Win_{version}.zip" - download_checksum = "c7a393ac669d02c16828706521833df06b690554368049545e47a1420fa8f04f" - checksum = "12d62abb9ad4db43c2b9b1398acae66857eb6e64205364631a3d3bda0ff17e2e" - exe_path = "ripcord.exe" + download_url = f"https://cancel.fm/dl/Ripcord_Win_{version}.zip" + download_checksum = "c7a393ac669d02c16828706521833df06b690554368049545e47a1420fa8f04f" + checksum = "12d62abb9ad4db43c2b9b1398acae66857eb6e64205364631a3d3bda0ff17e2e" + exe_path = "ripcord.exe" else: exe_path = "Ripcord-{version}-x86_64.AppImage" download_url = f"https://cancel.fm/dl/{exe_path}"