[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