#1 Backport build fixes from Ruby core repository
Closed 5 years ago by vondruch. Opened 5 years ago by pvalena.
rpms/ pvalena/rubygem-json fix-ftbfs  into  master

@@ -0,0 +1,132 @@ 

+ From 78baad8e646180deb1d85da20da31398aa68cad4 Mon Sep 17 00:00:00 2001

+ From: eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>

+ Date: Fri, 3 Aug 2018 15:11:22 +0000

+ Subject: [PATCH 1/2] Fix missed update of parser source in r62429

+ 

+ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64175 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

+ ---

+  ext/json/ext/parser/parser.rl | 1 +

+  1 file changed, 1 insertion(+)

+ 

+ diff --git a/ext/json/ext/parser/parser.rl b/ext/json/ext/parser/parser.rl

+ index 29900a4..fba01ac 100644

+ --- a/ext/json/ext/parser/parser.rl

+ +++ b/ext/json/ext/parser/parser.rl

+ @@ -824,6 +824,7 @@ static VALUE cParser_source(VALUE self)

+  

+  void Init_parser(void)

+  {

+ +#undef rb_intern

+      rb_require("json/common");

+      mJSON = rb_define_module("JSON");

+      mExt = rb_define_module_under(mJSON, "Ext");

+ 

+ From 033dd10ac202a94a74652ad93e77c68937cc7b8e Mon Sep 17 00:00:00 2001

+ From: eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>

+ Date: Fri, 3 Aug 2018 15:11:36 +0000

+ Subject: [PATCH 2/2] ext/json/parser/parser.c: do not call rb_str_resize() on

+  Time object

+ 

+ * See https://github.com/flori/json/issues/342

+ 

+ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64177 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

+ ---

+  ext/json/ext/parser/parser.c  | 20 +++++++++++---------

+  ext/json/ext/parser/parser.rl |  4 +++-

+  2 files changed, 14 insertions(+), 10 deletions(-)

+ 

+ diff --git a/ext/json/ext/parser/parser.c b/ext/json/ext/parser/parser.c

+ index d2e4eb6..f41aac5 100644

+ --- a/ext/json/ext/parser/parser.c

+ +++ b/ext/json/ext/parser/parser.c

+ @@ -1659,7 +1659,9 @@ case 7:

+      if (json->symbolize_names && json->parsing_name) {

+        *result = rb_str_intern(*result);

+      } else {

+ -      rb_str_resize(*result, RSTRING_LEN(*result));

+ +          if (RB_TYPE_P(*result, T_STRING)) {

+ +              rb_str_resize(*result, RSTRING_LEN(*result));

+ +          }

+      }

+      if (cs >= JSON_string_first_final) {

+          return p + 1;

+ @@ -1830,7 +1832,7 @@ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self)

+  }

+  

+  

+ -#line 1834 "parser.c"

+ +#line 1836 "parser.c"

+  enum {JSON_start = 1};

+  enum {JSON_first_final = 10};

+  enum {JSON_error = 0};

+ @@ -1838,7 +1840,7 @@ enum {JSON_error = 0};

+  enum {JSON_en_main = 1};

+  

+  

+ -#line 742 "parser.rl"

+ +#line 744 "parser.rl"

+  

+  

+  /*

+ @@ -1855,16 +1857,16 @@ static VALUE cParser_parse(VALUE self)

+    GET_PARSER;

+  

+  

+ -#line 1859 "parser.c"

+ +#line 1861 "parser.c"

+  	{

+  	cs = JSON_start;

+  	}

+  

+ -#line 758 "parser.rl"

+ +#line 760 "parser.rl"

+    p = json->source;

+    pe = p + json->len;

+  

+ -#line 1868 "parser.c"

+ +#line 1870 "parser.c"

+  	{

+  	if ( p == pe )

+  		goto _test_eof;

+ @@ -1898,7 +1900,7 @@ case 1:

+  cs = 0;

+  	goto _out;

+  tr2:

+ -#line 734 "parser.rl"

+ +#line 736 "parser.rl"

+  	{

+          char *np = JSON_parse_value(json, p, pe, &result, 0);

+          if (np == NULL) { p--; {p++; cs = 10; goto _out;} } else {p = (( np))-1;}

+ @@ -1908,7 +1910,7 @@ cs = 0;

+  	if ( ++p == pe )

+  		goto _test_eof10;

+  case 10:

+ -#line 1912 "parser.c"

+ +#line 1914 "parser.c"

+  	switch( (*p) ) {

+  		case 13: goto st10;

+  		case 32: goto st10;

+ @@ -1997,7 +1999,7 @@ case 9:

+  	_out: {}

+  	}

+  

+ -#line 761 "parser.rl"

+ +#line 763 "parser.rl"

+  

+    if (cs >= JSON_first_final && p == pe) {

+      return result;

+ diff --git a/ext/json/ext/parser/parser.rl b/ext/json/ext/parser/parser.rl

+ index fba01ac..edab32b 100644

+ --- a/ext/json/ext/parser/parser.rl

+ +++ b/ext/json/ext/parser/parser.rl

+ @@ -554,7 +554,9 @@ static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *resu

+      if (json->symbolize_names && json->parsing_name) {

+        *result = rb_str_intern(*result);

+      } else {

+ -      rb_str_resize(*result, RSTRING_LEN(*result));

+ +          if (RB_TYPE_P(*result, T_STRING)) {

+ +              rb_str_resize(*result, RSTRING_LEN(*result));

+ +          }

+      }

+      if (cs >= JSON_string_first_final) {

+          return p + 1;

file modified
+27 -40
@@ -2,7 +2,7 @@ 

  

  Name:           rubygem-%{gem_name}

  Version:        2.1.0

- Release:        106%{?dist}

+ Release:        107%{?dist}

  

  Summary:        A JSON implementation in Ruby

  
@@ -11,6 +11,9 @@ 

  License:        Ruby or GPLv2

  URL:            http://json.rubyforge.org

  Source0:        http://gems.rubyforge.org/gems/%{gem_name}-%{version}.gem

+ # Backport build fixes from Ruby core repository

+ # https://github.com/flori/json/pull/359

+ Patch0: rubygem-json-2.1.0-Backport-from-Ruby-core-repository.patch

  

  BuildRequires:  gcc

  BuildRequires:	ruby(release)
@@ -41,38 +44,19 @@ 

  This package contains documentation for %{name}.

  

  %prep

- %setup -q -c -T

+ %setup -q -n %{gem_name}-%{version}

  

- # Gem repack

- TOPDIR=$(pwd)

- mkdir tmpunpackdir

- pushd tmpunpackdir

- 

- gem unpack %{SOURCE0}

- cd %{gem_name}-%{version}

+ %patch0 -p1

  

  # Change cflags to honor Fedora compiler flags correctly

  find . -name extconf.rb | xargs sed -i -e 's|-O3|-O2|' -e 's|-O0|-O2|'

  

- gem specification -l --ruby %{SOURCE0} > %{gem_name}.gemspec

- gem build %{gem_name}.gemspec

- mv %{gem_name}-%{version}.gem $TOPDIR

- 

- popd

- rm -rf tmpunpackdir

- 

- 

  %build

+ gem build ../%{gem_name}-%{version}.gemspec

  %gem_install

  

  find . -name \*gem -exec chmod 0644 {} \;

  

- # compile again

- find . -name extconf.rb | while read f

- do

- 	make -C $(dirname $f) clean all install

- done

- 

  # remove pure

  rm -fr .%{gem_instdir}/lib/json/pure*

  
@@ -92,17 +76,6 @@ 

  find $RPM_BUILD_ROOT%{gem_instdir} -name \*.rb -print0 | \

  	xargs --null chmod 0644

  

- # We don't need those files anymore.

- rm -rf $RPM_BUILD_ROOT%{gem_instdir}/ext

- rm -rf $RPM_BUILD_ROOT%{gem_instdir}/install.rb

- rm -rf $RPM_BUILD_ROOT%{gem_instdir}/{.require_paths,.gitignore,.travis.yml}

- rm -rf $RPM_BUILD_ROOT%{gem_instdir}/lib/json/ext/

- rm -rf $RPM_BUILD_ROOT%{gem_instdir}/diagrams

- rm -rf $RPM_BUILD_ROOT%{gem_docdir}/rdoc/classes/.src

- rm -rf $RPM_BUILD_ROOT%{gem_docdir}/rdoc/classes/.html

- 

- rm -rf $RPM_BUILD_ROOT%{gem_instdir}/java/

- 

  %check

  pushd .%{gem_instdir}

  ruby -Ilib:$RPM_BUILD_ROOT%{gem_extdir_mri}:. \
@@ -111,7 +84,6 @@ 

  

  

  %files

- %doc %{gem_instdir}/[A-Z]*

  %dir %{gem_instdir}

  %dir %{gem_libdir}

  %dir %{gem_libdir}/%{gem_name}
@@ -122,22 +94,37 @@ 

  %{gem_libdir}/%{gem_name}/ext.rb

  %{gem_libdir}/%{gem_name}/version.rb

  %{gem_libdir}/%{gem_name}/generic_object.rb

- %{ruby_libdir}/json*

- %{ruby_libarchdir}/json*

+ %{ruby_libdir}/json

+ %{ruby_libarchdir}/json

  %{gem_extdir_mri}/

  %{gem_spec}

  %exclude %{gem_cache}

- %exclude %{gem_instdir}/Rakefile

+ %exclude %{gem_instdir}/ext

+ %exclude %{gem_instdir}/install.rb

+ %exclude %{gem_instdir}/.*

+ %exclude %{gem_instdir}/lib/json/ext/

+ %exclude %{gem_instdir}/diagrams

+ %exclude %{gem_docdir}/rdoc/classes/.*

+ %exclude %{gem_instdir}/java/

+ %exclude %{ruby_libdir}/json.rb

  

  %files      doc

  %{gem_instdir}/data

  %{gem_instdir}/references/

  %{gem_instdir}/*gemspec

  %{gem_docdir}/

- %exclude %{gem_instdir}/tests

- 

+ %{gem_instdir}/Rakefile

+ %{gem_instdir}/tests

+ %doc %{gem_instdir}/CHANGES.md

+ %{gem_instdir}/Gemfile

+ %doc %{gem_instdir}/README-json-jruby.md

+ %doc %{gem_instdir}/README.md

+ %{gem_instdir}/VERSION

  

  %changelog

+ * Tue Jan 22 2019 Pavel Valena <pvalena@redhat.com> - 2.1.0-107

+ - Fix FTBFS

+ 

  * Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.0-106

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild