mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-26 00:47:32 +00:00
91 lines
3.0 KiB
Python
Executable File
91 lines
3.0 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import subprocess
|
|
import os
|
|
import json
|
|
import shutil
|
|
|
|
|
|
def prepare(target):
|
|
# clone the flatpak json
|
|
cmd = ["git", "submodule", "update", "--remote", "contrib/flatpak"]
|
|
subprocess.run(cmd, check=True)
|
|
|
|
# clone the submodules for that
|
|
cmd = ["git", "submodule", "update", "--init", "--remote", "shared-modules/"]
|
|
subprocess.run(cmd, cwd="contrib/flatpak", check=True)
|
|
|
|
# parse json
|
|
if os.path.isdir("build"):
|
|
shutil.rmtree("build")
|
|
data = {}
|
|
with open("contrib/flatpak/org.freedesktop.fwupd.json", "r") as rfd:
|
|
data = json.load(rfd, strict=False)
|
|
platform = "runtime/%s/x86_64/%s" % (data["runtime"], data["runtime-version"])
|
|
sdk = "runtime/%s/x86_64/%s" % (data["sdk"], data["runtime-version"])
|
|
num_modules = len(data["modules"])
|
|
|
|
# update to build from main
|
|
data["branch"] = "main"
|
|
for index in range(0, num_modules):
|
|
module = data["modules"][index]
|
|
if type(module) != dict or not "name" in module:
|
|
continue
|
|
name = module["name"]
|
|
if not "fwupd" in name:
|
|
continue
|
|
data["modules"][index]["sources"][0].pop("url")
|
|
data["modules"][index]["sources"][0].pop("sha256")
|
|
data["modules"][index]["sources"][0]["type"] = "dir"
|
|
data["modules"][index]["sources"][0]["skip"] = [".git"]
|
|
data["modules"][index]["sources"][0]["path"] = ".."
|
|
|
|
# write json
|
|
os.mkdir("build")
|
|
with open(target, "w") as wfd:
|
|
json.dump(data, wfd, indent=4)
|
|
os.symlink("../contrib/flatpak/shared-modules", "build/shared-modules")
|
|
|
|
# install the runtimes (parsed from json!)
|
|
repo = "flathub"
|
|
repo_url = "https://dl.flathub.org/repo/flathub.flatpakrepo"
|
|
print("Installing dependencies")
|
|
cmd = ["flatpak", "remote-add", "--if-not-exists", repo, repo_url]
|
|
subprocess.run(cmd, check=True)
|
|
cmd = ["flatpak", "install", "--assumeyes", repo, sdk]
|
|
subprocess.run(cmd, check=True)
|
|
cmd = ["flatpak", "install", "--assumeyes", repo, platform]
|
|
subprocess.run(cmd, check=True)
|
|
|
|
|
|
def build(target):
|
|
cmd = [
|
|
"flatpak-builder",
|
|
"--repo=repo",
|
|
"--force-clean",
|
|
"--disable-rofiles-fuse",
|
|
"build-dir",
|
|
target,
|
|
]
|
|
subprocess.run(cmd, check=True)
|
|
cmd = ["flatpak", "build-bundle", "repo", "fwupd.flatpak", "org.freedesktop.fwupd"]
|
|
subprocess.run(cmd, check=True)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
t = os.path.join("build", "org.freedesktop.fwupd.json")
|
|
prepare(t)
|
|
build(t)
|
|
|
|
# to run from the builddir:
|
|
# sudo flatpak-builder --run build-dir org.freedesktop.fwupd.json /app/libexec/fwupd/fwupdtool get-devices
|
|
|
|
# install the single file bundle
|
|
# flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
# flatpak install fwupd.flatpak
|
|
|
|
# to run a shell in the same environment that flatpak sees:
|
|
# flatpak run --command=sh --devel org.freedesktop.fwupd
|
|
|
|
# to run fwupdtool as root:
|
|
# sudo -i flatpak run org.freedesktop.fwupd --verbose get-devices
|