mirror of
https://github.com/JasonN3/build-container-installer.git
synced 2025-12-25 10:57:55 +01:00
53 lines
2.2 KiB
Cheetah
53 lines
2.2 KiB
Cheetah
## Lorax template to embed Flatpaks into the installer.iso
|
|
|
|
## Args:
|
|
## - root - the root directory of the iso tree
|
|
## - flatpak_remote_name - the name for the flaptak remote to fetch from
|
|
## - flatpak_remote_url - the url for the remote
|
|
## - flatpak_remote_refs - refs to fetch from the remote (whitespace separated)
|
|
|
|
<%page args="root, flatpak_remote_name, flatpak_remote_url, flatpak_remote_refs"/>
|
|
<%
|
|
import os
|
|
import re
|
|
import tempfile
|
|
import subprocess
|
|
from pylorax.executils import runcmd_output, setenv
|
|
from pylorax.sysutils import joinpaths
|
|
|
|
dest_repo=joinpaths(root, "flatpak/repo")
|
|
refs=re.split(r"\s+", flatpak_remote_refs)
|
|
|
|
# the temporary Flatpak directory is a sibling of the install tree
|
|
flatpak_dir=joinpaths(os.path.dirname(root), "flatpak")
|
|
setenv("FLATPAK_USER_DIR", flatpak_dir)
|
|
flatpak_repo=joinpaths(flatpak_dir, "repo")
|
|
# suppress executing triggers by using an empty directory
|
|
triggers_dir = tempfile.mkdtemp(prefix='flatpak-triggers-')
|
|
setenv("FLATPAK_TRIGGERSDIR", triggers_dir)
|
|
%>
|
|
|
|
runcmd flatpak config --user --set languages "*"
|
|
runcmd flatpak remote-add --user ${flatpak_remote_name} ${flatpak_remote_url}
|
|
%if len(refs) > 0:
|
|
# We have to run a DBus session here, because Flatpak wants to talk to
|
|
# flatpak-oci-authenticator for OCI remotes - even ones that don't require
|
|
# authentication
|
|
runcmd dbus-run-session flatpak install -y --user ${flatpak_remote_name} ${flatpak_remote_refs}
|
|
%endif
|
|
runcmd mkdir -p ${root}/flatpak
|
|
runcmd ostree init --repo=${dest_repo} --mode=archive-z2
|
|
<%
|
|
f = open("/findme.txt", "a")
|
|
f.write("I'm here!")
|
|
f.close()
|
|
cmd_result = subprocess.run(['ostree', 'refs', '--repo=/flatpak/repo'], stdout=subprocess.PIPE)
|
|
all_refs = cmd_result.stdout.decode('utf-8').strip().split('\n')
|
|
found_refs = [entry[7:] for entry in all_refs if entry.startswith('deploy/')]
|
|
%>
|
|
%for ref in found_refs:
|
|
runcmd sh -c "ostree --repo=${dest_repo} pull-local ${flatpak_repo} $(ostree --repo=${flatpak_repo} rev-parse ${flatpak_remote_name}/${ref})"
|
|
runcmd sh -c "mkdir -p $(dirname ${dest_repo}/refs/heads/${ref})"
|
|
runcmd sh -c "ostree --repo=${flatpak_repo} rev-parse ${flatpak_remote_name}/${ref} > ${dest_repo}/refs/heads/${ref}"
|
|
%endfor
|
|
runcmd flatpak build-update-repo ${dest_repo}
|