mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-15 10:28:30 +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 master
|
|
data["branch"] = "master"
|
|
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 flatpak run org.freedesktop.fwupd --verbose get-devices
|