summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-03-27 18:27:09 +0200
committerPaul Cristian Sarbu <paul.cristian.sarbu@huawei.com>2023-03-30 13:45:00 +0200
commitb1eeb28905d38231f5eda70148de0ebf8eb1cd8a (patch)
tree1543e9bdb014c23817369d724cf5cd0a3073a055
parented9bfe29a1d54a6dca1fa85853457c56108a6183 (diff)
downloadjustbuild-b1eeb28905d38231f5eda70148de0ebf8eb1cd8a.tar.gz
libgit2: Remove fix-fake-repo patch
-rw-r--r--etc/import/include/git2/TARGETS.git26
-rw-r--r--etc/import/src/libgit2/TARGETS.git26
-rw-r--r--etc/patches/libgit2_v1.5.0_fix-fake-repo.patch145
3 files changed, 0 insertions, 157 deletions
diff --git a/etc/import/include/git2/TARGETS.git2 b/etc/import/include/git2/TARGETS.git2
index 984fe0d8..f0ab360d 100644
--- a/etc/import/include/git2/TARGETS.git2
+++ b/etc/import/include/git2/TARGETS.git2
@@ -152,12 +152,6 @@
, "guard": ["INCLUDE_features_h__"]
, "stage": ["sys"]
}
-, "sys/repository.h":
- { "type": ["@", "rules", "patch", "file"]
- , "src": [["FILE", null, "sys/repository.h"]]
- , "patch": [["@", "patches", "", "libgit2_v1.5.0_fix-fake-repo.patch"]]
- , "patch-part": ["a", "include", "git2", "sys", "repository.h"]
- }
, "TREE":
{ "type": "tree"
, "name": "git2"
diff --git a/etc/import/src/libgit2/TARGETS.git2 b/etc/import/src/libgit2/TARGETS.git2
index aca7d2ea..67d4b772 100644
--- a/etc/import/src/libgit2/TARGETS.git2
+++ b/etc/import/src/libgit2/TARGETS.git2
@@ -115,12 +115,6 @@
, ["src/util", "util_private_headers"]
]
}
-, "repository.c":
- { "type": ["@", "rules", "patch", "file"]
- , "src": [["FILE", null, "repository.c"]]
- , "patch": [["@", "patches", "", "libgit2_v1.5.0_fix-fake-repo.patch"]]
- , "patch-part": ["a", "src", "libgit2", "repository.c"]
- }
, "libgit2_sources":
{ "type": ["@", "rules", "data", "staged"]
, "srcs":
diff --git a/etc/patches/libgit2_v1.5.0_fix-fake-repo.patch b/etc/patches/libgit2_v1.5.0_fix-fake-repo.patch
deleted file mode 100644
index 0da7c1bd..00000000
--- a/etc/patches/libgit2_v1.5.0_fix-fake-repo.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From 19711a9a2a557f24df34ad16046f3daffaeab0e8 Mon Sep 17 00:00:00 2001
-From: Oliver Reiche <oliver.reiche@huawei.com>
-Date: Wed, 3 Aug 2022 16:27:58 +0200
-Subject: [PATCH] Do not register fake repository as owner of ODB
-
-Accessing ODB is guaranteed to be thread-safe. Registering a
-fake repository (created via git_repository_wrap_odb()) may
-not register itself as owner of the ODB in order to maintain
-that guarantee. Otherwise, accessing objects from ODB will
-try to obtain the cache from the owning repository (via
-odb_cache()) and produce a race if this ODB is concurrently
-used to create fake repositories in other threads.
-Consequently, operations on fake repositories will interact
-with the ODB's cache instead of the repository's cache.
----
- include/git2/sys/repository.h | 3 ++-
- src/libgit2/repository.c | 16 +++++++++-------
- tests/libgit2/odb/backend/nobackend.c | 2 +-
- tests/libgit2/repo/setters.c | 23 ++++++++++++++++++++++-
- 4 files changed, 34 insertions(+), 10 deletions(-)
-
-diff --git a/include/git2/sys/repository.h b/include/git2/sys/repository.h
-index 892be669266..33bc5051f31 100644
---- a/include/git2/sys/repository.h
-+++ b/include/git2/sys/repository.h
-@@ -97,9 +97,10 @@ GIT_EXTERN(int) git_repository_set_config(git_repository *repo, git_config *conf
- *
- * @param repo A repository object
- * @param odb An ODB object
-+ * @param set_owner Register repository as owner of ODB
- * @return 0 on success, or an error code
- */
--GIT_EXTERN(int) git_repository_set_odb(git_repository *repo, git_odb *odb);
-+GIT_EXTERN(int) git_repository_set_odb(git_repository *repo, git_odb *odb, bool set_owner);
-
- /**
- * Set the Reference Database Backend for this repository
-diff --git a/src/libgit2/repository.c b/src/libgit2/repository.c
-index df41f581c22..c31e5509edb 100644
---- a/src/libgit2/repository.c
-+++ b/src/libgit2/repository.c
-@@ -89,10 +89,12 @@ git_str git_repository__reserved_names_posix[] = {
- };
- size_t git_repository__reserved_names_posix_len = 1;
-
--static void set_odb(git_repository *repo, git_odb *odb)
-+static void set_odb(git_repository *repo, git_odb *odb, bool set_owner)
- {
- if (odb) {
-- GIT_REFCOUNT_OWN(odb, repo);
-+ if (set_owner) {
-+ GIT_REFCOUNT_OWN(odb, repo);
-+ }
- GIT_REFCOUNT_INC(odb);
- }
-
-@@ -153,7 +155,7 @@ int git_repository__cleanup(git_repository *repo)
-
- set_config(repo, NULL);
- set_index(repo, NULL);
-- set_odb(repo, NULL);
-+ set_odb(repo, NULL, /*set_owner=*/true);
- set_refdb(repo, NULL);
-
- return 0;
-@@ -880,7 +882,7 @@ static int _git_repository_open_ext_from_env(
- goto error;
-
- if (odb)
-- git_repository_set_odb(repo, odb);
-+ git_repository_set_odb(repo, odb, /*set_owner=*/true);
-
- error = git__getenv(&alts_buf, "GIT_ALTERNATE_OBJECT_DIRECTORIES");
- if (error == GIT_ENOTFOUND) {
-@@ -1098,7 +1100,7 @@ int git_repository_wrap_odb(git_repository **repo_out, git_odb *odb)
- repo = repository_alloc();
- GIT_ERROR_CHECK_ALLOC(repo);
-
-- git_repository_set_odb(repo, odb);
-+ git_repository_set_odb(repo, odb, /*set_owner=*/false);
- *repo_out = repo;
-
- return 0;
-@@ -1305,12 +1307,12 @@ int git_repository_odb(git_odb **out, git_repository *repo)
- return 0;
- }
-
--int git_repository_set_odb(git_repository *repo, git_odb *odb)
-+int git_repository_set_odb(git_repository *repo, git_odb *odb, bool set_owner)
- {
- GIT_ASSERT_ARG(repo);
- GIT_ASSERT_ARG(odb);
-
-- set_odb(repo, odb);
-+ set_odb(repo, odb, set_owner);
- return 0;
- }
-
-diff --git a/tests/libgit2/odb/backend/nobackend.c b/tests/libgit2/odb/backend/nobackend.c
-index 7d9394c6f33..4ba563223c4 100644
---- a/tests/libgit2/odb/backend/nobackend.c
-+++ b/tests/libgit2/odb/backend/nobackend.c
-@@ -17,7 +17,7 @@ void test_odb_backend_nobackend__initialize(void)
- cl_git_pass(git_refdb_new(&refdb, _repo));
-
- git_repository_set_config(_repo, config);
-- git_repository_set_odb(_repo, odb);
-+ git_repository_set_odb(_repo, odb, /*set_owner=*/true);
- git_repository_set_refdb(_repo, refdb);
-
- /* The set increases the refcount and we don't want them anymore */
-diff --git a/tests/libgit2/repo/setters.c b/tests/libgit2/repo/setters.c
-index 66ec7706c2b..099a6fb3b3e 100644
---- a/tests/libgit2/repo/setters.c
-+++ b/tests/libgit2/repo/setters.c
-@@ -94,7 +94,28 @@ void test_repo_setters__setting_a_new_odb_on_a_repo_which_already_loaded_one_pro
- cl_git_pass(git_odb__open(&new_odb, "./testrepo.git/objects", NULL));
- cl_assert(((git_refcount *)new_odb)->refcount.val == 1);
-
-- git_repository_set_odb(repo, new_odb);
-+ git_repository_set_odb(repo, new_odb, /*set_owner=*/true);
-+ cl_assert(((git_refcount *)new_odb)->refcount.val == 2);
-+
-+ git_repository_free(repo);
-+ cl_assert(((git_refcount *)new_odb)->refcount.val == 1);
-+
-+ git_odb_free(new_odb);
-+
-+ /*
-+ * Ensure the cleanup method won't try to free the repo as it's already been taken care of
-+ */
-+ repo = NULL;
-+}
-+
-+void test_repo_setters__setting_a_new_odb_on_a_non_owner_repo_which_already_loaded_one_properly_honors_the_refcount(void)
-+{
-+ git_odb *new_odb;
-+
-+ cl_git_pass(git_odb__open(&new_odb, "./testrepo.git/objects", NULL));
-+ cl_assert(((git_refcount *)new_odb)->refcount.val == 1);
-+
-+ git_repository_set_odb(repo, new_odb, /*set_owner=*/false);
- cl_assert(((git_refcount *)new_odb)->refcount.val == 2);
-
- git_repository_free(repo); \ No newline at end of file