diff --git a/src/libostree/ostree-repo-private.h b/src/libostree/ostree-repo-private.h index 7efbf91f..015a9a8b 100644 --- a/src/libostree/ostree-repo-private.h +++ b/src/libostree/ostree-repo-private.h @@ -106,6 +106,7 @@ struct OstreeRepo { gboolean inited; gboolean writable; + gboolean is_system; /* Was this repo created via ostree_sysroot_get_repo() ? */ GError *writable_error; gboolean in_transaction; gboolean disable_fsync; diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 7ee2c9aa..cbbaec9b 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -710,6 +710,12 @@ ostree_repo_is_system (OstreeRepo *repo) g_return_val_if_fail (OSTREE_IS_REPO (repo), FALSE); + /* If we were created via ostree_sysroot_get_repo(), we know the answer is yes + * without having to compare file paths. + */ + if (repo->is_system) + return TRUE; + default_repo_path = get_default_repo_path (repo->sysroot_dir); return g_file_equal (repo->repodir, default_repo_path); diff --git a/src/libostree/ostree-sysroot.c b/src/libostree/ostree-sysroot.c index e47214c5..ac24b0af 100644 --- a/src/libostree/ostree-sysroot.c +++ b/src/libostree/ostree-sysroot.c @@ -26,6 +26,7 @@ #include #include "ostree-core-private.h" +#include "ostree-repo-private.h" #include "ostree-sepolicy-private.h" #include "ostree-sysroot-private.h" #include "ostree-deployment-private.h" @@ -133,6 +134,7 @@ ostree_sysroot_constructed (GObject *object) repo_path = g_file_resolve_relative_path (self->path, "ostree/repo"); self->repo = ostree_repo_new_for_sysroot_path (repo_path, self->path); + self->repo->is_system = TRUE; G_OBJECT_CLASS (ostree_sysroot_parent_class)->constructed (object); }