%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) %global gemname cairo %global geminstdir %{gemdir}/gems/%{gemname}-%{version} # Upstream GIT http://github.com/rcairo/ Summary: Ruby bindings for cairo Name: rubygem-%{gemname} Version: 1.10.2 Release: 1%{?dist} Group: Development/Languages License: GPLv2 or Ruby URL: http://cairographics.org/rcairo/ Source0: http://rubygems.org/downloads/%{gemname}-%{version}.gem BuildRequires: ruby(abi) = %{rubyabi} BuildRequires: 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: 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} # TODO: remove ruby-%%{gemname} compat package for F-17 # TODO: needs dependency check 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 # # Actually ruby(cairo-dock) provides should not exist - # Remove on F-17 and above Obsoletes: ruby-cairo-devel < 1.9 Provides: ruby-cairo-devel = %{version}-%{release} %if 0%{?fedora} < 17 Provides: ruby(cairo-devel) = %{version}-%{release} %endif %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} find . -name \*.gem | xargs chmod 0644 %build # pkg-config dependency should be for deelopment find . -name \*.gemspec | \ xargs sed -i -e '\@pkg-config@s|runtime_dependency|development_dependency|' # Once install to TMPINSTDIR for %%check rm -rf ./TMPINSTDIR mkdir -p ./TMPINSTDIR/%{gemdir} cp -a ./%{gemdir}/* ./TMPINSTDIR/%{gemdir} TOPDIR=$(pwd) ## 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 mkdir -p ./TMPINSTDIR/%{ruby_sitearch}/%{gemname} pushd ./TMPINSTDIR mv .%{geminstdir}/lib/%{gemname}.so \ ./%{ruby_sitearch}/%{gemname}/ # Move header mv ./%{geminstdir}/lib/*.h \ ./%{ruby_sitearch}/ popd # cleanups rm -rf ./TMPINSTDIR/%{geminstdir}/ext/ rm -f ./TMPINSTDIR/%{geminstdir}/{Makefile*,extconf.rb} %install 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} %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 # Fix up test/run-test.rb sed -i -e '\@require .rubygems@a\\ngem "test-unit"\n' test/run-test.rb sed -i -e "\@require 'bundler/setup'@d" test/run-test.rb ruby ./test/run-test.rb popd %files %dir %{ruby_sitearch}/%{gemname}/ %{ruby_sitearch}/%{gemname}/%{gemname}.so %dir %{geminstdir}/ %doc %{geminstdir}/[A-Z]* %exclude %{geminstdir}/Gemfile %exclude %{geminstdir}/Rakefile %{geminstdir}/lib/ %{gemdir}/cache/%{gemname}-%{version}.gem %{gemdir}/specifications/%{gemname}-%{version}.gemspec %files doc %{geminstdir}/Gemfile %{geminstdir}/Rakefile %{geminstdir}/samples/ %{geminstdir}/test/ %{gemdir}/doc/%{gemname}-%{version}/ %files -n ruby-%{gemname} %{ruby_sitelib}/%{gemname}.rb %{ruby_sitelib}/%{gemname}/ %files devel %{ruby_sitearch}/rb_cairo.h %changelog * Wed Nov 30 2011 Mamoru Tasaka - 1.10.2-1 - 1.10.2 - Make dependency for pkg-config be development only again - Change the license tag to "GPLv2 or Ruby" - Remove defattr * Sun Oct 16 2011 Mamoru Tasaka - 1.10.1-1 - 1.10.1 * Mon Feb 14 2011 Mamoru Tasaka 1.10.0-4 - F-15 mass rebuild - Ignore test failure for now * Sun Oct 31 2010 Mamoru Tasaka 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