@classmethod
def setup(cls, context: Context) -> None:
- # TODO: Create merged /usr manually for now until our upstream (Alpine Linux) supports it:
- # https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/85504
- for dir in ["lib", "bin", "sbin"]:
- (context.root / "usr" / dir).mkdir(parents=True, exist_ok=True)
- (context.root / dir).symlink_to(f"usr/{dir}")
-
with complete_step("Setting up postmarketOS keyring"):
# Create keys directory in sandbox
keys_dir = context.sandbox_tree / "etc/apk/keys"
@classmethod
def install(cls, context: Context) -> None:
+ # TODO: Create merged /usr manually for now until our upstream (Alpine Linux) supports it:
+ # https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/85504
+ for dir in ["lib", "bin", "sbin"]:
+ (context.root / "usr" / dir).mkdir(parents=True, exist_ok=True)
+ (context.root / dir).symlink_to(f"usr/{dir}")
+
Apk.install(context, ["postmarketos-baselayout", "postmarketos-release"], apivfs=False)
@classmethod
from mkosi.context import Context
from mkosi.installer import PackageManager
from mkosi.run import CompletedProcess, run, workdir
+from mkosi.tree import rmtree
from mkosi.util import _FILE, PathString
@classmethod
def sync(cls, context: Context, force: bool) -> None:
- # Initialize database first
+ # Updating the cache requires an initialized apk database but we don't want to touch the image root
+ # directory so temporarily replace it with an empty directory to make apk happy.
+ saved = context.root.rename(context.workspace / "saved-root")
+ context.root.mkdir()
cls.invoke(context, "add", ["--initdb"])
cls.invoke(context, "update", ["--update-cache"] if force else [])
+ rmtree(context.root)
+ saved.rename(context.root)
@classmethod
def createrepo(cls, context: Context) -> None: