devenver: Add linux installation

This commit is contained in:
Doyle 2023-02-08 16:53:32 +11:00
parent 844cb7e363
commit 05e7fdddf1
4 changed files with 144 additions and 134 deletions

View File

@ -464,13 +464,13 @@ def get_manifest(is_windows):
executables = [ executables = [
{ {
"path": f"bin/clang++", "path": f"bin/clang++",
"checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "checksum": "388be41dc565a891ced9e78da2e89a249ca9b9a26f71a3c912e8ba89585be89c",
"symlink": [f"clang++-{version}"], "symlink": [f"clang++-{version}"],
"add_to_devenv_path": True, "add_to_devenv_path": True,
}, },
{ {
"path": f"bin/clang.exe", "path": f"bin/clang",
"checksum": "none", "checksum": "388be41dc565a891ced9e78da2e89a249ca9b9a26f71a3c912e8ba89585be89c",
"symlink": [f"clang-{version}"], "symlink": [f"clang-{version}"],
"add_to_devenv_path": True, "add_to_devenv_path": True,
} }
@ -505,17 +505,17 @@ def get_manifest(is_windows):
else: else:
version = "14.0.0" # Only version with linux downloads 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_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" download_checksum = "61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5"
executables = [ executables = [
{ {
"path": f"bin/clang++", "path": f"bin/clang++",
"checksum": "none", "checksum": "3557c2deadae7e2bc3bffce4afd93ddab6ef50090971c8ce3bf15c80b27134a0",
"symlink": [f"clang++-{version}"], "symlink": [f"clang++-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
}, },
{ {
"path": f"bin/clang.exe", "path": f"bin/clang",
"checksum": "none", "checksum": "3557c2deadae7e2bc3bffce4afd93ddab6ef50090971c8ce3bf15c80b27134a0",
"symlink": [f"clang-{version}"], "symlink": [f"clang-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
} }
@ -548,18 +548,18 @@ def get_manifest(is_windows):
} }
] ]
else: else:
download_checksum = "none" download_checksum = "84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0"
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_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 = [ executables = [
{ {
"path": f"bin/clang++", "path": f"bin/clang++",
"checksum": "none", "checksum": "ae47e6cc9f6d95f7a39e4800e511b7bdc3f55464ca79e45cd63cbd8a862a82a1",
"symlink": [f"clang++-{version}"], "symlink": [f"clang++-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
}, },
{ {
"path": f"bin/clang.exe", "path": f"bin/clang",
"checksum": "none", "checksum": "ae47e6cc9f6d95f7a39e4800e511b7bdc3f55464ca79e45cd63cbd8a862a82a1",
"symlink": [f"clang-{version}"], "symlink": [f"clang-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
} }
@ -585,25 +585,25 @@ def get_manifest(is_windows):
"add_to_devenv_path": False, "add_to_devenv_path": False,
}, },
{ {
"path": f"bin/clang.exe", "path": f"bin/clang",
"checksum": "9f0748de7f946c210a030452de226986bab46a0121d7236ea0e7b5079cb6dfef", "checksum": "9f0748de7f946c210a030452de226986bab46a0121d7236ea0e7b5079cb6dfef",
"symlink": [f"clang-{version}.exe"], "symlink": [f"clang-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
} }
] ]
else: else:
download_checksum = "none" download_checksum = "6b3cc55d3ef413be79785c4dc02828ab3bd6b887872b143e3091692fc6acefe7"
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_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-16.04.tar.xz"
executables = [ executables = [
{ {
"path": f"bin/clang++", "path": f"bin/clang++",
"checksum": "none", "checksum": "329bba976c0cef38863129233a4b0939688eae971c7a606d41dd0e5a53d53455",
"symlink": [f"clang++-{version}"], "symlink": [f"clang++-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
}, },
{ {
"path": f"bin/clang.exe", "path": f"bin/clang",
"checksum": "none", "checksum": "329bba976c0cef38863129233a4b0939688eae971c7a606d41dd0e5a53d53455",
"symlink": [f"clang-{version}"], "symlink": [f"clang-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
} }
@ -636,18 +636,18 @@ def get_manifest(is_windows):
} }
] ]
else: else:
download_checksum = "none" download_checksum = "c691a558967fb7709fb81e0ed80d1f775f4502810236aa968b4406526b43bee1"
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_url = f"https://github.com/llvm/llvm-project/releases/download/llvmorg-{version}/clang+llvm-{version}-x86_64-linux-gnu-ubuntu-16.04.tar.xz"
executables = [ executables = [
{ {
"path": f"bin/clang++", "path": f"bin/clang++",
"checksum": "none", "checksum": "656bfde194276cee81dc8a7a08858313c5b5bdcfa18ac6cd6116297af2f65148",
"symlink": [f"clang++-{version}"], "symlink": [f"clang++-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
}, },
{ {
"path": f"bin/clang.exe", "path": f"bin/clang",
"checksum": "none", "checksum": "656bfde194276cee81dc8a7a08858313c5b5bdcfa18ac6cd6116297af2f65148",
"symlink": [f"clang-{version}"], "symlink": [f"clang-{version}"],
"add_to_devenv_path": False, "add_to_devenv_path": False,
} }
@ -676,8 +676,8 @@ def get_manifest(is_windows):
exe_path = "ninja.exe" exe_path = "ninja.exe"
else: 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" download_checksum = "b901ba96e486dce377f9a070ed4ef3f79deb45f4ffe2938f8e7ddc69cfb3df77"
checksum = "none" checksum = "ac35c7992e95c5f2cadb44097d9988bcc71e5e39d9908ec312eb46872844f2e8"
exe_path = "ninja" exe_path = "ninja"
result.append({ result.append({
@ -717,9 +717,9 @@ def get_manifest(is_windows):
symlink = [f"node-{version}.exe"] symlink = [f"node-{version}.exe"]
else: else:
download_url = f"https://nodejs.org/dist/v{version}/node-v{version}-linux-x64.tar.xz" download_url = f"https://nodejs.org/dist/v{version}/node-v{version}-linux-x64.tar.xz"
download_checksum = "none" download_checksum = "c88b52497ab38a3ddf526e5b46a41270320409109c3f74171b241132984fd08f"
checksum = "none" checksum = "45afcfc9a45df626e8aa2b883753d1cf7f222ad9243f3003d1aa372696120df6"
exe_path = "node" exe_path = "bin/node"
symlink = [f"node-{version}"] symlink = [f"node-{version}"]
result.append({ result.append({
@ -764,29 +764,31 @@ def get_manifest(is_windows):
] ]
else: else:
download_url = f"https://github.com/indygreg/python-build-standalone/releases/download/{date}/cpython-{version}-x86_64_v2-unknown-linux-gnu-pgo+lto-full.tar.zst" download_url = f"https://github.com/indygreg/python-build-standalone/releases/download/{date}/cpython-{version}-x86_64_v2-unknown-linux-gnu-pgo+lto-full.tar.zst"
download_checksum = "none" download_checksum = "49f4a8c02efff2debbb258973b1f6efbd568e4be2e5dca07c7dcd754a7bff9cf"
checksum = "none" checksum = "none"
exe_path = "bin/python" exe_path = "bin/python"
result.append({ # TODO: Get ZST somehow on linux
"label": label, if is_windows:
"manifests": [ result.append({
{ "label": label,
"download_checksum": download_checksum, "manifests": [
"download_url": download_url, {
"version": version, "download_checksum": download_checksum,
"executables": [ "download_url": download_url,
{ "version": version,
"path": exe_path, "executables": [
"symlink": [], {
"add_to_devenv_path": True, "path": exe_path,
"checksum": checksum, "symlink": [],
} "add_to_devenv_path": True,
], "checksum": checksum,
"add_to_devenv_script": add_to_devenv_script, }
} ],
], "add_to_devenv_script": add_to_devenv_script,
}) }
],
})
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@ -803,8 +805,8 @@ def get_manifest(is_windows):
exe_path = "qrenderdoc.exe" exe_path = "qrenderdoc.exe"
else: else:
download_url = f"https://renderdoc.org/stable/{version}/renderdoc_{version}.tar.gz" download_url = f"https://renderdoc.org/stable/{version}/renderdoc_{version}.tar.gz"
download_checksum = "none" download_checksum = "fbdf67131ade655a7e635aa34e8b6fcd1aac9d88ebbe7d3da39fb075e05b1f41"
checksum = "none" checksum = "00508f6532f73a38873b92777fa8b7fb317c0b5f411fb50d2722823027993252"
exe_path = "bin/qrenderdoc" exe_path = "bin/qrenderdoc"
result.append({ result.append({
@ -867,9 +869,9 @@ def get_manifest(is_windows):
exe_path = "zig.exe" exe_path = "zig.exe"
symlink = [f"zig-{version}.exe"] symlink = [f"zig-{version}.exe"]
else: else:
download_url = f"https://ziglang.org/download/{version}/zig-linux-x86_64-{version}.zip" download_url = f"https://ziglang.org/download/{version}/zig-linux-x86_64-{version}.tar.xz"
download_checksum = "none" download_checksum = "6699f0e7293081b42428f32c9d9c983854094bd15fee5489f12c4cf4518cc380"
checksum = "none" checksum = "b298cd869e11709b9c7a1313315b5ea2a9d8a0718f555c6990ee209d7c533442"
exe_path = "zig" exe_path = "zig"
symlink = [f"zig-{version}"] symlink = [f"zig-{version}"]
@ -983,8 +985,8 @@ def get_manifest(is_windows):
symlink = [f"fzf.exe"] symlink = [f"fzf.exe"]
else: else:
download_url = f"https://github.com/junegunn/fzf/releases/download/{version}/fzf-{version}-linux_amd64.tar.gz" download_url = f"https://github.com/junegunn/fzf/releases/download/{version}/fzf-{version}-linux_amd64.tar.gz"
download_checksum = "none" download_checksum = "ffa3220089f2ed6ddbef2d54795e49f46467acfadd4ad0d22c5f07c52dc0d4ab"
checksum = "none" checksum = "6475c41e56d949da753782fef56017657b77846f23e71fca88378e3f55c1d6d0"
exe_path = "fzf" exe_path = "fzf"
symlink = [f"fzf"] symlink = [f"fzf"]
@ -1073,7 +1075,7 @@ def get_manifest(is_windows):
exe_path = "nvim.appimage" exe_path = "nvim.appimage"
download_url = f"https://github.com/neovim/neovim/releases/download/v{version}/{exe_path}" download_url = f"https://github.com/neovim/neovim/releases/download/v{version}/{exe_path}"
download_checksum = "bb0d4599cb506fc6e29bf0e9cef3b52e06dcb4bb930b56d6eb88320f1d46a908" download_checksum = "bb0d4599cb506fc6e29bf0e9cef3b52e06dcb4bb930b56d6eb88320f1d46a908"
checksum = "none" checksum = download_checksum
result.append({ result.append({
"label": "NVim", "label": "NVim",
@ -1110,8 +1112,8 @@ def get_manifest(is_windows):
exe_path = "neovide.exe" exe_path = "neovide.exe"
else: else:
download_url = f"https://github.com/neovide/neovide/releases/download/{version}/neovide.tar.gz" download_url = f"https://github.com/neovide/neovide/releases/download/{version}/neovide.tar.gz"
download_checksum = "fc0593a0f55e99fa8398e8137ac89632ea7fc97a90cbd32d8c2a69afc1eff6f" download_checksum = "0fc0593a0f55e99fa8398e8137ac89632ea7fc97a90cbd32d8c2a69afc1eff6f"
checksum = "none" checksum = "73c8dc6cb9840f568663d532d12ae54109af690866a51011cc1f874e2ae308e2"
exe_path = "neovide" exe_path = "neovide"
result.append({ result.append({
@ -1148,10 +1150,10 @@ def get_manifest(is_windows):
checksum = "ddd448c0d8fe71295bbcc5b52c9e9f4b06956a79572b7d634436a49728f5f341" checksum = "ddd448c0d8fe71295bbcc5b52c9e9f4b06956a79572b7d634436a49728f5f341"
exe_path = "imhex.exe" exe_path = "imhex.exe"
else: else:
download_url = f"https://github.com/WerWolv/ImHex/releases/download/v{version}/imhex-{version}.AppImage" exe_path = f"imhex-{version}.AppImage"
download_checksum = "none" download_url = f"https://github.com/WerWolv/ImHex/releases/download/v{version}/{exe_path}"
checksum = "none" download_checksum = "229d7f2f36dca0d4aa2eeb4f637114ffa94db7d67db74b34ed7eda34d72e4bed"
exe_path = "imhex-{version}.AppImage" checksum = download_checksum
result.append({ result.append({
"label": "ImHex", "label": "ImHex",
@ -1237,7 +1239,7 @@ def get_manifest(is_windows):
else: else:
download_url = f"https://github.com/BurntSushi/ripgrep/releases/download/{version}/ripgrep-{version}-x86_64-unknown-linux-musl.tar.gz" download_url = f"https://github.com/BurntSushi/ripgrep/releases/download/{version}/ripgrep-{version}-x86_64-unknown-linux-musl.tar.gz"
download_checksum = "ee4e0751ab108b6da4f47c52da187d5177dc371f0f512a7caaec5434e711c091" download_checksum = "ee4e0751ab108b6da4f47c52da187d5177dc371f0f512a7caaec5434e711c091"
checksum = "none" checksum = "4ef156371199b3ddac1bf584e0e52b1828279af82e4ea864b4d9c816adb5db40"
exe_path = "rg" exe_path = "rg"
result.append({ result.append({
@ -1275,9 +1277,9 @@ def get_manifest(is_windows):
exe_path = "sioyek.exe" exe_path = "sioyek.exe"
else: else:
download_url = f"https://github.com/ahrm/sioyek/releases/download/v{version}/sioyek-release-linux-portable.zip" download_url = f"https://github.com/ahrm/sioyek/releases/download/v{version}/sioyek-release-linux-portable.zip"
download_checksum = "none" download_checksum = "3f90659c1f29705de680b3607ae247582eab8860015c208d364a0f3fc15d3222"
checksum = "none" checksum = "7abc12e8fe71b0285e067866bcea2ea0e025e37291f6bce450675a567172e44f"
exe_path = "sioyek" exe_path = "Sioyek-x86_64.AppImage"
result.append({ result.append({
"label": "Sioyek", "label": "Sioyek",
@ -1318,9 +1320,9 @@ def get_manifest(is_windows):
"set FZF_DEFAULT_COMMAND=fd --type f --strip-cwd-prefix --hidden --follow --exclude .git --exclude .cache --exclude .vs", "set FZF_DEFAULT_COMMAND=fd --type f --strip-cwd-prefix --hidden --follow --exclude .git --exclude .cache --exclude .vs",
] ]
else: else:
download_url = f"https://github.com/sharkdp/fd/releases/download/v{version}/fd-v{version}-x86_64-pc-unknown-linux-musl.tar.gz" download_url = f"https://github.com/sharkdp/fd/releases/download/v{version}/fd-v{version}-x86_64-unknown-linux-musl.tar.gz"
download_checksum = "none" download_checksum = "9fdb370648fb8256fc9a36355c652546bd4c62925babcad80f95f90f74fc81e7"
checksum = "none" checksum = "702eb951e6b37be64cca66da976e0fcb0be587121034c1d6f841ce7fad3bd8e3"
exe_path = "fd" exe_path = "fd"
add_to_devenv_script = [ add_to_devenv_script = [
"FZF_DEFAULT_OPTS=--multi --layout=reverse", "FZF_DEFAULT_OPTS=--multi --layout=reverse",
@ -1434,7 +1436,7 @@ def get_manifest(is_windows):
checksum = "12d62abb9ad4db43c2b9b1398acae66857eb6e64205364631a3d3bda0ff17e2e" checksum = "12d62abb9ad4db43c2b9b1398acae66857eb6e64205364631a3d3bda0ff17e2e"
exe_path = "ripcord.exe" exe_path = "ripcord.exe"
else: else:
exe_path = "Ripcord-{version}-x86_64.AppImage" exe_path = f"Ripcord-{version}-x86_64.AppImage"
download_url = f"https://cancel.fm/dl/{exe_path}" download_url = f"https://cancel.fm/dl/{exe_path}"
download_checksum = "e320cb3c4043b0f296b4bc1da664b29776f95c2c0b02bdbf115b4d46b1669899" download_checksum = "e320cb3c4043b0f296b4bc1da664b29776f95c2c0b02bdbf115b4d46b1669899"
checksum = download_checksum checksum = download_checksum
@ -1498,7 +1500,7 @@ def get_manifest(is_windows):
exe_path = "yt-dlp.exe" exe_path = "yt-dlp.exe"
else: else:
download_url = f"https://github.com/yt-dlp/yt-dlp/releases/download/{version}/yt-dlp_linux" download_url = f"https://github.com/yt-dlp/yt-dlp/releases/download/{version}/yt-dlp_linux"
download_checksum = "none" download_checksum = "3b2d1bd378e08570b0fb5bee000cd6968563c4f47527197a5c57463bae8cb2ac"
checksum = download_checksum checksum = download_checksum
exe_path = "yt-dlp_linux" exe_path = "yt-dlp_linux"
@ -1538,7 +1540,7 @@ def get_manifest(is_windows):
else: else:
download_url = f"https://bitbucket.org/heldercorreia/speedcrunch/downloads/SpeedCrunch-{version}-linux64.tar.bz2" download_url = f"https://bitbucket.org/heldercorreia/speedcrunch/downloads/SpeedCrunch-{version}-linux64.tar.bz2"
download_checksum = "9347bef2068053ad15c5914ee147bf11a1ccb1d30cb18d63d0178380c327e8fc" download_checksum = "9347bef2068053ad15c5914ee147bf11a1ccb1d30cb18d63d0178380c327e8fc"
checksum = "none" checksum = "06c7e7f68027f133dc7874f663873244b695c8a7d2aec9cde0e40b7a5b9a4db1"
exe_path = "speedcrunch" exe_path = "speedcrunch"
result.append({ result.append({
@ -1577,8 +1579,8 @@ def get_manifest(is_windows):
else: else:
exe_path = f"KeePassXC-{version}-x86_64.AppImage" exe_path = f"KeePassXC-{version}-x86_64.AppImage"
download_url = f"https://github.com/keepassxreboot/keepassxc/releases/download/{version}/{exe_path}" download_url = f"https://github.com/keepassxreboot/keepassxc/releases/download/{version}/{exe_path}"
download_checksum = "none" download_checksum = "15fdc15f340e84e3b7a25a19bfb8c3b16f1e04685c07e5de1616b7cd6bcdded6"
checksum = "none" checksum = download_checksum
result.append({ result.append({
"label": "KeePassXC", "label": "KeePassXC",

View File

@ -222,18 +222,19 @@ def download_and_install_archive(download_url,
# Install the archive by unpacking it # Install the archive by unpacking it
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
archive_path = download_path archive_path = download_path
os.makedirs(exe_install_dir, exist_ok=True)
if unzip_method == UnzipMethod.DEFAULT: if unzip_method == UnzipMethod.DEFAULT:
if archive_path.suffix == '.exe' or archive_path.suffix == '.AppImage': if archive_path.suffix == '.exe' or archive_path.suffix.lower() == '.appimage' or len(archive_path.suffix) == 0:
unzip_method = UnzipMethod.NO_UNZIP unzip_method = UnzipMethod.NO_UNZIP
if 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) shutil.copy(archive_path, exe_install_dir)
elif unzip_method == UnzipMethod.SHUTILS: elif unzip_method == UnzipMethod.SHUTILS:
lprint(f'- SHUtils unzip install {label} to: {exe_install_dir}', level=1) lprint(f'- SHUtils unzip install {label} to: {exe_install_dir}', level=1)
shutil.unpack_archive(download_path, exe_install_dir) shutil.unpack_archive(download_path, exe_install_dir)
elif unzip_method == UnzipMethod.ZIP7_BOOTSTRAP: elif unzip_method == UnzipMethod.ZIP7_BOOTSTRAP:
command = f'"{zip7_bootstrap_exe}" x -bd "{download_path}" -o"{exe_install_dir}"' command = [str(zip7_bootstrap_exe), "x", "-bd", str(download_path), "-o", str(exe_install_dir)]
lprint(f'- 7z (bootstrap) unzip {label} to: {exe_install_dir}', level=1) lprint(f'- 7z (bootstrap) unzip {label} to: {exe_install_dir}', level=1)
lprint(f' Command: {command}', level=1) lprint(f' Command: {command}', level=1)
subprocess.run(command) subprocess.run(command)
@ -252,37 +253,49 @@ def download_and_install_archive(download_url,
# We call this an intermediate zip file, we will extract that file # We call this an intermediate zip file, we will extract that file
# with 7zip. After we're done, we will delete that _intermediate_ # with 7zip. After we're done, we will delete that _intermediate_
# file to cleanup our install directory. # file to cleanup our install directory.
if archive_path.suffix == '.zst' or archive_path.suffix == '.xz' or archive_path.suffix == '.gz': unzip_command = [str(zip7_exe), "x", "-aoa", "-spe", "-bso0", str(archive_path), f"-o{exe_install_dir}"]
linux_used_tar = False
if archive_path.suffix == '.zst' or archive_path.suffix == '.xz' or archive_path.suffix == '.gz' or archive_path.suffix == '.bz2':
archive_without_suffix = pathlib.Path(str(archive_path)[:-len(archive_path.suffix)]).name archive_without_suffix = pathlib.Path(str(archive_path)[:-len(archive_path.suffix)]).name
next_archive_path = pathlib.Path(exe_install_dir, archive_without_suffix) next_archive_path = pathlib.Path(exe_install_dir, archive_without_suffix)
if os.path.exists(next_archive_path) == False: if os.path.exists(next_archive_path) == False:
command = ""
if archive_path.suffix == '.zst': if archive_path.suffix == '.zst':
command = f'"{zstd_exe}" --output-dir-flat "{exe_install_dir}" -d "{archive_path}"' command = [str(zstd_exe), "--output-dir-flat", str(exe_install_dir), "-d", str(archive_path)]
lprint(f'- zstd unzip {label} to: {exe_install_dir}', level=1) lprint(f'- zstd unzip {label} to: {exe_install_dir}', level=1)
lprint(f' Command: {command}', level=1)
else: else:
command = f'"{zip7_exe}" x -aoa -spe -bso0 "{archive_path}" -o"{exe_install_dir}"' if not is_windows:
command = command.replace('\\', '/') linux_used_tar = True
lprint(f'- 7z unzip install {label} to: {exe_install_dir}', level=1) unzip_command = ["tar", "xf", str(archive_path), "--directory", str(exe_install_dir)]
lprint(f' Command: {command}', level=1)
os.makedirs(exe_install_dir) command = unzip_command
subprocess.run(command) for item in command:
item = item.replace('\\', '/')
lprint(f'- Unzip nested install {label} to: {exe_install_dir}', level=1)
lprint(f' Command: {command}', level=1)
subprocess.run(args=command)
# Remove the extension from the file, we just extracted it # Remove the extension from the file, we just extracted it
archive_path = next_archive_path archive_path = next_archive_path
# If there's still a suffix after we removed the ".zst" we got # If there's still a suffix after we removed the ".zst" we got
# an additional archive to unzip, e.g. "app.tar" remaining. # an additional archive to unzip, e.g. "app.tar" remaining.
intermediate_zip_file_extracted = len(archive_path.suffix) > 0 if not linux_used_tar:
intermediate_zip_file_extracted = len(archive_path.suffix) > 0
# \note On Linux using tar xf will unpack the archive entirely, e.g.
# unpack tar.gz both in one shot. So we do not need a further
# extract step.
if not linux_used_tar and len(archive_path.suffix) > 0:
unzip_command = [str(zip7_exe), "x", "-aoa", "-spe", "-bso0", str(archive_path), f"-o{exe_install_dir}"]
command = unzip_command
for item in command:
item = item.replace('\\', '/')
if len(archive_path.suffix) > 0: lprint(f'- Unzip install {label} to: {exe_install_dir}', level=1)
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) lprint(f' Command: {command}', level=1)
subprocess.run(command) subprocess.run(command)
@ -528,7 +541,7 @@ def install_app_list(app_list, download_dir, install_dir, is_windows):
unzip_method = UnzipMethod.ZIP7_BOOTSTRAP unzip_method = UnzipMethod.ZIP7_BOOTSTRAP
zip7_exe = exe_path zip7_exe = exe_path
else: else:
unzip_method = UnzipMethod.ZIP7_SHUTILS unzip_method = UnzipMethod.SHUTILS
zip7_exe = exe_path zip7_exe = exe_path
zip7_bootstrap_exe = exe_path zip7_bootstrap_exe = exe_path
elif label == 'zstd': elif label == 'zstd':
@ -571,7 +584,7 @@ def install_app_list(app_list, download_dir, install_dir, is_windows):
for line in manifest['add_to_devenv_script']: for line in manifest['add_to_devenv_script']:
devenv_script_buffer += (line + '\n') devenv_script_buffer += (line + '\n')
if app_list is internal_app_list: if (is_windows or os.name == 'nt') and app_list is internal_app_list:
if len(str(zip7_exe)) == 0 or len(str(zip7_bootstrap_exe)) == 0 or len(str(zstd_exe)) == 0: if len(str(zip7_exe)) == 0 or len(str(zip7_bootstrap_exe)) == 0 or len(str(zstd_exe)) == 0:
exit("Internal app list did not install 7zip bootstrap, 7zip or zstd, we are unable to install archives\n" exit("Internal app list did not install 7zip bootstrap, 7zip or zstd, we are unable to install archives\n"
f" - zip7_bootstrap_exe: {zip7_bootstrap_exe}\n" f" - zip7_bootstrap_exe: {zip7_bootstrap_exe}\n"
@ -655,11 +668,12 @@ def run(user_app_list,
download_checksum = "b055fee85472921575071464a97a79540e489c1c3a14b9bdfbdbab60e17f36e4" download_checksum = "b055fee85472921575071464a97a79540e489c1c3a14b9bdfbdbab60e17f36e4"
checksum = "254cf6411d38903b2440819f7e0a847f0cfee7f8096cfad9e90fea62f42b0c23" checksum = "254cf6411d38903b2440819f7e0a847f0cfee7f8096cfad9e90fea62f42b0c23"
exe_path = "7z.exe" exe_path = "7z.exe"
else: else:
download_url = f"https://www.7-zip.org/a/7z{version}-linux-x64.tar.xz" download_url = f"https://www.7-zip.org/a/7z{version}-linux-x64.tar.xz"
download_checksum = "none" download_checksum = "2c266f6794adec310c4631232c1d039f46988d51082fe5e80349c52ee7ed60bb"
checksum = "none" checksum = "0c771994a00ee96a0fc85902f66fbfd162c3090091e523bb828cdf4cd09a2e73"
exe_path = "7z" exe_path = "7zz"
internal_app_list[-1]["manifests"].append({ # Download proper 7zip, extract this exe with the bootstrap 7zip internal_app_list[-1]["manifests"].append({ # Download proper 7zip, extract this exe with the bootstrap 7zip
"download_checksum": download_checksum, "download_checksum": download_checksum,
@ -689,31 +703,26 @@ def run(user_app_list,
download_checksum = "68897cd037ee5e44c6d36b4dbbd04f1cc4202f9037415a3251951b953a257a09" download_checksum = "68897cd037ee5e44c6d36b4dbbd04f1cc4202f9037415a3251951b953a257a09"
checksum = "f14e78c0651851a670f508561d2c5d647da0ba08e6b73231f2e7539812bae311" checksum = "f14e78c0651851a670f508561d2c5d647da0ba08e6b73231f2e7539812bae311"
exe_path = "zstd.exe" 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({ internal_app_list.append({
"label": "zstd", "label": "zstd",
"manifests": [ "manifests": [
{ {
"download_checksum": download_checksum, "download_checksum": download_checksum,
"download_url": download_url, "download_url": download_url,
"version": version, "version": version,
"executables": [ "executables": [
{ {
"path": "zstd.exe", "path": exe_path,
"symlink": [], "symlink": [],
"add_to_devenv_path": True, "add_to_devenv_path": True,
"checksum": checksum, "checksum": checksum,
}, },
], ],
"add_to_devenv_script": [], "add_to_devenv_script": [],
}, },
], ],
}) })
# Run # Run
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@ -763,7 +772,7 @@ def run(user_app_list,
# Write the devenv script with environment variables # Write the devenv script with environment variables
devenv_script_buffer += "set PATH=%~dp0Symlinks;%PATH%\n" devenv_script_buffer += "set PATH=%~dp0Symlinks;%PATH%\n"
devenv_script_name = f"{devenv_script_name}.bat" if is_windows else f"{devenv_script_name}dev_env.sh" devenv_script_name = f"{devenv_script_name}.bat" if is_windows else f"{devenv_script_name}.sh"
devenv_script_path = pathlib.Path(install_dir, devenv_script_name) devenv_script_path = pathlib.Path(install_dir, devenv_script_name)
lprint(f"Writing script to augment the environment with installed applications: {devenv_script_path}") lprint(f"Writing script to augment the environment with installed applications: {devenv_script_path}")
with open(devenv_script_path, 'w') as file: with open(devenv_script_path, 'w') as file:

View File

@ -9,8 +9,8 @@ import tempfile
import argparse import argparse
import urllib.request import urllib.request
import win_app_manifest_dev import app_manifest_dev
import win_app_manifest_user import app_manifest_user
def git_clone(install_dir, git_exe, url, commit_hash): def git_clone(install_dir, git_exe, url, commit_hash):
devenver.lprint(f"Git clone {url} to {install_dir}", level=0) devenver.lprint(f"Git clone {url} to {install_dir}", level=0)
@ -78,7 +78,7 @@ if args.with_dev_apps:
# Run DEVenver, installing the portable apps # Run DEVenver, installing the portable apps
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
dev_env_script_name = "dev_env" dev_env_script_name = "dev_env"
app_list = win_app_manifest_dev.get_manifest(is_windows=is_windows) app_list = app_manifest_dev.get_manifest(is_windows=is_windows)
installed_dev_apps = devenver.run(user_app_list=app_list, installed_dev_apps = devenver.run(user_app_list=app_list,
download_dir=download_dir, download_dir=download_dir,
install_dir=install_dir, install_dir=install_dir,
@ -375,12 +375,12 @@ set PYTHONHOME=%~dp0{python_install_dir}
pause pause
""") """)
(install_dir / "user_env_update.bat").write_text(f"""@echo off (install_dir / "user_env_update.bat").write_text(f"""@echo off
setlocal EnableDelayedExpansion setlocal EnableDelayedExpansion
set PYTHONHOME=%~dp0{python_install_dir} set PYTHONHOME=%~dp0{python_install_dir}
%~dp0{python_rel_exe_path} {win_setup_script_path} --with-user-apps %~dp0{python_rel_exe_path} {win_setup_script_path} --with-user-apps
pause pause
""") """)
# Install left-overs # Install left-overs
# -------------------------------------------------------------------------- # --------------------------------------------------------------------------
@ -411,13 +411,12 @@ pause
urllib.request.urlretrieve("https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim", urllib.request.urlretrieve("https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim",
nvim_plug_vim_path) nvim_plug_vim_path)
# Install user apps # Install user apps
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
if args.with_user_apps: if args.with_user_apps:
app_list = win_app_manifest_user.get_manifest(is_windows=is_windows) app_list = app_manifest_user.get_manifest(is_windows=is_windows)
installed_user_apps = devenver.run(user_app_list=app_list, installed_user_apps = devenver.run(user_app_list=app_list,
download_dir=download_dir, download_dir=download_dir,
install_dir=install_dir, install_dir=install_dir,
devenv_script_name="user_env", devenv_script_name="user_env",
is_windows=True) is_windows=is_windows)