mirror of
				https://git.proxmox.com/git/fwupd
				synced 2025-10-31 03:05:12 +00:00 
			
		
		
		
	 4039001d25
			
		
	
	
		4039001d25
		
	
	
	
	
		
			
			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
 |