[rubygem-cairo/f13/master] - Move C extension so that "require %gemname" works correctly

Mamoru Tasaka mtasaka at fedoraproject.org
Sat Oct 30 21:26:57 UTC 2010


commit 2d04ec00c3fc0abe2486d0911f09db68337ee005
Author: Mamoru Tasaka <tasaka1 at localhost.localdomain>
Date:   Sun Oct 31 06:26:58 2010 +0900

    - Move C extension so that "require %gemname" works correctly

 rubygem-cairo.spec |   70 +++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 50 insertions(+), 20 deletions(-)
---
diff --git a/rubygem-cairo.spec b/rubygem-cairo.spec
index b9e089d..333d1a3 100644
--- a/rubygem-cairo.spec
+++ b/rubygem-cairo.spec
@@ -14,7 +14,7 @@
 Summary:	Ruby bindings for cairo
 Name:		rubygem-%{gemname}
 Version:	1.10.0
-Release:	2%{?dist}
+Release:	3%{?dist}
 Group:		Development/Languages
 License:	GPLv2 or Ruby
 URL:		http://cairographics.org/rcairo/
@@ -97,36 +97,52 @@ sed -i -e '/pkg-config/s|project\.extra_deps|project.extra_dev_deps|' \
 sed -i -e '/pkg-config/s|add_runtime_dependency|add_development_dependency|' \
 	.%{gemdir}/specifications/%{gemname}-%{version}.gemspec
 
-pushd .%{geminstdir}
-# only create Makefile
-export CFLAGS="%{optflags}"
-ruby ./extconf.rb
-popd
-
-%install
-rm -rf %{buildroot}
-mkdir -p %{buildroot}%{gemdir}
-cp -a ./%{gemdir}/* %{buildroot}%{gemdir}
+# Once install to TMPINSTDIR for %%check
+rm -rf ./TMPINSTDIR
+mkdir -p ./TMPINSTDIR/%{gemdir}
+cp -a ./%{gemdir}/* ./TMPINSTDIR/%{gemdir}
 
-# Install C extensions, header files
+TOPDIR=$(pwd)
+## Install C extensions, header files
 pushd .%{geminstdir}
+# Once create Makefile, then:
+ruby extconf.rb
+
 make -C ext/cairo \
 	install \
 	INSTALL="install -p" \
-	DESTDIR=%{buildroot}/
+	DESTDIR=$TOPDIR/TMPINSTDIR/
+popd
 
-# remove all shebang, set permission to 0644
-for f in $(find %{buildroot}%{geminstdir} -name \*.rb)
+## remove all shebang, set permission to 0644
+for f in $(find ./TMPINSTDIR/%{geminstdir} -name \*.rb)
 do
 	sed -i -e '/^#!/d' $f
 	chmod 0644 $f
 done
 
+# Move C extension library to some private directory
+pushd ./TMPINSTDIR/%{geminstdir}
+grep -rl '%{gemname}.so' . | \
+	xargs sed -i \
+		-e "\@require at s|'%{gemname}.so'|'%{gemname}/%{gemname}.so'|" \
+		-e '\@require at s|"%{gemname}.so"|"%{gemname}/%{gemname}.so"|'
+popd
+pushd ./TMPINSTDIR/%{ruby_sitearch}
+mkdir %{gemname}
+mv %{gemname}.so %{gemname}/
+popd
+
 # cleanups
-rm -rf %{buildroot}%{geminstdir}/ext/
-rm -f %{buildroot}%{geminstdir}/lib/*.so
+rm -rf ./TMPINSTDIR/%{geminstdir}/ext/
+rm -f ./TMPINSTDIR/%{geminstdir}/lib/*.so
+rm -f ./TMPINSTDIR/%{geminstdir}/{Makefile*,extconf.rb}
+
+%install
+rm -rf %{buildroot}
+mkdir -p %{buildroot}
+cp -a ./TMPINSTDIR/* %{buildroot}/
 
-rm -f %{buildroot}%{geminstdir}/{Makefile*,extconf.rb}
 
 # The following method is completely copied from rubygem-gettext
 # spec file
@@ -193,13 +209,24 @@ create_symlink_rec %{geminstdir}/lib %{ruby_sitelib}
 rm -rf %{buildroot}
 
 %check
-pushd ./%{geminstdir}
+export RUBYLIB=$(pwd)/TMPINSTDIR/%{ruby_sitearch}
+
+pushd ./TMPINSTDIR/%{geminstdir}
+# kill unneeded make process
+rm -rf ./TMPBINDIR
+mkdir ./TMPBINDIR
+pushd ./TMPBINDIR
+ln -sf /bin/true make
+export PATH=$(pwd):$PATH
+popd
+
 ruby ./test/run-test.rb --verbose
 popd
 
 %files
 %defattr(-,root, root,-)
-%{ruby_sitearch}/%{gemname}.so
+%dir	%{ruby_sitearch}/%{gemname}/
+%{ruby_sitearch}/%{gemname}/%{gemname}.so
 %dir	%{geminstdir}/
 %doc	%{geminstdir}/[A-Z]*
 %exclude %{geminstdir}/Rakefile
@@ -225,6 +252,9 @@ popd
 %{ruby_sitearch}/rb_cairo.h
 
 %changelog
+* Sun Oct 31 2010 Mamoru Taska  <mtasaka at ioa.s.u-tokyo.ac.jp> 1.10.0-3
+- Move C extension so that "require %%gemname" works correctly
+
 * Tue Oct  5 2010 Mamoru Tasaka <mtasaka at ioa.s.u-tokyo.ac.jp> 1.10.0-2
 - Install one font at BuildRequires for test	
 


More information about the scm-commits mailing list