From 544e566137bbf328d19d22698ebc640d7635e0bc Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Feb 10 2018 20:01:35 +0000 Subject: Cleanups and fixes Signed-off-by: Igor Gnatenko --- diff --git a/0001-Use-RETURN_ENUMERATOR-and-RETURN_SIZED_ENUMERATOR-ma.patch b/0001-Use-RETURN_ENUMERATOR-and-RETURN_SIZED_ENUMERATOR-ma.patch new file mode 100644 index 0000000..63575b4 --- /dev/null +++ b/0001-Use-RETURN_ENUMERATOR-and-RETURN_SIZED_ENUMERATOR-ma.patch @@ -0,0 +1,389 @@ +From 6eeccfebb0af3084d963e8dd5d7fdb13b2907a04 Mon Sep 17 00:00:00 2001 +From: Arthur Schreiber +Date: Wed, 3 Jan 2018 14:09:50 +0100 +Subject: [PATCH] Use `RETURN_ENUMERATOR` and `RETURN_SIZED_ENUMERATOR` macros. + +--- + ext/rugged/rugged_blame.c | 9 ++++++--- + ext/rugged/rugged_branch_collection.c | 9 +++------ + ext/rugged/rugged_config.c | 10 +++------- + ext/rugged/rugged_diff.c | 14 +++----------- + ext/rugged/rugged_diff_hunk.c | 4 +--- + ext/rugged/rugged_index.c | 4 +--- + ext/rugged/rugged_note.c | 5 +---- + ext/rugged/rugged_patch.c | 5 +---- + ext/rugged/rugged_reference_collection.c | 8 +------- + ext/rugged/rugged_remote.c | 5 +---- + ext/rugged/rugged_remote_collection.c | 7 +------ + ext/rugged/rugged_repo.c | 3 +-- + ext/rugged/rugged_revwalk.c | 13 ++----------- + ext/rugged/rugged_submodule_collection.c | 7 +++---- + ext/rugged/rugged_tag_collection.c | 6 +----- + ext/rugged/rugged_tree.c | 5 ++--- + 16 files changed, 31 insertions(+), 83 deletions(-) + +diff --git a/ext/rugged/rugged_blame.c b/ext/rugged/rugged_blame.c +index 9171630..97af0b0 100644 +--- a/ext/rugged/rugged_blame.c ++++ b/ext/rugged/rugged_blame.c +@@ -188,6 +188,11 @@ static VALUE rb_git_blame_count(VALUE self) + return UINT2NUM(git_blame_get_hunk_count(blame)); + } + ++static VALUE rugged_blame_enum_size(VALUE rb_blame, VALUE rb_args, VALUE rb_eobj) ++{ ++ return rb_git_blame_count(rb_blame); ++} ++ + /* + * call-seq: + * blame[index] -> hunk +@@ -242,9 +247,7 @@ static VALUE rb_git_blame_each(VALUE self) + git_blame *blame; + uint32_t i, blame_count; + +- if (!rb_block_given_p()) { +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each"), self); +- } ++ RETURN_SIZED_ENUMERATOR(self, 0, 0, rugged_blame_enum_size); + + Data_Get_Struct(self, git_blame, blame); + +diff --git a/ext/rugged/rugged_branch_collection.c b/ext/rugged/rugged_branch_collection.c +index b1975fb..21e0d5f 100644 +--- a/ext/rugged/rugged_branch_collection.c ++++ b/ext/rugged/rugged_branch_collection.c +@@ -178,19 +178,16 @@ static VALUE rb_git_branch_collection_aref(VALUE self, VALUE rb_name) { + + static VALUE each_branch(int argc, VALUE *argv, VALUE self, int branch_names_only) + { +- VALUE rb_repo = rugged_owner(self), rb_filter; ++ VALUE rb_repo, rb_filter; + git_repository *repo; + git_branch_iterator *iter; + int error, exception = 0; + git_branch_t filter = (GIT_BRANCH_LOCAL | GIT_BRANCH_REMOTE), branch_type; + ++ RETURN_ENUMERATOR(self, argc, argv); + rb_scan_args(argc, argv, "01", &rb_filter); + +- if (!rb_block_given_p()) { +- VALUE symbol = branch_names_only ? CSTR2SYM("each_name") : CSTR2SYM("each"); +- return rb_funcall(self, rb_intern("to_enum"), 2, symbol, rb_filter); +- } +- ++ rb_repo = rugged_owner(self); + rugged_check_repo(rb_repo); + + if (!NIL_P(rb_filter)) +diff --git a/ext/rugged/rugged_config.c b/ext/rugged/rugged_config.c +index 6346842..861d095 100644 +--- a/ext/rugged/rugged_config.c ++++ b/ext/rugged/rugged_config.c +@@ -212,11 +212,9 @@ static VALUE rb_git_config_each_key(VALUE self) + git_config *config; + int error; + ++ RETURN_ENUMERATOR(self, 0, 0); + Data_Get_Struct(self, git_config, config); + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_key")); +- + error = git_config_foreach(config, &cb_config__each_key, (void *)rb_block_proc()); + rugged_exception_check(error); + return Qnil; +@@ -240,12 +238,10 @@ static VALUE rb_git_config_each_pair(VALUE self) + { + git_config *config; + int error; +- ++ ++ RETURN_ENUMERATOR(self, 0, 0); + Data_Get_Struct(self, git_config, config); + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_pair")); +- + error = git_config_foreach(config, &cb_config__each_pair, (void *)rb_block_proc()); + rugged_exception_check(error); + return Qnil; +diff --git a/ext/rugged/rugged_diff.c b/ext/rugged/rugged_diff.c +index 7810c5a..102bedc 100644 +--- a/ext/rugged/rugged_diff.c ++++ b/ext/rugged/rugged_diff.c +@@ -447,10 +447,7 @@ static VALUE rb_git_diff_each_patch(VALUE self) + int error = 0; + size_t d, delta_count; + +- if (!rb_block_given_p()) { +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_patch"), self); +- } +- ++ RETURN_ENUMERATOR(self, 0, 0); + Data_Get_Struct(self, git_diff, diff); + + delta_count = git_diff_num_deltas(diff); +@@ -484,10 +481,7 @@ static VALUE rb_git_diff_each_delta(VALUE self) + int error = 0; + size_t d, delta_count; + +- if (!rb_block_given_p()) { +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_delta"), self); +- } +- ++ RETURN_ENUMERATOR(self, 0, 0); + Data_Get_Struct(self, git_diff, diff); + + delta_count = git_diff_num_deltas(diff); +@@ -524,6 +518,7 @@ static VALUE rb_git_diff_each_line(int argc, VALUE *argv, VALUE self) + git_diff_format_t format; + int exception = 0, error; + ++ RETURN_ENUMERATOR(self, argc, argv); + Data_Get_Struct(self, git_diff, diff); + + if (rb_scan_args(argc, argv, "01", &rb_format) == 1) { +@@ -532,9 +527,6 @@ static VALUE rb_git_diff_each_line(int argc, VALUE *argv, VALUE self) + rb_format = CSTR2SYM("patch"); + } + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 2, CSTR2SYM("each_line"), rb_format); +- + if (SYM2ID(rb_format) == rb_intern("patch")) { + format = GIT_DIFF_FORMAT_PATCH; + } else if (SYM2ID(rb_format) == rb_intern("patch_header")) { +diff --git a/ext/rugged/rugged_diff_hunk.c b/ext/rugged/rugged_diff_hunk.c +index bc7212a..37878e0 100644 +--- a/ext/rugged/rugged_diff_hunk.c ++++ b/ext/rugged/rugged_diff_hunk.c +@@ -42,9 +42,7 @@ static VALUE rb_git_diff_hunk_each_line(VALUE self) + git_patch *patch; + int error = 0, l, lines_count, hunk_idx; + +- if (!rb_block_given_p()) { +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_line"), self); +- } ++ RETURN_ENUMERATOR(self, 0, 0); + + Data_Get_Struct(rugged_owner(self), git_patch, patch); + +diff --git a/ext/rugged/rugged_index.c b/ext/rugged/rugged_index.c +index dc52497..c21643d 100644 +--- a/ext/rugged/rugged_index.c ++++ b/ext/rugged/rugged_index.c +@@ -190,11 +190,9 @@ static VALUE rb_git_index_each(VALUE self) + git_index *index; + unsigned int i, count; + ++ RETURN_ENUMERATOR(self, 0, 0); + Data_Get_Struct(self, git_index, index); + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 0); +- + count = (unsigned int)git_index_entrycount(index); + for (i = 0; i < count; ++i) { + const git_index_entry *entry = git_index_get_byindex(index, i); +diff --git a/ext/rugged/rugged_note.c b/ext/rugged/rugged_note.c +index ea2f0c5..70508d1 100644 +--- a/ext/rugged/rugged_note.c ++++ b/ext/rugged/rugged_note.c +@@ -297,12 +297,9 @@ static VALUE rb_git_note_each(int argc, VALUE *argv, VALUE self) + struct rugged_cb_payload payload = { self, 0 }; + VALUE rb_notes_ref; + ++ RETURN_ENUMERATOR(self, argc, argv); + rb_scan_args(argc, argv, "01", &rb_notes_ref); + +- if (!rb_block_given_p()) { +- return rb_funcall(self, rb_intern("to_enum"), 3, CSTR2SYM("each_note"), self, rb_notes_ref); +- } +- + if (!NIL_P(rb_notes_ref)) { + Check_Type(rb_notes_ref, T_STRING); + notes_ref = StringValueCStr(rb_notes_ref); +diff --git a/ext/rugged/rugged_patch.c b/ext/rugged/rugged_patch.c +index 140d24d..2a7c0b7 100644 +--- a/ext/rugged/rugged_patch.c ++++ b/ext/rugged/rugged_patch.c +@@ -93,10 +93,7 @@ static VALUE rb_git_diff_patch_each_hunk(VALUE self) + int error = 0; + size_t hunks_count, h; + +- if (!rb_block_given_p()) { +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_hunk"), self); +- } +- ++ RETURN_ENUMERATOR(self, 0, 0); + Data_Get_Struct(self, git_patch, patch); + + hunks_count = git_patch_num_hunks(patch); +diff --git a/ext/rugged/rugged_reference_collection.c b/ext/rugged/rugged_reference_collection.c +index f335c2a..907fa4c 100644 +--- a/ext/rugged/rugged_reference_collection.c ++++ b/ext/rugged/rugged_reference_collection.c +@@ -114,15 +114,9 @@ static VALUE rb_git_reference_collection__each(int argc, VALUE *argv, VALUE self + git_reference_iterator *iter; + int error, exception = 0; + ++ RETURN_ENUMERATOR(self, argc, argv); + rb_scan_args(argc, argv, "01", &rb_glob); + +- if (!rb_block_given_p()) { +- return rb_funcall(self, +- rb_intern("to_enum"), 2, +- only_names ? CSTR2SYM("each_name") : CSTR2SYM("each"), +- rb_glob); +- } +- + rugged_check_repo(rb_repo); + + Data_Get_Struct(rb_repo, git_repository, repo); +diff --git a/ext/rugged/rugged_remote.c b/ext/rugged/rugged_remote.c +index 6c19397..b9e82f6 100644 +--- a/ext/rugged/rugged_remote.c ++++ b/ext/rugged/rugged_remote.c +@@ -304,13 +304,10 @@ static VALUE rb_git_remote_ls(int argc, VALUE *argv, VALUE self) + int error; + size_t heads_len, i; + ++ RETURN_ENUMERATOR(self, argc, argv); + Data_Get_Struct(self, git_remote, remote); +- + rb_scan_args(argc, argv, ":", &rb_options); + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 2, CSTR2SYM("ls"), rb_options); +- + rugged_remote_init_callbacks_and_payload_from_options(rb_options, &callbacks, &payload); + init_custom_headers(rb_options, &custom_headers); + +diff --git a/ext/rugged/rugged_remote_collection.c b/ext/rugged/rugged_remote_collection.c +index ce9ca03..967f927 100644 +--- a/ext/rugged/rugged_remote_collection.c ++++ b/ext/rugged/rugged_remote_collection.c +@@ -139,12 +139,7 @@ static VALUE rb_git_remote_collection__each(VALUE self, int only_names) + + VALUE rb_repo; + +- if (!rb_block_given_p()) { +- if (only_names) +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_name")); +- else +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each")); +- } ++ RETURN_ENUMERATOR(self, 0, 0); + + rb_repo = rugged_owner(self); + rugged_check_repo(rb_repo); +diff --git a/ext/rugged/rugged_repo.c b/ext/rugged/rugged_repo.c +index 1ac827a..6baf591 100644 +--- a/ext/rugged/rugged_repo.c ++++ b/ext/rugged/rugged_repo.c +@@ -1569,8 +1569,7 @@ static VALUE rb_git_repo_each_id(VALUE self) + git_odb *odb; + int error, exception = 0; + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each_id")); ++ RETURN_ENUMERATOR(self, 0, 0); + + Data_Get_Struct(self, git_repository, repo); + +diff --git a/ext/rugged/rugged_revwalk.c b/ext/rugged/rugged_revwalk.c +index 582f32a..be5cdc4 100644 +--- a/ext/rugged/rugged_revwalk.c ++++ b/ext/rugged/rugged_revwalk.c +@@ -365,14 +365,9 @@ static VALUE rb_git_walk(int argc, VALUE *argv, VALUE self) + struct walk_options w; + int exception = 0; + ++ RETURN_ENUMERATOR(self, argc, argv); + rb_scan_args(argc, argv, "10:", &rb_repo, &rb_options); + +- if (!rb_block_given_p()) { +- ID iter_method = ID2SYM(rb_intern("walk")); +- return rb_funcall(self, rb_intern("to_enum"), 3, +- iter_method, rb_repo, rb_options); +- } +- + Data_Get_Struct(rb_repo, git_repository, w.repo); + rugged_exception_check(git_revwalk_new(&w.walk, w.repo)); + +@@ -402,13 +397,9 @@ static VALUE rb_git_walk_with_opts(int argc, VALUE *argv, VALUE self, int oid_on + VALUE rb_options; + struct walk_options w; + ++ RETURN_ENUMERATOR(self, argc, argv); + rb_scan_args(argc, argv, "01", &rb_options); + +- if (!rb_block_given_p()) { +- ID iter_method = ID2SYM(rb_intern(oid_only ? "each_oid" : "each")); +- return rb_funcall(self, rb_intern("to_enum"), 2, iter_method, rb_options); +- } +- + Data_Get_Struct(self, git_revwalk, w.walk); + w.repo = git_revwalk_repository(w.walk); + +diff --git a/ext/rugged/rugged_submodule_collection.c b/ext/rugged/rugged_submodule_collection.c +index 2379979..ced2c01 100644 +--- a/ext/rugged/rugged_submodule_collection.c ++++ b/ext/rugged/rugged_submodule_collection.c +@@ -124,13 +124,12 @@ static VALUE rb_git_submodule_collection_each(VALUE self) + git_repository *repo; + int error; + struct rugged_cb_payload payload; ++ VALUE rb_repo; + +- VALUE rb_repo = rugged_owner(self); ++ RETURN_ENUMERATOR(self, 0, 0); ++ rb_repo = rugged_owner(self); + Data_Get_Struct(rb_repo, git_repository, repo); + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 1, CSTR2SYM("each")); +- + payload.exception = 0; + payload.rb_data = rb_repo; + +diff --git a/ext/rugged/rugged_tag_collection.c b/ext/rugged/rugged_tag_collection.c +index 11942c1..8f5fd4b 100644 +--- a/ext/rugged/rugged_tag_collection.c ++++ b/ext/rugged/rugged_tag_collection.c +@@ -236,13 +236,9 @@ static VALUE each_tag(int argc, VALUE *argv, VALUE self, int tag_names_only) + VALUE rb_repo = rugged_owner(self), rb_pattern; + const char *pattern = NULL; + ++ RETURN_ENUMERATOR(self, argc, argv); + rb_scan_args(argc, argv, "01", &rb_pattern); + +- if (!rb_block_given_p()) { +- VALUE symbol = tag_names_only ? CSTR2SYM("each_name") : CSTR2SYM("each"); +- return rb_funcall(self, rb_intern("to_enum"), 2, symbol, rb_pattern); +- } +- + if (!NIL_P(rb_pattern)) { + Check_Type(rb_pattern, T_STRING); + pattern = StringValueCStr(rb_pattern); +diff --git a/ext/rugged/rugged_tree.c b/ext/rugged/rugged_tree.c +index 3fab8f3..73423a3 100644 +--- a/ext/rugged/rugged_tree.c ++++ b/ext/rugged/rugged_tree.c +@@ -220,10 +220,9 @@ static VALUE rb_git_tree_each(VALUE self) + { + git_tree *tree; + size_t i, count; +- Data_Get_Struct(self, git_tree, tree); + +- if (!rb_block_given_p()) +- return rb_funcall(self, rb_intern("to_enum"), 0); ++ RETURN_ENUMERATOR(self, 0, 0); ++ Data_Get_Struct(self, git_tree, tree); + + count = git_tree_entrycount(tree); + +-- +2.16.1 + diff --git a/rubygem-rugged.spec b/rubygem-rugged.spec index 1ae07c7..b45512d 100644 --- a/rubygem-rugged.spec +++ b/rubygem-rugged.spec @@ -3,7 +3,7 @@ Summary: Rugged is a Ruby binding to the libgit2 library Name: rubygem-%{gem_name} Version: 0.26.0 -Release: 6%{?dist} +Release: 7%{?dist} License: MIT URL: https://github.com/libgit2/rugged Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem @@ -17,10 +17,12 @@ Source0: https://rubygems.org/gems/%{gem_name}-%{version}.gem # git checkout v0.26.0 # tar cfz rugged-0.26.0-test.tgz test/ Rakefile Source1: %{gem_name}-%{version}-test.tgz +# https://github.com/libgit2/rugged/commit/6eeccfebb0af3084d963e8dd5d7fdb13b2907a04 +Patch0001: 0001-Use-RETURN_ENUMERATOR-and-RETURN_SIZED_ENUMERATOR-ma.patch Requires: ruby(rubygems) Requires: ruby BuildRequires: ruby -BuildRequires: git +BuildRequires: git-core BuildRequires: cmake BuildRequires: libgit2-devel BuildRequires: ruby-devel @@ -40,54 +42,42 @@ Requires: %{name} = %{version}-%{release} BuildArch: noarch %description doc -Documentation for %{name} +Documentation for %{name}. %prep -gem unpack %{SOURCE0} +%autosetup -n %{gem_name}-%{version} -a 1 -S git -%setup -q -D -T -n %{gem_name}-%{version} - -gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec - -rm -rf vendor +rm -vrf vendor # Remove the bundled libraries from gemspec -sed -i -e 's\, "vendor[^,]*"\\g' rugged.gemspec +sed -i -e 's\, "vendor[^,]*"\\g' ../%{gem_name}-%{version}.gemspec # The build system requres libgit2's version.h to be present, and defaults to # using the vendor'd copy. Use the system copy instead. -sed -i -e 's|LIBGIT2_DIR = .*|LIBGIT2_DIR = "/usr"|' ext/rugged/extconf.rb +sed -i -e 's|LIBGIT2_DIR = .*|LIBGIT2_DIR = "%{_prefix}"|' ext/rugged/extconf.rb %build export CONFIGURE_ARGS="--with-cflags='%{optflags}' --use-system-libraries" -gem build %{gem_name}.gemspec +gem build ../%{gem_name}-%{version}.gemspec %gem_install %install mkdir -p %{buildroot}%{gem_dir} -cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/ +cp -a .%{gem_dir}/* %{buildroot}%{gem_dir}/ # move C extensions to the extdir. -%if 0%{?fedora} >= 21 mkdir -p %{buildroot}%{gem_extdir_mri}/ cp -a .%{gem_extdir_mri}/{gem.build_complete,%{gem_name}/} %{buildroot}%{gem_extdir_mri}/ -%else -mkdir -p %{buildroot}%{gem_extdir_mri}/ext/%{gem_name}/ -mv %{buildroot}%{gem_instdir}/ext/%{gem_name}/rugged.so %{buildroot}%{gem_extdir_mri}/ext/%{gem_name}/ -%endif # We don't need those files anymore. rm -rf %{buildroot}%{gem_instdir}/ext/ %check -pushd .%{gem_instdir} -tar xfz %{SOURCE1} -export LANG="en_US.UTF-8" -git config --global user.name John Doe +#export LANG="C.UTF-8" +#git config --global user.name John Doe # Comment out the test until we get the minitest/autorun figured out # testrb -Ilib test/*test.rb -popd %files %license %{gem_instdir}/LICENSE @@ -102,6 +92,9 @@ popd %doc %{gem_docdir} %changelog +* Sat Feb 10 2018 Igor Gnatenko - 0.26.0-7 +- Cleanups and fixes + * Fri Feb 09 2018 Fedora Release Engineering - 0.26.0-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild