diff --git a/.gitignore b/.gitignore index f147169..0720ee1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,2 @@ -/cairo-1.10.0.gem -/cairo-1.10.2.gem -/cairo-1.12.2-af3e3fc059.gem -/cairo-1.12.2.gem -/cairo-1.12.3.gem -/cairo-1.12.4.gem -/cairo-1.12.6.gem +/cairo-*gem +/rcairo-*-test-missing-files.tar.gz diff --git a/rcairo-create-missing-test-files.sh b/rcairo-create-missing-test-files.sh new file mode 100644 index 0000000..8d106da --- /dev/null +++ b/rcairo-create-missing-test-files.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +usage() { + echo "$0 " +} + +set -e +set -x + +if [ $# -lt 1 ] ; then + usage + exit 1 +fi + +VERSION=$1 + +TMPDIR=$(mktemp -d /tmp/rcairo-XXXXXX) +CURDIR=$(pwd) + +pushd $TMPDIR + +git clone https://github.com/rcairo/rcairo.git +cd rcairo/ + +git reset --hard v$VERSION +cd .. + +tar czf $CURDIR/rcairo-${VERSION}-test-missing-files.tar.gz rcairo/test/fixture/ + +popd +rm -rf $TMPDIR + diff --git a/rubygem-cairo.spec b/rubygem-cairo.spec index 8d8f13d..7fb9f68 100644 --- a/rubygem-cairo.spec +++ b/rubygem-cairo.spec @@ -1,67 +1,61 @@ -%if 0%{?fedora} <= 16 -%global ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']") -%global ruby_sitearch %(ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']") -%endif -%if 0%{?fedora} >= 17 || 0%{?rhel} >= 7 -%if 0%{?fedora} < 19 -%global rubyabi 1.9.1 -%endif %global header_dir %{ruby_vendorarchdir} -%global ruby19 1 -%else -%global rubyabi 1.8 -%global header_dir %{ruby_sitearch} -%global ruby19 0 -%endif %global gem_name cairo -%global gemver 1.12.6 #%%global gem_githash af3e3fc059 +%bcond_with bootstrap +%if 0%{?fedora} >= 42 +%bcond_with bootstrap +%endif + # Upstream GIT http://github.com/rcairo/ +%undefine _changelog_trimtime + Summary: Ruby bindings for cairo Name: rubygem-%{gem_name} -Version: %{gemver} -Release: 1%{?dist} -Group: Development/Languages -License: GPLv2 or Ruby +Version: 1.18.4 +Release: 4%{?dist} +# From gemspec +# SPDX confirmed +License: GPL-2.0-or-later OR Ruby + URL: http://cairographics.org/rcairo/ -%if 1 Source0: http://rubygems.org/downloads/%{gem_name}-%{version}.gem -%else -Source0: %{gem_name}-%{gemver}-%{gem_githash}.gem -%endif # Git based gem is created by below Source1: create-cairo-gem.sh +# FIXME +Source11: rcairo-%{version}-test-missing-files.tar.gz +# Source11 is generated by $bash %%SOURCE12 %%version +Source12: rcairo-create-missing-test-files.sh -%if 0%{?fedora} >= 19 Requires: ruby(release) BuildRequires: ruby(release) -%else -Requires: ruby(abi) = %{rubyabi} -Requires: ruby -BuildRequires: ruby(abi) = %{rubyabi} -BuildRequires: ruby -%endif + +BuildRequires: gcc BuildRequires: rubygems-devel BuildRequires: cairo-devel BuildRequires: ruby-devel +BuildRequires: rubygem(red-colors) # For %%check BuildRequires: rubygem(test-unit) +BuildRequires: rubygem(test-unit-notify) BuildRequires: rubygem(pkg-config) +BuildRequires: rubygem(native-package-installer) +# Circular dependency +%if %{without bootstrap} +BuildRequires: rubygem(poppler) +%endif # Make sure at least one font is available for test/test_context.rb:57 # `initialize': out of memory (NoMemoryError) BuildRequires: dejavu-serif-fonts Requires: rubygems Provides: rubygem(%{gem_name}) = %{version}-%{release} -%if %{ruby19} Obsoletes: ruby-%{gem_name} <= %{version}-%{release} Provides: ruby-%{gem_name} = %{version}-%{release} -%endif %description Ruby bindings for cairo. Cairo is a 2D graphics library with support for @@ -70,57 +64,38 @@ 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-%{gem_name} -# TODO: remove ruby-%%{gem_name} compat package for F-17 -# TODO: needs dependency check -Summary: Non-Gem support package for %{gem_name} -Group: Development/Languages -Requires: %{name} = %{version}-%{release} -Provides: ruby(%{gem_name}) = %{version}-%{release} - -%description -n ruby-%{gem_name} -This package provides non-Gem support for %{gem_name}. - %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 %{ruby19} < 1 -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 +%setup -q -n %{gem_name}-%{version} +mv ../%{gem_name}-%{version}.gemspec . -mkdir -p ./%{gem_dir} -export CONFIGURE_ARGS="--with-cflags='%{optflags}'" -%gem_install -n %{SOURCE0} +#Patches, etc -find . -name \*.gem | xargs chmod 0644 +# pkg-config dependency should be for development +sed -i %{gem_name}-%{version}.gemspec \ + -e '\@pkg-config@s|runtime_dependency|development_dependency|' \ + -e '\@native-package-installer@s|runtime_dependency|development_dependency|' \ + %{nil} %build -# pkg-config dependency should be for development -find . -name \*.gemspec | \ - xargs sed -i -e '\@pkg-config@s|runtime_dependency|development_dependency|' +gem build %{gem_name}-%{version}.gemspec +%gem_install # Once install to TMPINSTDIR for %%check rm -rf ./TMPINSTDIR @@ -136,109 +111,34 @@ do chmod 0644 $f done -# Move C extension library to some private directory -pushd ./TMPINSTDIR/%{gem_instdir} -%if %{ruby19} < 1 -grep -rl '%{gem_name}.so' . | \ - xargs sed -i \ - -e "\@require@s|'%{gem_name}.so'|'%{gem_name}/%{gem_name}.so'|" \ - -e '\@require@s|"%{gem_name}.so"|"%{gem_name}/%{gem_name}.so"|' -popd -mkdir -p ./TMPINSTDIR/%{ruby_sitearch}/%{gem_name} +# Move C extension +mkdir -p ./TMPINSTDIR/%{gem_extdir_mri} +cp -a ./%{gem_extdir_mri}/* TMPINSTDIR/%{gem_extdir_mri}/ + pushd ./TMPINSTDIR -mv .%{gem_instdir}/lib/%{gem_name}.so \ - ./%{ruby_sitearch}/%{gem_name}/ -%else +mkdir -p .%{header_dir} +mv .%{gem_extdir_mri}/*.h .%{header_dir}/ +rm -f .%{gem_extdir_mri}/{gem_make.out,mkmf.log} + popd -pushd ./TMPINSTDIR -mkdir -p .%{gem_extdir_mri}/lib -mv .%{gem_instdir}/lib/%{gem_name}.so \ - ./%{gem_extdir_mri}/lib -%endif - -# Move header -mkdir -p ./%{header_dir} -mv ./%{gem_instdir}/lib/*.h \ - ./%{header_dir}/ -popd - - -# cleanups -rm -rf ./TMPINSTDIR/%{gem_instdir}/ext/ -rm -f ./TMPINSTDIR/%{gem_instdir}/{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}/%%{gem_name} -## 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 +# cleanups +rm -f %{buildroot}%{gem_cache} +pushd %{buildroot}%{gem_instdir} +rm -rf \ + Gemfile \ + Rakefile \ + *.gemspec \ + ext/ \ + test/ \ + %{nil} popd -} - -%if %{ruby19} < 1 -create_symlink_rec %{gem_instdir}/lib %{ruby_sitelib} -%endif - %check -%if %{ruby19} -export RUBYLIB=$(pwd)/TMPINSTDIR/%{gem_instdir}:$(pwd)/TMPINSTDIR/%{gem_extdir_mri}/lib -%else -export RUBYLIB=$(pwd)/TMPINSTDIR/%{ruby_sitearch} -%endif +export RUBYLIB=$(pwd)/TMPINSTDIR/%{gem_instdir}:$(pwd)/TMPINSTDIR/%{gem_extdir_mri}/ pushd ./TMPINSTDIR/%{gem_instdir} # kill unneeded make process @@ -249,48 +149,273 @@ ln -sf /bin/true make export PATH=$(pwd):$PATH popd +# Install missing files +tar xf %{SOURCE11} +cp -a rcairo/test/* test + # 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 -sed -i -e "\@require@s|test-unit|test/unit|" test/run-test.rb + +%if %{with bootstrap} +# Kill tests which needs poppler +sed -i test/helper.rb -e '\@poppler@s@^@#@' +for f in \ + test/test_context.rb \ + test/test_pdf_surface.rb \ + %{nil} +do + mv $f $f.orig +done +%endif ruby ./test/run-test.rb -popd %files -%if %{ruby19} < 1 -%dir %{ruby_sitearch}/%{gem_name}/ -%{ruby_sitearch}/%{gem_name}/%{gem_name}.so -%else -%dir %{gem_extdir_mri} -%dir %{gem_extdir_mri}/lib -%{gem_extdir_mri}/lib/%{gem_name}.so -%endif +%{gem_extdir_mri}/ + %dir %{gem_instdir}/ -%doc %{gem_instdir}/[A-Z]* -%exclude %{gem_instdir}/Gemfile -%exclude %{gem_instdir}/Rakefile +%doc %{gem_instdir}/[A-CN-Z]* +%license %{gem_instdir}/GPL + %{gem_instdir}/lib/ -%{gem_cache} %{gem_spec} %files doc -%{gem_instdir}/Gemfile -%{gem_instdir}/Rakefile %{gem_instdir}/samples/ -%{gem_instdir}/test/ %{gem_docdir}/ -%if %{ruby19} < 1 -%files -n ruby-%{gem_name} -%{ruby_sitelib}/%{gem_name}.rb -%{ruby_sitelib}/%{gem_name}/ -%endif - %files devel %{header_dir}/rb_cairo.h %changelog +* Thu Jan 08 2026 Mamoru TASAKA - 1.18.4-4 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 + +* Thu Oct 30 2025 Mamoru TASAKA - 1.18.4-3 +- Bump release + +* Fri Jul 25 2025 Fedora Release Engineering - 1.18.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Wed Mar 12 2025 Mamoru TASAKA - 1.18.4-1 +- 1.18.4 + +* Sat Jan 18 2025 Fedora Release Engineering - 1.17.14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jan 09 2025 Mamoru TASAKA - 1.17.14-1 +- 1.17.4 + +* Tue Jan 07 2025 Mamoru TASAKA - 1.17.13-8 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4 + +* Sat Nov 02 2024 Mamoru TASAKA - 1.17.13-7 +- Kill loop dependency for now + +* Fri Jul 19 2024 Fedora Release Engineering - 1.17.13-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Tue Feb 06 2024 Mamoru TASAKA - 1.17.13-5 +- Bump and rebuild + +* Fri Jan 26 2024 Fedora Release Engineering - 1.17.13-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Mon Jan 22 2024 Fedora Release Engineering - 1.17.13-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jan 03 2024 Mamoru TASAKA - 1.17.13-2 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3 + +* Tue Dec 19 2023 Mamoru TASAKA - 1.17.13-1 +- 1.17.13 + +* Fri Jul 21 2023 Fedora Release Engineering - 1.17.12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jun 19 2023 Mamoru TASAKA - 1.17.12-1 +- 1.17.12 + +* Thu Jun 15 2023 Mamoru TASAKA - 1.17.9-1 +- 1.17.9 + +* Wed May 24 2023 Mamoru TASAKA - 1.17.8-5 +- Enable test suite again +- SPDX migration +- spec file cleanup + +* Fri Jan 20 2023 Fedora Release Engineering - 1.17.8-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jan 04 2023 Mamoru TASAKA - 1.17.8-3 +- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 + +* Thu Sep 29 2022 Mamoru TASAKA - 1.17.8-2 +- Once kill test suite dependency for now + +* Sun Sep 4 2022 Mamoru TASAKA - 1.17.8-1 +- 1.17.8 + +* Thu Aug 4 2022 Mamoru TASAKA - 1.17.7-1 +- 1.17.7 + +* Sat Jul 30 2022 Mamoru TASAKA - 1.17.6-1 +- 1.17.6 + +* Thu Jul 28 2022 Mamoru TASAKA - 1.17.5-6 +- Modify test script for cairo 1.17.6 change + +* Sat Jul 23 2022 Fedora Release Engineering - 1.17.5-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sun Jan 23 2022 Mamoru TASAKA - 1.17.5-4 +- F-36: rebuild for ruby31 + +* Fri Jan 21 2022 Fedora Release Engineering - 1.17.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 1.17.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Mar 11 2021 Mamoru TASAKA - 1.17.5-1 +- 1.17.5 + +* Wed Jan 27 2021 Fedora Release Engineering - 1.16.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jan 06 2021 Mamoru TASAKA - 1.16.6-2 +- F-34: rebuild against ruby 3.0 + +* Thu Dec 31 2020 Mamoru TASAKA - 1.16.6-1.99 +- Rebuild for ruby 3.0 +- Set bootstrap logic for test suite + +* Sun Aug 9 2020 Mamoru TASAKA - 1.16.6-1 +- 1.16.6 + +* Wed Jul 29 2020 Fedora Release Engineering - 1.16.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Feb 5 2020 Mamoru TASAKA - 1.16.5-1 +- 1.16.5 + +* Thu Jan 30 2020 Fedora Release Engineering - 1.16.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Fri Jan 17 2020 Mamoru TASAKA - 1.16.4-4 +- Enable tests again + +* Fri Jan 17 2020 Mamoru TASAKA - 1.16.4-3 +- F-32: rebuild against ruby27 +- Once disable tests for circular dependency + +* Fri Jul 26 2019 Fedora Release Engineering - 1.16.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 1.16.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 21 2019 Mamoru TASAKA - 1.16.2-2 +- F-30: rebuild against ruby26 +- Once disable tests for circular dependency + +* Wed Nov 14 2018 Mamoru TASAKA - 1.16.2-1 +- 1.16.2 + +* Fri Aug 24 2018 Mamoru TASAKA - 1.15.14-1 +- 1.15.14 + +* Sat Jul 14 2018 Fedora Release Engineering - 1.15.13-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed May 2 2018 Mamoru TASAKA - 1.15.13-1 +- 1.15.13 + +* Fri Mar 16 2018 Mamoru TASAKA - 1.15.12-1 +- 1.15.12 + +* Fri Feb 09 2018 Fedora Release Engineering - 1.15.11-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Jan 20 2018 Björn Esser - 1.15.11-3 +- Rebuilt for switch to libxcrypt + +* Wed Jan 03 2018 Mamoru TASAKA - 1.15.11-2 +- F-28: rebuild for ruby25 + +* Wed Dec 27 2017 Mamoru TASAKA - 1.15.11-1 +- 1.15.11 + +* Sat Oct 21 2017 Mamoru TASAKA - 1.15.10-1 +- 1.15.10 + +* Thu Aug 03 2017 Fedora Release Engineering - 1.15.9-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.15.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 14 2017 Adam Jackson - 1.15.9-2 +- Rebuild to disable cairo-gl in F27 + +* Mon Jun 5 2017 Mamoru TASAKA - 1.15.9-1 +- 1.15.9 + +* Thu May 4 2017 Mamoru TASAKA - 1.15.7-1 +- 1.15.7 + +* Sat Feb 11 2017 Fedora Release Engineering - 1.15.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sun Jan 15 2017 Mamoru TASAKA - 1.15.5-1 +- 1.15.5 + +* Wed Jan 11 2017 Mamoru TASAKA - 1.15.4-1 +- 1.15.4 + +* Tue Nov 29 2016 Mamoru TASAKA - 1.15.3-1 +- 1.15.3 + +* Tue Apr 19 2016 Mamoru TASAKA - 1.15.2-1 +- 1.15.2 + +* Thu Feb 04 2016 Fedora Release Engineering - 1.14.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 11 2016 Mamoru TASAKA - 1.14.3-2 +- F-24: rebuild against ruby23 + +* Wed Sep 9 2015 amoru TASAKA - 1.14.3-1 +- 1.14.3 + +* Thu Jun 18 2015 Fedora Release Engineering - 1.14.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Thu Jan 15 2015 Mamoru TASAKA - 1.14.1-2 +- F-22: Rebuild for ruby 2.2 + +* Fri Dec 26 2014 Mamoru TASAKA - 1.14.1-1 +- 1.14.1 + +* Tue Nov 25 2014 Mamoru TASAKA - 1.14.0-1 +- 1.14.0 + +* Mon Aug 18 2014 Fedora Release Engineering - 1.12.9-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 1.12.9-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Apr 16 2014 Mamoru TASAKA - 1.12.9-2 +- F-21: rebuild for ruby 2.1 / rubygems 2.2 + +* Wed Apr 9 2014 Mamoru TASAKA - 1.12.9-1 +- 1.12.9 + +* Mon Dec 30 2013 Mamoru TASAKA - 1.12.8-1 +- 1.12.8 + * Tue Aug 6 2013 Mamoru TASAKA - 1.12.6-1 - 1.12.6 diff --git a/sources b/sources index 0cb2882..2b478d9 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -daa10e878eab81c1b5bcd74e511d5550 cairo-1.12.6.gem +SHA512 (cairo-1.18.4.gem) = 665a791f54567bb81e8533e56964640c14dce195da8b5cca968930dcaef9a28b705c5a04901a796f0cc645e1168fd127da95f0d1f6dbe5a71ef27d8f4624adb7 +SHA512 (rcairo-1.18.4-test-missing-files.tar.gz) = 75b42678f48e868e24f9f2a21a813bb770fc6b453dccc551760f74a825839e86cfbebfe20df63640aec58dd297d5fe19d9f4ba767e5286d9670e051f05711a1e