diff --git a/.gitignore b/.gitignore index 240c0c8..2b6bafa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,72 @@ -/pango-*.gem -/pango-*-test-missing-files.tar.gz +/pango-0.90.2.gem +/pango-0.90.3.gem +/pango-0.90.4.gem +/pango-0.90.5.gem +/pango-0.90.7.gem +/pango-0.90.8.gem +/pango-0.90.9.gem +/pango-1.0.0.gem +/pango-1.0.3.gem +/pango-1.1.1.gem +/pango-1.1.2.gem +/pango-1.1.3.gem +/pango-1.1.4.gem +/pango-1.1.5.gem +/pango-1.1.6.gem +/pango-1.1.9.gem +/pango-1.2.0.gem +/pango-1.2.1.gem +/pango-1.2.3.gem +/pango-1.2.4.gem +/pango-1.2.5.gem +/pango-1.2.6.gem +/pango-2.0.2.gem +/pango-2.1.0.gem +/pango-2.2.0.gem +/pango-2.2.3.gem +/pango-2.2.4.gem +/pango-2.2.5.gem +/pango-3.0.4.gem +/pango-3.0.5.gem +/pango-3.0.7.gem +/pango-3.0.8.gem +/pango-3.0.9.gem +/pango-3.1.0.gem +/pango-3.1.1.gem +/pango-3.1.3.gem +/pango-3.1.6.gem +/pango-no-gi-3.1.6.tar.gz +/pango-3.1.7.gem +/pango-no-gi-3.1.7.tar.gz +/pango-3.1.8.gem +/pango-no-gi-3.1.8.tar.gz +/pango-3.1.9.gem +/pango-no-gi-3.1.9.tar.gz +/pango-3.2.0.gem +/pango-no-gi-3.2.0.tar.gz +/pango-3.2.1.gem +/pango-no-gi-3.2.1.tar.gz +/pango-3.2.4.gem +/pango-no-gi-3.2.4.tar.gz +/pango-3.2.5.gem +/pango-no-gi-3.2.5.tar.gz +/pango-3.2.7.gem +/pango-no-gi-3.2.7.tar.gz +/pango-3.2.9.gem +/pango-no-gi-3.2.9.tar.gz +/pango-3.3.0.gem +/pango-no-gi-3.3.0.tar.gz +/pango-3.3.1.gem +/pango-no-gi-3.3.1.tar.gz +/pango-3.3.2.gem +/pango-no-gi-3.3.2.tar.gz +/pango-3.3.6.gem +/pango-no-gi-3.3.6.tar.gz +/pango-3.3.7.gem +/pango-no-gi-3.3.7.tar.gz +/pango-3.3.8.gem +/pango-no-gi-3.3.8.tar.gz +/pango-3.4.0.gem +/pango-no-gi-3.4.0.tar.gz +/pango-3.4.1.gem +/pango-no-gi-3.4.1.tar.gz diff --git a/pango-create-missing-test-files.sh b/pango-create-no-gi-src.sh similarity index 62% rename from pango-create-missing-test-files.sh rename to pango-create-no-gi-src.sh index 3dd2016..34a466a 100644 --- a/pango-create-missing-test-files.sh +++ b/pango-create-no-gi-src.sh @@ -14,7 +14,7 @@ fi VERSION=$1 -TMPDIR=$(mktemp -d /tmp/pango-XXXXXX) +TMPDIR=$(mktemp -d /tmp/pango-nogi-XXXXXX) CURDIR=$(pwd) pushd $TMPDIR @@ -22,8 +22,8 @@ pushd $TMPDIR git clone https://github.com/ruby-gnome2/ruby-gnome2.git cd ruby-gnome2/ -git reset --hard $VERSION || true -tar czf $CURDIR/pango-${VERSION}-test-missing-files.tar.gz pango/test/* +git reset --hard $VERSION +tar czf $CURDIR/pango-no-gi-${VERSION}.tar.gz glib2/ pango-no-gi/ popd rm -rf $TMPDIR diff --git a/pango-no-gi-3.3.7-backport-def.patch b/pango-no-gi-3.3.7-backport-def.patch new file mode 100644 index 0000000..40aafe3 --- /dev/null +++ b/pango-no-gi-3.3.7-backport-def.patch @@ -0,0 +1,83 @@ +diff -urp pango-no-gi-3.3.7.orig/ext/pango/rbpango.h pango-no-gi-3.3.7.new/ext/pango/rbpango.h +--- pango-no-gi-3.3.7.orig/ext/pango/rbpango.h 2019-09-06 16:06:39.000000000 +0900 ++++ pango-no-gi-3.3.7.new/ext/pango/rbpango.h 2019-09-06 16:11:02.031086838 +0900 +@@ -93,3 +93,5 @@ extern GType pango_script_iter_get_type( + + extern VALUE pango_get_attribute_klass(VALUE attr_type); + extern void pango_add_attribute(int attr_type, VALUE klass); ++ ++VALUE rbpango_attribute_to_ruby(PangoAttribute *attribute); +diff -urp pango-no-gi-3.3.7.orig/ext/pango/rbpangoattribute.c pango-no-gi-3.3.7.new/ext/pango/rbpangoattribute.c +--- pango-no-gi-3.3.7.orig/ext/pango/rbpangoattribute.c 2019-09-06 16:06:39.000000000 +0900 ++++ pango-no-gi-3.3.7.new/ext/pango/rbpangoattribute.c 2019-09-06 17:54:26.143794321 +0900 +@@ -82,6 +82,41 @@ pango_get_attribute(VALUE attr) + return gattr; + } + ++#if !PANGO_VERSION_CHECK(1, 44, 0) ++static GType ++pango_attribute_get_type(void) ++{ ++ static GType our_type = 0; ++ if (our_type == 0) ++ our_type = g_boxed_type_register_static("PangoAttribute", ++ (GBoxedCopyFunc)pango_attribute_copy, ++ (GBoxedFreeFunc)pango_attribute_destroy); ++ return our_type; ++} ++#endif ++ ++VALUE ++rbpango_attribute_to_ruby(PangoAttribute *attribute) ++{ ++ VALUE rb_attr_type; ++ ID id_to_class; ++ VALUE klass; ++ ++ rb_attr_type = GENUM2RVAL(attribute->klass->type, PANGO_TYPE_ATTR_TYPE); ++ CONST_ID(id_to_class, "to_class"); ++ klass = rb_funcall(rb_attr_type, id_to_class, 0); ++ return rbgobj_make_boxed_raw(pango_attribute_copy(attribute), ++ pango_attribute_get_type(), ++ klass, ++ 0); ++} ++ ++PangoAttribute * ++rbpango_attribute_from_ruby(VALUE rb_attribute) ++{ ++ return rbgobj_boxed_get(rb_attribute, pango_attribute_get_type()); ++} ++ + /***********************************************/ + static VALUE + rg_s_allocate(VALUE klass) +diff -urp pango-no-gi-3.3.7.orig/ext/pango/rbpangofontsetsimple.c pango-no-gi-3.3.7.new/ext/pango/rbpangofontsetsimple.c +--- pango-no-gi-3.3.7.orig/ext/pango/rbpangofontsetsimple.c 2019-09-06 16:06:39.000000000 +0900 ++++ pango-no-gi-3.3.7.new/ext/pango/rbpangofontsetsimple.c 2019-09-06 17:54:57.094194781 +0900 +@@ -22,6 +22,7 @@ + #include "rbpangoprivate.h" + + #ifdef PANGO_ENABLE_BACKEND ++#if !PANGO_VERSION_CHECK(1, 44, 0) + + #define RG_TARGET_NAMESPACE cFontsetSimple + #define _SELF(self) (RVAL2PANGOFONTSETSIMPLE(self)) +@@ -47,14 +48,17 @@ rg_size(VALUE self) + } + + #endif ++#endif + void + Init_pango_fontset_simple(VALUE mPango) + { + #ifdef PANGO_ENABLE_BACKEND ++#if !PANGO_VERSION_CHECK(1, 44, 0) + VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_FONTSET_SIMPLE, "FontsetSimple", mPango); + + RG_DEF_METHOD(initialize, 1); + RG_DEF_METHOD(append, 1); + RG_DEF_METHOD(size, 0); + #endif ++#endif + } diff --git a/rubygem-pango.spec b/rubygem-pango.spec index b86b31d..225ad61 100644 --- a/rubygem-pango.spec +++ b/rubygem-pango.spec @@ -12,17 +12,18 @@ Summary: Ruby binding of pango-1.x Name: rubygem-%{gem_name} -Version: 4.3.4 -Release: 2%{?dist} -# SPDX confirmed -# LGPL-2.1-or-later: gemspec -License: LGPL-2.1-or-later +Version: 3.4.1 +Release: 1%{?dist} +# from README +License: LGPLv2 URL: http://ruby-gnome2.sourceforge.jp/ Source0: http://rubygems.org/gems/%{gem_name}-%{version}.gem -# FIXME -Source1: pango-%{version}-test-missing-files.tar.gz -# Source1 is generated by the below -Source2: pango-create-missing-test-files.sh +# no-gi version +Source1: pango-no-gi-%{version}.tar.gz +# Source1 is created from Source2 +Source2: pango-create-no-gi-src.sh +# Backport rbpango_attribute_{to,from}_ruby definition +Patch10: pango-no-gi-3.3.7-backport-def.patch Requires: ruby(release) BuildRequires: ruby(release) @@ -46,9 +47,6 @@ Provides: rubygem(%{gem_name}) = %{version} Obsoletes: ruby-%{gem_name} <= %{version}-%{release} Provides: ruby-%{gem_name} = %{version}-%{release} Provides: ruby(%{gem_name}) = %{version}-%{release} -# For now, add Obsoletes (but no provides) -Obsoletes: rubygem-pango-no-gi < 3.4.3-3.999 -Obsoletes: rubygem-pango-no-gi-doc < 3.4.3-3.999 %description Ruby/Pango is a Ruby binding of pango-1.x. @@ -60,6 +58,27 @@ Requires: %{name} = %{version}-%{release} %description doc This package contains documentation for %{name}. +# Create no-gi for now +%package -n rubygem-%{gem_name_no_gi} +Summary: Ruby binding of pango-1.x with no-gi version +BuildRequires: rubygem(rake) +BuildRequires: rubygem(mechanize) +# For now, explicitly +Requires: rubygem(glib2) +Requires: rubygem(cairo) +Provides: rubygem(pango-no-gi) = %{version}-%{release} + +%description -n rubygem-%{gem_name_no_gi} +Ruby/Pango is a Ruby binding of pango-1.x. +This package contains no-gi implementation of Ruby/Pango. + +%package -n rubygem-%{gem_name_no_gi}-doc +Summary: Documentation for %{name} no-gi +Requires: rubygem-%{gem_name_no_gi} = %{version}-%{release} + +%description -n rubygem-%{gem_name_no_gi}-doc +This package contains documentation for ubygem-%{gem_name_no_gi}. + %package devel Summary: Ruby/pango development environment Requires: %{name} = %{version}-%{release} @@ -76,15 +95,12 @@ Header files and libraries for building a extension library for the rubygem-%{gem_name} %prep -%setup -q -n %{gem_name}-%{version} -mv ../%{gem_name}-%{version}.gemspec . +gem unpack %{SOURCE0} +%setup -q -D -T -n %{gem_name}-%{version} +gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec # Allow ruby-gnome2 no less than ones -sed -i -e 's|= 4\.3\.4|>= 4.3.4|' %{gem_name}-%{version}.gemspec - -# Remove unneeded rake runtime dependency -sed -i %{gem_name}-%{version}.gemspec \ - -e '\@add_runtime_dependency.*rake@d' +sed -i -e 's|= 3\.4\.1|>= 3.4.1|' %{gem_name}.gemspec # Fix wrong shebang @@ -93,9 +109,49 @@ sed -i %{gem_name}-%{version}.gemspec \ %build export CONFIGURE_ARGS="--with-cflags='%{optflags}'" export CONFIGURE_ARGS="$CONFIGURE_ARGS --with-pkg-config-dir=$(pwd)%{_libdir}/pkgconfig" -gem build %{gem_name}-%{version}.gemspec +gem build %{gem_name}.gemspec %gem_install +###### +# Create no-gi for now +rm -rf no-gi +mkdir no-gi +pushd no-gi + +tar xf %{SOURCE1} +chmod ugo+rX . +pushd pango-no-gi +cat %PATCH10 | patch -p1 +mv ext/pango ext/pango-no-gi +rake gem +popd + +cp -a pango-no-gi/pkg/%{gem_name_no_gi}-%{version}.gem . + +# Change for now +%global gem_name %gem_name_no_gi +gem unpack %{gem_name}-%{version}.gem +pushd %{gem_name}-%{version} + +# Kill shebang +grep -rl '#!.*/usr/bin' sample | \ + xargs sed -i -e '\@#![ ]*/usr/bin@d' +find sample/ -name \*.rb | xargs chmod 0644 + +gem spec ../%{gem_name}-%{version}.gem -l --ruby > %{gem_name}.gemspec +sed -i -e 's|= 3\.4\.1|>= 3.4.1|' %{gem_name}.gemspec +export CONFIGURE_ARGS="--with-cflags='%{optflags}'" +export CONFIGURE_ARGS="$CONFIGURE_ARGS --with-pkg-config-dir=$(pwd)%{_libdir}/pkgconfig" +gem build %{gem_name}.gemspec +mv %{gem_name}-%{version}.gem .. +popd + +%gem_install -n ./%{gem_name}-%{version}.gem +chmod -R ugo+rX . + +# Back +%global gem_name %gem_name_gi +popd %install # Once copy all @@ -124,13 +180,38 @@ rm -rf .%{gem_instdir}/ext/ rm -f .%{gem_instdir}/extconf.rb popd +### For no-gi +%global gem_name %gem_name_no_gi + +pushd no-gi +cp -a .%{gem_dir}/* \ + %{buildroot}%{gem_dir}/ + +# move header files, C extension files to the correct directory +mkdir -p %{buildroot}%{gem_extdir_mri} +cp -a ./%{gem_extdir_mri}/* %{buildroot}%{gem_extdir_mri}/ + +pushd %{buildroot} +# mv .%{gem_extdir_mri}/*.h .%{header_dir}/ +rm -f ./%{gem_extdir_mri}/*.h +rm -f .%{gem_extdir_mri}/{gem_make.out,mkmf.log} +popd + +# Cleanups +pushd %{buildroot} +rm -rf .%{gem_instdir}/ext/ +rm -rf .%{gem_instdir}/test/ +rm -f .%{gem_instdir}/Rakefile +rm -f .%{gem_instdir}/extconf.rb +popd +popd + +%global gem_name %gem_name_gi + + %check pushd .%{gem_instdir} -tar xf %{SOURCE1} -mkdir test || : -cp -a pango/test/* test - # kill unneeded make process rm -rf ./TMPBINDIR mkdir ./TMPBINDIR @@ -143,10 +224,8 @@ popd LANG=C.UTF-8 sed -i test/run-test.rb \ -e '\@exit Test::Unit::AutoRunner@s|,[ \t]*File\.join(.*"test")||' -sed -i test/run-test.rb \ - -e '\@run-test@s|require_relative "../../|require "|' # Ignore floating point difference on i686 for now -ruby -Ilib:test:%{buildroot}%{gem_extdir_mri} ./test/run-test.rb \ +ruby -Ilib:test:ext/%{gem_name} ./test/run-test.rb \ %ifarch %ix86 '--ignore-name=/test_rotate!*/' \ %endif @@ -175,168 +254,30 @@ ruby -Ilib:test:%{buildroot}%{gem_extdir_mri} ./test/run-test.rb \ %files doc %{gem_dir}/doc/%{gem_name}-%{version} %exclude %{gem_instdir}/Rakefile +%{gem_instdir}/test/ + +# Again: +%global gem_name %gem_name_no_gi +%files -n rubygem-%{gem_name_no_gi} +%dir %{gem_instdir} +%dir %{gem_instdir}/lib/ + +%doc %{gem_instdir}/[A-Z]* + +# The following should be "pango.rb" +%{gem_instdir}/lib/pango.rb +%{gem_extdir_mri} +%exclude %{gem_cache} +%{gem_spec} + +%files -n rubygem-%{gem_name_no_gi}-doc +%{gem_docdir} +%{gem_instdir}/sample/ + +%global gem_name %gem_name_gi + %changelog -* Thu Jan 08 2026 Mamoru TASAKA - 4.3.4-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_4.0 - -* Sat Dec 06 2025 Mamoru TASAKA - 4.3.4-1 -- 4.3.4 - -* Mon Aug 18 2025 Mamoru TASAKA - 4.3.3-1 -- 4.3.3 - -* Sat Aug 16 2025 Mamoru TASAKA - 4.3.2-1 -- 4.3.2 - -* Fri Jul 25 2025 Fedora Release Engineering - 4.3.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Tue Jul 15 2025 Mamoru TASAKA - 4.3.0-1 -- 4.3.0 - -* Sat Mar 22 2025 Mamoru TASAKA - 4.2.9-1 -- 4.2.9 - -* Thu Mar 20 2025 Mamoru TASAKA - 4.2.8-1 -- 4.2.8 - -* Thu Jan 30 2025 Mamoru TASAKA - 4.2.7-1 -- 4.2.7 - -* Sun Jan 26 2025 Mamoru TASAKA - 4.2.6-1 -- 4.2.6 - -* Sat Jan 18 2025 Fedora Release Engineering - 4.2.5-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Jan 07 2025 Mamoru TASAKA - 4.2.5-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.4 - -* Sun Dec 15 2024 Mamoru TASAKA - 4.2.5-1 -- 4.2.5 - -* Wed Sep 25 2024 Mamoru TASAKA - 4.2.4-1 -- 4.2.4 - -* Thu Sep 19 2024 Mamoru TASAKA - 4.2.3-1 -- 4.2.3 - -* Fri Jul 19 2024 Fedora Release Engineering - 4.2.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Tue Apr 02 2024 Mamoru TASAKA - 4.2.2-1 -- 4.2.2 - -* Fri Feb 23 2024 Mamoru TASAKA - 4.2.1-1 -- 4.2.1 - -* Fri Jan 26 2024 Fedora Release Engineering - 4.2.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Wed Jan 03 2024 Mamoru TASAKA - 4.2.0-2 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.3 - -* Sat Aug 19 2023 Mamoru TASAKA - 4.2.0-1 -- 4.2.0 - -* Sat Aug 12 2023 Mamoru TASAKA - 4.1.9-1 -- 4.1.9 - -* Fri Jul 21 2023 Fedora Release Engineering - 4.1.8-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Mon Jun 26 2023 Mamoru TASAKA - 4.1.8-1 -- 4.1.8 - -* Thu Jun 1 2023 Mamoru TASAKA - 4.1.7-1 -- 4.1.7 - -* Mon May 22 2023 Mamoru TASAKA - 4.1.6-1 -- 4.1.6 - -* Thu May 11 2023 Mamoru TASAKA - 4.1.5-1 -- 4.1.5 - -* Thu May 04 2023 Mamoru TASAKA - 4.1.4-1 -- 4.1.4 - -* Mon May 01 2023 Mamoru TASAKA - 4.1.3-1 -- 4.1.3 - -* Fri Feb 24 2023 Mamoru TASAKA - 4.1.2-1 -- 4.1.2 - -* Sun Feb 19 2023 Mamoru TASAKA - 4.1.1-1 -- 4.1.1 - -* Fri Feb 3 2023 Mamoru TASAKA - 4.1.0-1 -- 4.1.0 - -* Sun Jan 22 2023 Mamoru TASAKA - 4.0.8-1 -- 4.0.8 - -* Fri Jan 20 2023 Fedora Release Engineering - 4.0.5-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Fri Jan 6 2023 Mamoru TASAKA - 4.0.5-1 -- 4.0.5 - -* Wed Jan 04 2023 Mamoru TASAKA - 4.0.3-3 -- Rebuild for https://fedoraproject.org/wiki/Changes/Ruby_3.2 - -* Sun Dec 25 2022 Mamoru TASAKA - 4.0.3-2 -- Use %%gem_extdir_mri instead of ext for %%check due to ruby3.2 change - for ext cleanup during build - -* Fri Sep 16 2022 Mamoru TASAKA - 4.0.3-1 -- 4.0.3 - -* Mon Sep 5 2022 Mamoru TASAKA - 4.0.2-1 -- 4.0.2 - -* Sat Jul 23 2022 Fedora Release Engineering - 3.5.1-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Sun Jan 23 2022 Mamoru TASAKA - 3.5.1-1 -- 3.5.1 - -* Fri Jan 21 2022 Fedora Release Engineering - 3.4.9-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Tue Aug 10 2021 Mamoru TASAKA - 3.4.9-1 -- 3.4.9 - -* Sun Aug 8 2021 Mamoru TASAKA - 3.4.7-1 -- 3.4.7 - -* Fri Jul 23 2021 Fedora Release Engineering - 3.4.4-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Sun May 2 2021 Mamoru TASAKA - 3.4.4-1 -- 3.4.4 - -* Sun Apr 4 2021 Mamoru TASAKA - 3.4.3-4 -- Kill no-gi - -* Wed Jan 27 2021 Fedora Release Engineering - 3.4.3-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Wed Jan 06 2021 Mamoru TASAKA - 3.4.3-2 -- F-34: rebuild against ruby 3.0 - -* Thu Aug 13 2020 Mamoru TASAKA - 3.4.3-1 -- 3.4.3 - -* Wed Jul 29 2020 Fedora Release Engineering - 3.4.1-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Thu Jan 30 2020 Fedora Release Engineering - 3.4.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - -* Fri Jan 17 2020 Mamoru TASAKA - 3.4.1-2 -- F-32: rebuild against ruby27 - * Wed Dec 4 2019 Mamoru TASAKA - 3.4.1-1 - 3.4.1 diff --git a/sources b/sources index 1886327..6f4f513 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (pango-4.3.4.gem) = 30e7c48a57926db6d6b51d3e2fa86a98b1a7b9bf04a27dfb0d55cb0b9a351914dce0aac2003b7e576a6003b4e9de0b4c60059785660a100f3ec842bafbf7de22 -SHA512 (pango-4.3.4-test-missing-files.tar.gz) = 05962d6f01f2d810b401627716c0aa41b0b3b14b9531e0fcfce13a10f06d45dc4725c0bd82377babc6d320a30196af1a5e4fe1b97f2e72177b08df52c1f96c9a +SHA512 (pango-3.4.1.gem) = c8b9ba9d1552a5840f0e12b5dce55da1902438cb75f554a37c46f9d1fe5fc8db35555be014aed8e96896940b7a14bff6ed9cbd0d1bdaf66d80f70b70dcd7891c +SHA512 (pango-no-gi-3.4.1.tar.gz) = 02824f140b61df7db1128f8941281c72f0e740d5297bcf4155ce5bb38e13dd2bd021df3dc112ba988ef236fe9981d325984e709a274379f36f62d2b1e941efd1