diff options
author | Colin Walters <walters@verbum.org> | 2021-09-08 09:27:26 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-08 09:27:26 -0400 |
commit | ce36e05d38ab8bf0f95ea103349d0814ad30e574 (patch) | |
tree | 5ff4412800fcb8de9b3c91b4991714201fc4fa37 /src/libostree | |
parent | 7e4c4f2a69baa184147128c00377135239dd1d84 (diff) | |
parent | 511c7a13eeae0161f16a11033eec36252c6390ae (diff) | |
download | ostree-ce36e05d38ab8bf0f95ea103349d0814ad30e574.tar.gz |
Merge pull request #2434 from cgwalters/custom-remote
Add support for "custom remotes"
Diffstat (limited to 'src/libostree')
-rw-r--r-- | src/libostree/ostree-repo-pull.c | 15 | ||||
-rw-r--r-- | src/libostree/ostree-repo.c | 30 |
2 files changed, 32 insertions, 13 deletions
diff --git a/src/libostree/ostree-repo-pull.c b/src/libostree/ostree-repo-pull.c index 388f782b..6bb040a4 100644 --- a/src/libostree/ostree-repo-pull.c +++ b/src/libostree/ostree-repo-pull.c @@ -3965,6 +3965,7 @@ ostree_repo_pull_with_options (OstreeRepo *self, else { g_autofree char *unconfigured_state = NULL; + g_autofree char *custom_backend = NULL; g_free (pull_data->remote_name); pull_data->remote_name = g_strdup (remote_name_or_baseurl); @@ -3996,6 +3997,20 @@ ostree_repo_pull_with_options (OstreeRepo *self, "remote unconfigured-state: %s", unconfigured_state); goto out; } + + if (!ostree_repo_get_remote_option (self, pull_data->remote_name, + "custom-backend", NULL, + &custom_backend, + error)) + goto out; + + if (custom_backend) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "Cannot fetch via libostree - remote '%s' uses custom backend '%s'", + pull_data->remote_name, custom_backend); + goto out; + } } if (pull_data->remote_name && !(disable_sign_verify && disable_sign_verify_summary)) diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 0ff2c53f..42d2b0e0 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -1589,7 +1589,6 @@ impl_repo_remote_add (OstreeRepo *self, GError **error) { g_return_val_if_fail (name != NULL, FALSE); - g_return_val_if_fail (url != NULL, FALSE); g_return_val_if_fail (options == NULL || g_variant_is_of_type (options, G_VARIANT_TYPE ("a{sv}")), FALSE); if (!ostree_validate_remote_name (name, error)) @@ -1637,10 +1636,13 @@ impl_repo_remote_add (OstreeRepo *self, remote->file = g_file_get_child (etc_ostree_remotes_d, basename); } - if (g_str_has_prefix (url, "metalink=")) - g_key_file_set_string (remote->options, remote->group, "metalink", url + strlen ("metalink=")); - else - g_key_file_set_string (remote->options, remote->group, "url", url); + if (url) + { + if (g_str_has_prefix (url, "metalink=")) + g_key_file_set_string (remote->options, remote->group, "metalink", url + strlen ("metalink=")); + else + g_key_file_set_string (remote->options, remote->group, "url", url); + } if (options) keyfile_set_from_vardict (remote->options, remote->group, options); @@ -1676,7 +1678,7 @@ impl_repo_remote_add (OstreeRepo *self, * ostree_repo_remote_add: * @self: Repo * @name: Name of remote - * @url: URL for remote (if URL begins with metalink=, it will be used as such) + * @url: (allow-none): URL for remote (if URL begins with metalink=, it will be used as such) * @options: (allow-none): GVariant of type a{sv} * @cancellable: Cancellable * @error: Error @@ -1789,7 +1791,6 @@ impl_repo_remote_replace (OstreeRepo *self, GError **error) { g_return_val_if_fail (name != NULL, FALSE); - g_return_val_if_fail (url != NULL, FALSE); g_return_val_if_fail (options == NULL || g_variant_is_of_type (options, G_VARIANT_TYPE ("a{sv}")), FALSE); if (!ostree_validate_remote_name (name, error)) @@ -1815,11 +1816,14 @@ impl_repo_remote_replace (OstreeRepo *self, if (!g_key_file_remove_group (remote->options, remote->group, error)) return FALSE; - if (g_str_has_prefix (url, "metalink=")) - g_key_file_set_string (remote->options, remote->group, "metalink", - url + strlen ("metalink=")); - else - g_key_file_set_string (remote->options, remote->group, "url", url); + if (url) + { + if (g_str_has_prefix (url, "metalink=")) + g_key_file_set_string (remote->options, remote->group, "metalink", + url + strlen ("metalink=")); + else + g_key_file_set_string (remote->options, remote->group, "url", url); + } if (options != NULL) keyfile_set_from_vardict (remote->options, remote->group, options); @@ -1866,7 +1870,7 @@ impl_repo_remote_replace (OstreeRepo *self, * @sysroot: (allow-none): System root * @changeop: Operation to perform * @name: Name of remote - * @url: URL for remote (if URL begins with metalink=, it will be used as such) + * @url: (allow-none): URL for remote (if URL begins with metalink=, it will be used as such) * @options: (allow-none): GVariant of type a{sv} * @cancellable: Cancellable * @error: Error |