diff options
| author | Jarek Prokop <jprokop@redhat.com> | 2023-03-16 15:56:09 +0100 |
|---|---|---|
| committer | Jarek Prokop <jprokop@redhat.com> | 2023-03-16 15:56:09 +0100 |
| commit | 37dec3669012e20d210a66974ae695fbb6b491d9 (patch) | |
| tree | 89887c17084b77c0b588abbdfdee62d4f2457391 | |
| parent | 62d98c6684dba2c015f00adcc3d4ddfc99ae82ae (diff) | |
| download | rubygem-google-protobuf-37dec3669012e20d210a66974ae695fbb6b491d9.tar.gz rubygem-google-protobuf-37dec3669012e20d210a66974ae695fbb6b491d9.tar.xz rubygem-google-protobuf-37dec3669012e20d210a66974ae695fbb6b491d9.zip | |
Add specfile and first needed patch
| -rw-r--r-- | 0001-Disable-wrapping-memcpy-for-Fedora.patch | 40 | ||||
| -rw-r--r-- | rubygem-google-protobuf.spec | 88 |
2 files changed, 128 insertions, 0 deletions
diff --git a/0001-Disable-wrapping-memcpy-for-Fedora.patch b/0001-Disable-wrapping-memcpy-for-Fedora.patch new file mode 100644 index 0000000..aa296d8 --- /dev/null +++ b/0001-Disable-wrapping-memcpy-for-Fedora.patch @@ -0,0 +1,40 @@ +From 395033ba6b6c78dd2e77f9fa3481df3e80426732 Mon Sep 17 00:00:00 2001 +From: Jarek Prokop <jprokop@redhat.com> +Date: Thu, 16 Mar 2023 15:51:04 +0100 +Subject: [PATCH] Disable wrapping memcpy for Fedora + +Wrapping exists to extend compatibility with multiple +glibc versions. Upstream links against v2.2.5 of memcpy. + +1. We do not care about multiple glibc versions +as we build against single glibc version. +2. It does not work with LTO. + +See upstream bug report. +https://github.com/protocolbuffers/protobuf/issues/11935 +--- + ruby/ext/google/protobuf_c/extconf.rb | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ruby/ext/google/protobuf_c/extconf.rb b/ruby/ext/google/protobuf_c/extconf.rb +index b7c439b0b..7fc63af36 100755 +--- a/ruby/ext/google/protobuf_c/extconf.rb ++++ b/ruby/ext/google/protobuf_c/extconf.rb +@@ -12,10 +12,10 @@ else + $CFLAGS += " -std=gnu99 -O3 -DNDEBUG" + end + +-if RUBY_PLATFORM =~ /linux/ +- # Instruct the linker to point memcpy calls at our __wrap_memcpy wrapper. +- $LDFLAGS += " -Wl,-wrap,memcpy" +-end ++# if RUBY_PLATFORM =~ /linux/ ++# # Instruct the linker to point memcpy calls at our __wrap_memcpy wrapper. ++# $LDFLAGS += " -Wl,-wrap,memcpy" ++# end + + $VPATH << "$(srcdir)/third_party/utf8_range" + $INCFLAGS += " -I$(srcdir)/third_party/utf8_range" +-- +2.40.0.rc2 + diff --git a/rubygem-google-protobuf.spec b/rubygem-google-protobuf.spec new file mode 100644 index 0000000..18cce53 --- /dev/null +++ b/rubygem-google-protobuf.spec @@ -0,0 +1,88 @@ +# Generated from google-protobuf-3.22.2.gem by gem2rpm -*- rpm-spec -*- +%global gem_name google-protobuf + +Name: rubygem-%{gem_name} +Version: 3.22.2 +Release: 1%{?dist} +Summary: Protocol Buffers +License: BSD-3-Clause +URL: https://developers.google.com/protocol-buffers +Source0: %{gem_name}-%{version}.gem + +# Wrapping does not work with LTO. +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88643 +# Additionaly the wrapping exists for extending compatibility with +# multiple glibc versions. We do not care about that. +# https://github.com/protocolbuffers/protobuf/issues/11935 +Patch0: 0001-Disable-wrapping-memcpy-for-Fedora.patch + +BuildRequires: ruby(release) +BuildRequires: rubygems-devel +BuildRequires: ruby-devel +# Compiler is required for build of gem binary extension. +# https://fedoraproject.org/wiki/Packaging:C_and_C++#BuildRequires_and_Requires +BuildRequires: gcc +# BuildRequires: rubygem(rake-compiler-dock) = 1.2.1 +# BuildRequires: rubygem(rake-compiler) >= 1.1.0 +# BuildRequires: rubygem(rake-compiler) < 1.2 +BuildRequires: rubygem(test-unit) +# BuildRequires: rubygem(test-unit) >= 3.0 +# BuildRequires: rubygem(test-unit) < 4 +# BuildRequires: rubygem(test-unit) >= 3.0.9 + +%description +Protocol Buffers are Google's data interchange format. + + +%package doc +Summary: Documentation for %{name} +Requires: %{name} = %{version}-%{release} +BuildArch: noarch + +%description doc +Documentation for %{name}. + +%prep +%setup -q -n %{gem_name}-%{version} + +%patch0 -p2 + +%build +# Create the gem as gem install only works on a gem file +gem build ../%{gem_name}-%{version}.gemspec + +# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir +# by default, so that we can move it into the buildroot in %%install +%gem_install + +%install +mkdir -p %{buildroot}%{gem_dir} +cp -a .%{gem_dir}/* \ + %{buildroot}%{gem_dir}/ + +mkdir -p %{buildroot}%{gem_extdir_mri} +cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/ + +# Prevent dangling symlink in -debuginfo (rhbz#878863). +rm -rf %{buildroot}%{gem_instdir}/ext/ + + +%check +pushd .%{gem_instdir} +# ruby -e 'Dir.glob "./test/**/*_test.rb", &method(:require)' +popd + +%files +%dir %{gem_instdir} +%{gem_extdir_mri} +%{gem_libdir} +%exclude %{gem_cache} +%{gem_spec} + +%files doc +%doc %{gem_docdir} + + +%changelog +* Thu Mar 16 2023 Jarek Prokop <jprokop@redhat.com> - 3.22.2-1 +- Initial package |
