mirror of
https://git.proxmox.com/git/fwupd
synced 2025-05-16 21:14:38 +00:00

The submodules need to checkout the latest remote commit, not the latest one that was recorded by git metadata.
82 lines
2.9 KiB
Python
Executable File
82 lines
2.9 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)
|
|
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
|