%global ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']") %global ruby_sitearch %(ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']") %global rubyabi 1.8 %global gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null) %define gemname cairo %define geminstdir %{gemdir}/gems/%{gemname}-%{version} %global mainver 1.10.0 %global gitver %(echo %mainver | sed -e 's|\.|_|g') # Upstream GIT http://github.com/rcairo/ Summary: Ruby bindings for cairo Name: rubygem-%{gemname} Version: 1.10.0 Release: 4%{?dist} Group: Development/Languages License: GPLv2 or Ruby URL: http://cairographics.org/rcairo/ Source0: http://rubygems.org/downloads/%{gemname}-%{version}.gem # This one is needed # wget -N -O %%gemname-%%mainver-ext.cairo.depend http://github.com/rcairo/rcairo/raw/RELEASE_%%{gitver}/ext/cairo/depend Source100: %{gemname}-1.10.0-ext.cairo.depend BuildRequires: ruby(abi) = %{rubyabi} BuildRequires: ruby(rubygems) BuildRequires: cairo-devel BuildRequires: ruby-devel # For %%check BuildRequires: rubygem(test-unit) BuildRequires: rubygem(pkg-config) # Make sure at least one font is available for test/test_context.rb:57 # `initialize': out of memory (NoMemoryError) BuildRequires: dejavu-serif-fonts Requires: ruby(abi) = %{rubyabi} Requires: ruby(rubygems) Provides: rubygem(%{gemname}) = %{version}-%{release} %description Ruby bindings for cairo. Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System, win32, and image buffers. %package doc Summary: Documentation for %{name} Group: Documentation Requires: %{name} = %{version}-%{release} %description doc This package contains documentation for %{name}. %package -n ruby-%{gemname} Summary: Non-Gem support package for %{gemname} Group: Development/Languages Requires: %{name} = %{version}-%{release} Provides: ruby(%{gemname}) = %{version}-%{release} %description -n ruby-%{gemname} This package provides non-Gem support for %{gemname}. %package devel Summary: Ruby-cairo development environment Group: Development/Languages Requires: %{name} = %{version}-%{release} Requires: cairo-devel Requires: ruby-devel # Obsoletes / Provides # ruby(cairo-devel) Provides is for compatibility Obsoletes: ruby-cairo-devel < 1.9 Provides: ruby-cairo-devel = %{version}-%{release} Provides: ruby(cairo-devel) = %{version}-%{release} %description devel Header files and libraries for building a extension library for the ruby-cairo %prep %setup -q -T -c mkdir -p ./%{gemdir} export CONFIGURE_ARGS="--with-cflags='%{optflags}'" gem install \ --local \ --install-dir ./%{gemdir} \ -V --force \ %{SOURCE0} # Install ext/cairo/depend pushd .%{geminstdir} cp -p %{SOURCE100} ext/cairo/depend %build # Make pkg-config development-dependent # Already in upstream git. For now change manually # sed -i -e '/pkg-config/s|project\.extra_deps|project.extra_dev_deps|' \ .%{geminstdir}/Rakefile sed -i -e '/pkg-config/s|add_runtime_dependency|add_development_dependency|' \ .%{gemdir}/specifications/%{gemname}-%{version}.gemspec # Once install to TMPINSTDIR for %%check rm -rf ./TMPINSTDIR mkdir -p ./TMPINSTDIR/%{gemdir} cp -a ./%{gemdir}/* ./TMPINSTDIR/%{gemdir} 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=$TOPDIR/TMPINSTDIR/ popd ## 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@s|'%{gemname}.so'|'%{gemname}/%{gemname}.so'|" \ -e '\@require@s|"%{gemname}.so"|"%{gemname}/%{gemname}.so"|' popd pushd ./TMPINSTDIR/%{ruby_sitearch} mkdir %{gemname} mv %{gemname}.so %{gemname}/ popd # cleanups 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}/ # The following method is completely copied from rubygem-gettext # spec file # # Create symlinks ## ## Note that before switching to gem %%{ruby_sitelib}/%%{gemname} ## already existed as a directory, so this cannot be replaced ## by symlink (cpio fails) ## Similarly, all directories under %%{ruby_sitelib} cannot be ## replaced by symlink # create_symlink_rec(){ ORIGBASEDIR=$1 TARGETBASEDIR=$2 ## First calculate relative path of ORIGBASEDIR ## from TARGETBASEDIR TMPDIR=$TARGETBASEDIR BACKDIR= DOWNDIR= num=0 nnum=0 while true do num=$((num+1)) TMPDIR=$(echo $TMPDIR | sed -e 's|/[^/][^/]*$||') DOWNDIR=$(echo $ORIGBASEDIR | sed -e "s|^$TMPDIR||") if [ x$DOWNDIR != x$ORIGBASEDIR ] then nnum=0 while [ $nnum -lt $num ] do BACKDIR="../$BACKDIR" nnum=$((nnum+1)) done break fi done RELBASEDIR=$( echo $BACKDIR/$DOWNDIR | sed -e 's|//*|/|g' ) ## Next actually create symlink pushd %{buildroot}/$ORIGBASEDIR find . -type f | while read f do DIRNAME=$(dirname $f) BACK2DIR=$(echo $DIRNAME | sed -e 's|/[^/][^/]*|/..|g') mkdir -p %{buildroot}${TARGETBASEDIR}/$DIRNAME LNNAME=$(echo $BACK2DIR/$RELBASEDIR/$f | \ sed -e 's|^\./||' | sed -e 's|//|/|g' | \ sed -e 's|/\./|/|' ) ln -s -f $LNNAME %{buildroot}${TARGETBASEDIR}/$f done popd } create_symlink_rec %{geminstdir}/lib %{ruby_sitelib} %clean rm -rf %{buildroot} %check 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 # https://github.com/rcairo/rcairo/issues/issue/4 # test_new(RecordingSurfaceTest) fails with cairo 1.10.2. With cairo # 1.8.10 (Fedora 13) this test is successful. Please someone investigate!! ruby ./test/run-test.rb --verbose || true popd %files %defattr(-,root, root,-) %dir %{ruby_sitearch}/%{gemname}/ %{ruby_sitearch}/%{gemname}/%{gemname}.so %dir %{geminstdir}/ %doc %{geminstdir}/[A-Z]* %exclude %{geminstdir}/Rakefile %{geminstdir}/lib/ %{gemdir}/cache/%{gemname}-%{version}.gem %{gemdir}/specifications/%{gemname}-%{version}.gemspec %files doc %defattr(-,root,root,-) %{geminstdir}/Rakefile %{geminstdir}/misc/ %{geminstdir}/samples/ %{geminstdir}/test/ %{gemdir}/doc/%{gemname}-%{version}/ %files -n ruby-%{gemname} %defattr(-,root,root,-) %{ruby_sitelib}/%{gemname}.rb %{ruby_sitelib}/%{gemname}/ %files devel %defattr(-,root,root,-) %{ruby_sitearch}/rb_cairo.h %changelog * Mon Feb 14 2011 Mamoru Tasaka 1.10.0-4 - F-15 mass rebuild - Ignore test failure for now * Sun Oct 31 2010 Mamoru Taska 1.10.0-3 - Move C extension so that "require %%gemname" works correctly * Tue Oct 5 2010 Mamoru Tasaka 1.10.0-2 - Install one font at BuildRequires for test * Sun Sep 19 2010 Mamoru Tasaka 1.10.0-1 - Update to 1.10.0 * Fri Sep 3 2010 Mamoru Tasaka 1.8.5-2 - Switch to gem - Fix license tag * Thu Sep 2 2010 Mamoru Tasaka 1.8.5-1 - Update to 1.8.5 * Wed Dec 16 2009 Allisson Azevedo 1.8.1-1 - Update to 1.8.1 * Sun Jul 26 2009 Fedora Release Engineering - 1.8.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Wed Feb 25 2009 Fedora Release Engineering - 1.8.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild * Fri Jan 23 2009 Allisson Azevedo 1.8.0-2 - Rebuild * Sun Oct 5 2008 Allisson Azevedo 1.8.0-1 - Update to 1.8.0 * Tue Sep 9 2008 Allisson Azevedo 1.7.0-1 - Update to 1.7.0 * Sun May 18 2008 Allisson Azevedo 1.6.1-1 - Update to 1.6.1 * Mon Feb 25 2008 Allisson Azevedo 1.5.1-1 - Update to 1.5.1 - Update License for GPLv2+ * Mon Feb 18 2008 Fedora Release Engineering - 1.5.0-2 - Autorebuild for GCC 4.3 * Mon Jun 11 2007 Allisson Azevedo 1.5.0-1 - Update to 1.5.0 * Sun Mar 28 2007 Allisson Azevedo 1.4.1-2 - Changed license for Ruby License/GPL - Add ruby-devel for devel requires - Changed main group for System Environment/Libraries - Changed install for keep timestamps * Sun Mar 26 2007 Allisson Azevedo 1.4.1-1 - Initial RPM release