Bug 912960 - Review Request: rubygem-gdk3 - Ruby binding of GDK-3.x
Summary: Review Request: rubygem-gdk3 - Ruby binding of GDK-3.x
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Miroslav Suchý
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 912961
TreeView+ depends on / blocked
 
Reported: 2013-02-20 04:39 UTC by Mamoru TASAKA
Modified: 2013-09-30 09:11 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-09-30 09:11:47 UTC
Type: ---
msuchy: fedora-review+
kevin: fedora-cvs+


Attachments (Terms of Use)

Comment 3 Mamoru TASAKA 2013-08-25 07:29:21 UTC
http://mtasaka.fedorapeople.org/Review_request/ruby-gnome2-suite/rubygem-gdk3.spec
mtasaka.fedorapeople.org/Review_request/ruby-gnome2-suite/rubygem-gdk3-2.0.2-1.fc.src.rpm

* Sun Aug 25 2013 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.0.2-1
- 2.0.2

Comment 4 Miroslav Suchý 2013-08-26 11:53:43 UTC
Taking.

Comment 5 Miroslav Suchý 2013-08-26 13:05:49 UTC
rpmlint:
rubygem-gdk3.x86_64: E: incorrect-fsf-address /usr/share/gems/gems/gdk3-2.0.2/COPYING.LIB
rubygem-gdk3.src: W: strange-permission gdk3-2.0.2.gem 0600L


> ruby -Ilib:test ./test/run-test.rb || echo "Please investigate this"
Why that ||?
If the test fail, it will not take down whole build. Which is what we generally want to, isn't it?


I'm really not sure about:
  %global header_dir  %{ruby_vendorarchdir}
this is not in guidelines, so it is just IMHO, but... I think (after consultation with vondrouch), that header files should go to:
["vendorarchhdrdir", "/usr/include/vendor_ruby/x86_64-linux"]
------------^^^ notice this
or 
$  pkg-config --variable=vendorhdrdir ruby
/usr/include/vendor_ruby
which is unfortunately not provided by any macro (as rubygem-foo-devel is not usual).
Can you consider moving header files there?

And if you provide -devel package, should you provide even so-name?

Comment 6 Mamoru TASAKA 2013-08-27 07:56:38 UTC
Thank you for initial comments

(In reply to Miroslav Suchý from comment #5)
> rpmlint:
> rubygem-gdk3.x86_64: E: incorrect-fsf-address
> /usr/share/gems/gems/gdk3-2.0.2/COPYING.LIB

- Will ping upstream

> rubygem-gdk3.src: W: strange-permission gdk3-2.0.2.gem 0600L

- Will fix on next push (if there is other things to fix on review

> > ruby -Ilib:test ./test/run-test.rb || echo "Please investigate this"
> Why that ||?
> If the test fail, it will not take down whole build. Which is what we
> generally want to, isn't it?

- Well, this is wrapper for gdk, and actually (if test fails)
  debugging it sometimes takes really much times. Sometimes
  even upstream can't fix this in a short time. So unless there
  is apparently critical issue to fix, I want to just notice upstream
  about test failure (if any).

  And for gtk, debugging is much harder...

> I'm really not sure about:
>   %global header_dir  %{ruby_vendorarchdir}
> this is not in guidelines, so it is just IMHO, but... I think (after
> consultation with vondrouch), that header files should go to:
> ["vendorarchhdrdir", "/usr/include/vendor_ruby/x86_64-linux"]
> ------------^^^ notice this
> or 
> $  pkg-config --variable=vendorhdrdir ruby
> /usr/include/vendor_ruby
> which is unfortunately not provided by any macro (as rubygem-foo-devel is
> not usual).
> Can you consider moving header files there?

- Well, 
  * (while currently I am using F-19) actually /usr/include/vendor_ruby
    is not owned by at least ruby-devel and others ... while
    /usr/lib/ruby/vendor_ruby is owned by ruby-libs.

  * And neither of vendorarchhdrdir or /usr/include/vendor_ruby actually
    does not work (in the meaning that they are not included in include
    path) (see
    http://koji.fedoraproject.org/koji/taskinfo?taskID=5850464
    )
  (Well, 

> And if you provide -devel package, should you provide even so-name?
- This is not needed. As in other packages, dlopen'ed modules (i.e.
  not used to be linked against) need not have sonames (and they are
  under subdirectories of /usr/lib, so they don't appear in
  ld library path)

Comment 7 Miroslav Suchý 2013-08-27 08:49:24 UTC
>- Well, this is wrapper for gdk, and actually (if test fails)
>  debugging it sometimes takes really much times. Sometimes
>  even upstream can't fix this in a short time. So unless there
>  is apparently critical issue to fix, I want to just notice upstream
>  about test failure (if any).

Sounds reasonable. But only if the test is currently failing. I would like to the there:
  ruby -Ilib:test ./test/run-test.rb
and if test will start fail, you can then *temporary* add 
 ... || echo "Know problem BZ XXX"
This way users (e.g provepackagers) will know why the failing test is waived and can checkout the progress. You may want to add some comment for provenpackagers, that if test is failing, you can temporary disable it this way and report the problem at XXX.
Do you agree?


> * And neither of vendorarchhdrdir or /usr/include/vendor_ruby actually
>    does not work (in the meaning that they are not included in include
>    path) (see

Which is IMO bug in ruby. Filed bug 1001528.

And from different POV: why you are copying it to ruby_vendorarchdir? Why it could not stay in %{gem_instdir}/lib/ ? You will probably then have to manualy specify include in rubygem-gtk, but thats IMO not problem and big deal. Opinions?

Comment 8 Mamoru TASAKA 2013-08-27 09:21:12 UTC
(In reply to Miroslav Suchý from comment #7)

> > * And neither of vendorarchhdrdir or /usr/include/vendor_ruby actually
> >    does not work (in the meaning that they are not included in include
> >    path) (see
> 
> Which is IMO bug in ruby. Filed bug 1001528.

- Note that arch-dependent headers must not be in /usr/include, in
  that case /usr/lib/foo is also needed.

> And from different POV: why you are copying it to ruby_vendorarchdir? Why it
> could not stay in %{gem_instdir}/lib/ ? You will probably then have to
> manualy specify include in rubygem-gtk, but thats IMO not problem and big
> deal. Opinions?

Well,
- If (while currently not in this case) when header files become
  arch-dependent, they cannot be in %{gem_instdir}/lib/ anyway.

- And ruby-gnome2 related header files come not only from
  rubygem-gdk3 (you can see that rubygem-gdk3 already contains
  not a few BuildRequires about rubygem-foo-devel)

  (note that other ruby-gnome2 related packages also needs other
   ruby-gnome2 header files, e.g. rubygem-gdk_pixbuf needs 
   rubygem-glib-devel, currently there are 13 packages related to
   ruby-gnome2 )

  If we stick to use %gem_instdir, correspoing -Ifoo has to be
  added each ruby-gnome2 related gems, which is annoying.

Comment 9 Miroslav Suchý 2013-08-27 09:55:25 UTC
Current header files are not arch-dependent. So lets stick to it. We (or you) will address it when (and if) they become arch dependent. Which is BTW discouraged.

Comment 10 Vít Ondruch 2013-08-27 10:00:44 UTC
(In reply to Miroslav Suchý from comment #7)
> >- Well, this is wrapper for gdk, and actually (if test fails)
> >  debugging it sometimes takes really much times. Sometimes
> >  even upstream can't fix this in a short time. So unless there
> >  is apparently critical issue to fix, I want to just notice upstream
> >  about test failure (if any).
> 
> Sounds reasonable. But only if the test is currently failing. I would like
> to the there:
>   ruby -Ilib:test ./test/run-test.rb
> and if test will start fail, you can then *temporary* add 
>  ... || echo "Know problem BZ XXX"
> This way users (e.g provepackagers) will know why the failing test is waived
> and can checkout the progress. You may want to add some comment for
> provenpackagers, that if test is failing, you can temporary disable it this
> way and report the problem at XXX.
> Do you agree?

I prefer to grep for specific results, e.g. | grep "216 tests, 325 assertions, 0 failures, 16 errors, 0 skips". That ensures, that the test results are constant and we know about changes. The || echo or || : is too vague for my taste.

Not mentioning that in this specific case, there is not executed even single test, since it blows apart right from the start :/

Comment 11 Mamoru TASAKA 2013-08-27 10:42:27 UTC
(In reply to Miroslav Suchý from comment #9)
> Current header files are not arch-dependent. So lets stick to it. We (or
> you) will address it when (and if) they become arch dependent. Which is BTW
> discouraged.

Then leave this as it is. Touching every 13 (and more) packages (again
not only for rubygem-gdk3) to add -I/usr/share/.... is very annoying.

Also, putting header file under "/usr/share" is _much_ discouraged than
to put it inder /usr/lib (while putting header file under /usr/lib
can be seen by other packages, putting header file under /usr/share
is - as far as I know - no package puts them.

(In reply to Vít Ondruch from comment #10)
> (In reply to Miroslav Suchý from comment #7)
> > >- Well, this is wrapper for gdk, and actually (if test fails)
> > >  debugging it sometimes takes really much times. Sometimes
> > >  even upstream can't fix this in a short time. So unless there
> > >  is apparently critical issue to fix, I want to just notice upstream
> > >  about test failure (if any).
> > 
> > Sounds reasonable. But only if the test is currently failing. I would like
> > to the there:
> >   ruby -Ilib:test ./test/run-test.rb
> > and if test will start fail, you can then *temporary* add 
> >  ... || echo "Know problem BZ XXX"
> > This way users (e.g provepackagers) will know why the failing test is waived
> > and can checkout the progress. You may want to add some comment for
> > provenpackagers, that if test is failing, you can temporary disable it this
> > way and report the problem at XXX.
> > Do you agree?
> 
> I prefer to grep for specific results, e.g. | grep "216 tests, 325
> assertions, 0 failures, 16 errors, 0 skips". That ensures, that the test
> results are constant and we know about changes. The || echo or || : is too
> vague for my taste.

Well, actually I was going to propose to _not_ using grep.
Using grep, actually what tests failed cannot be seen on build.log
(only the result of grep appears), which makes build.log less useful
then other people tries to look at it.

(BTW, it is preferable to check build.log even if build is successful)

> 
> Not mentioning that in this specific case, there is not executed even single
> test, since it blows apart right from the start :/

Comment 12 Mamoru TASAKA 2013-08-27 10:43:47 UTC
(In reply to Mamoru TASAKA from comment #8)
> Well,
> - If (while currently not in this case) when header files become
>   arch-dependent, they cannot be in %{gem_instdir}/lib/ anyway.

To repeat, at least header file must be under /usr/include, not
/usr/share anyway.

Comment 13 Vít Ondruch 2013-08-27 10:48:09 UTC
BTW this looks to be older version of gdk3. It does not appear that gdk3 2.x has any headers in %{gem_libdir}. It keeps the headers in %{gem_instdir}/ext directories.

Comment 14 Vít Ondruch 2013-08-27 10:55:22 UTC
(In reply to Mamoru TASAKA from comment #11)
> (In reply to Miroslav Suchý from comment #9)
> > Current header files are not arch-dependent. So lets stick to it. We (or
> > you) will address it when (and if) they become arch dependent. Which is BTW
> > discouraged.
> 
> Then leave this as it is. Touching every 13 (and more) packages (again
> not only for rubygem-gdk3) to add -I/usr/share/.... is very annoying.
> 
> Also, putting header file under "/usr/share" is _much_ discouraged than
> to put it inder /usr/lib (while putting header file under /usr/lib
> can be seen by other packages, putting header file under /usr/share
> is - as far as I know - no package puts them.

Unless we create something like /usr/include/gems/headers/gdk3-1.2.6 I don't see any better option :/

> Well, actually I was going to propose to _not_ using grep.
> Using grep, actually what tests failed cannot be seen on build.log
> (only the result of grep appears), which makes build.log less useful
> then other people tries to look at it.

You are right, that is PITA. We should use it in combination with 'tee' or something ...

Comment 15 Mamoru TASAKA 2013-08-27 11:04:22 UTC
So let's keep header files under %{ruby_vendorarchdir}, which is actually working.

(In reply to Vít Ondruch from comment #13)
> BTW this looks to be older version of gdk3. It does not appear that gdk3 2.x
> has any headers in %{gem_libdir}. It keeps the headers in %{gem_instdir}/ext
> directories.

gdk3 2.0.2 actually installs header files under ./%{gem_libdir}
(see build log:
http://koji.fedoraproject.org/koji/taskinfo?taskID=5850464
)

Like other packages, only header files needed to be installed
system-wide are to be copied into ./%{gem_libdir}
(but again, unless adding many -Ifoo -Ibar, we have to copy them
 to %{ruby_vendorarchdir}
)

Comment 16 Vít Ondruch 2013-08-27 11:28:09 UTC
(In reply to Mamoru TASAKA from comment #15)
Ah, that is actually a good catch! I was installing the gem as a root:

# gem install gdk3

and guess what, the headers are installed into:

$ ls -la /usr/local/lib/gems/ruby/gdk3-2.0.2/lib/
total 708
drwxr-xr-x. 1 root root     68 Aug 27 13:17 .
drwxr-xr-x. 1 root root      6 Aug 27 13:16 ..
-rwxr-xr-x. 1 root root 710669 Aug 27 13:17 gdk3.so
-rw-r--r--. 1 root root   2347 Aug 27 13:17 rbgdk3.h
-rw-r--r--. 1 root root   8160 Aug 27 13:17 rbgdk3conversions.h

That is why I missed them ;) So they actually should go into %{gem_extdir} side by side with the .so file. Would that be acceptable for you?

Comment 17 Mamoru TASAKA 2013-08-28 07:42:55 UTC
(In reply to Vít Ondruch from comment #16)
> 
> So they actually should go into %{gem_extdir}
> side by side with the .so file. Would that be acceptable for you?

The problem is, these are header files, not used by "gem" mechanism
but used by gcc or so (these header files are really needed for compilation).

So unless we have some automated mechanism to
  - resolve dependency for gems
  - add -Ifoo flags for each dependency gem with correct order
with_out_ using gem (and without using complicated patches or so)
keeping header files into %gem_extdir won't bear any benefit

(We already have received complaints about header path inclusion
 for ruby related packages, e.g. bug 975660 - first of all
 header files must be put into just _working_ directory)

Comment 18 Vít Ondruch 2013-08-29 07:38:38 UTC
(In reply to Mamoru TASAKA from comment #17)
> The problem is, these are header files, not used by "gem" mechanism
> but used by gcc or so (these header files are really needed for compilation).

Sorry, I can't understand the issue. I am able to install using regular "gem install" the gtk3 gem, which uses the headers in question. There is apparently some infrastructure in ruby-gnome2 project, which can find the headers on their original place (it would be %{gem_extdir}/lib} in our case) without specifying any additional -I. So I really don't know what other use case you have on your mind :/ Could you please enlighten me?

Comment 19 Mamoru TASAKA 2013-08-30 10:00:04 UTC
(In reply to Vít Ondruch from comment #18)
> (In reply to Mamoru TASAKA from comment #17)
> > The problem is, these are header files, not used by "gem" mechanism
> > but used by gcc or so (these header files are really needed for compilation).
> 
> Sorry, I can't understand the issue. I am able to install using regular "gem
> install" the gtk3 gem, which uses the headers in question.

That is because you installed gem out of Fedora's rpm path but 
into your local path.

ruby-gnome2 tries to find header files under
Gem::Specification.find_by_name(module).full_gem_path, which is
usually "/usr/share"/gems/gems/module-version, which does not work.
(Please don't ask me about when installing gem as root without
 using rpm, I don't want to try it)

Comment 20 Mamoru TASAKA 2013-08-30 14:24:16 UTC
(In reply to Mamoru TASAKA from comment #19)

> ruby-gnome2 tries to find header files under
> Gem::Specification.find_by_name(module).full_gem_path, which is
> usually "/usr/share"/gems/gems/module-version, which does not work.

When installing locally as non-root without using rpm, this would
be ~/.gem/..........

Comment 21 Mamoru TASAKA 2013-09-02 04:23:42 UTC
Would you point out really _blocking_ issue now?

Comment 22 Miroslav Suchý 2013-09-02 13:23:40 UTC
First three items from #5. I.e. that rpmlint errors and run all test and do not waive them out for all cases. Waive them out only by some tee & grep.

Finding some nice solution for those header would be nice, but this not mandated by guidelines and we can continue on ruby-sig mailing list.

Comment 23 Vít Ondruch 2013-09-02 14:44:53 UTC
So I did some research:

* The ruby-gnome2 project expects headers in %{gem_instdir}/ext by default [1]. Headers installed into %{gem_libdir} seems to be useless.

* There is no way how to get full require_paths from RubyGems, so there is no reasonable way to teach the rubygem-glib2, how to find the headers. I proposed [2] to RubyGems upstream, but that is a long shot :/

* Although bug 975660 might look as a reasonable solution, gdk3 does not support it nor we don't have it implemented (and I don't think it is worth of implementation ATM)

So at the end, it seems I must agree with %{ruby_vendorarchdir}. Hopefully, there will be chance to reiterate this in the future.


[1] https://github.com/ruby-gnome2/ruby-gnome2/blob/master/glib2/lib/mkmf-gnome2.rb#L114
[2] https://github.com/rubygems/rubygems/pull/632

Comment 24 Mamoru TASAKA 2013-09-02 15:01:08 UTC
(In reply to Miroslav Suchý from comment #22)
> First three items from #5. I.e. that rpmlint errors and run all test and do
> not waive them out for all cases. Waive them out only by some tee & grep.

- License text *must not* be patched even if FSF address differs.
  I may ping upstream, however modifying license text must not be
  done downstream

- Please explain why || : is not sufficient for you. Anyway checking
  build.log is always preferable. Also || : is commonly used:
  e.g.
  http://pkgs.fedoraproject.org/cgit/gcc.git/tree/gcc.spec
  http://pkgs.fedoraproject.org/cgit/glibc.git/tree/glibc.spec

- tarball rpmlint issue can be fixed when importing to Fedora git.

Comment 25 Mamoru TASAKA 2013-09-02 15:03:45 UTC
- Also "grep" is anyway not a perfect solution. 
  "One error" may occur at the different than expected and manual
  investigation is anyway needed.

Comment 26 Miroslav Suchý 2013-09-03 08:00:48 UTC
> License text *must not* be patched even if FSF address differs.

Agree. Just put here some link to mail archive or issue request of upstream, so I know that you notified upstream.

>- Please explain why || : is not sufficient for you. Anyway checking
>  build.log is always preferable. 

Checking build.log is preferable. But I always seen that build.log is checked only if build fail. If build succeed then it is usually "HURRAY, move on".
And sometimes is even manual check of build.log not possible - e.g. mass rebuilds.

So I really thing you should change it to:

FILE=$(mktemp)
ruby -Ilib:test ./test/run-test.rb | tee $FILE || :
grep "5 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications" $FILE

And in case some test file replace the last line with something like:

# test foo is failing, reported as http://foo/issue/1
cat $FILE | grep "4 tests, 4 assertions, 1 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications"

This way you waive out just that one failure. And if there will be second failure you will be immediately notified by failed build. And yes manual intervention is needed as you must report that failure to upstream (or fix it on your own) and add new comment about reported bug and change the grepped string.

For me this is blocker.
If there are examples of other packages which does that, then IMO they are bad examples and it should be fixed as well.

Comment 27 Mamoru TASAKA 2013-09-04 15:17:30 UTC
Again grep is not a good solution as I said in comment 25 . I don't think other packagers will agree with adding grep.

Comment 28 Mamoru TASAKA 2013-09-04 23:21:21 UTC
Please consider again if grep is really _must_ item and blocker. Again I don't agree and I don't think making this mandatory is technically correct.

Comment 29 Miroslav Suchý 2013-09-05 06:49:56 UTC
I will bring this to packagers list.

Comment 30 Toshio Ernie Kuratomi 2013-09-06 18:17:40 UTC
Thread start:
https://lists.fedoraproject.org/pipermail/packaging/2013-September/009486.html

Email from me with patches that probably fix the code itself here:
https://lists.fedoraproject.org/pipermail/packaging/2013-September/009493.html

Let me know if you need a direct copy of the patches since the mailman web archives have the patches inline.

Comment 31 Mamoru TASAKA 2013-09-07 06:07:37 UTC
Toshio, thank you for trying for patch, however as I want to verify your patch (since you say you "probably" fix the code) and also anyway I want to ask upstream, for now I will leave your patch pending.

So using grep is not a good idea. Miroslav, would you check again? (Please remind that I approved your package even if you disabled any check in your package).

Comment 32 Mamoru TASAKA 2013-09-07 06:10:39 UTC
Just additional note:

I don't think "hiding" check errors by patches is not a good idea and rather I want to show check errors as it is and let upstrem know about it.

Comment 33 Mamoru TASAKA 2013-09-07 06:30:06 UTC
(Note that "hiding" here means to disable failing tests by patch - unless it is "apparent" that the test is completely broken, or the test cannot be executed due to missing additional sources or so)

Comment 34 Toshio Ernie Kuratomi 2013-09-09 06:05:28 UTC
Few comments:

About the definition of hiding:  The patch doesn't hide the test failure.  It attempts to fix the test failure.  Hiding it would be to comment out that test or disabling the test suite.

About verifying with upstream: The rationale for not applying the patches is that you're not able to evaluate whether the patches to the test case are correct and that's worrisome enough that you won't apply a proposed fix for it because it might break the package more.  However, that means that the package you are building could be severely broken.  Severely broken packages aren't supposed to pass review.  So enough review of the issue needs to take place so that we know whether the issue is one that compromises the operation of the package.  But once someone does that it becomes apparent whether the patch is okay to apply or not: if the issue is really serious, the patch to the test case is incorrect and the package should not be approved until the actual issue is fixed.  If the issue is minor, the proposed fix to the test case is something that can be applied and the problem and proposed solution sent upstream.  It can be changed if upstream's evaluation turns out to be different.

There's two places where our expectations might not match up here.  The first would be that we have different implicit rankings of solutions to test failure.  Here's mine from most desirable to least desirable:

1) Fix the bug the right way.
2) Potentially fix the bug the right way (unsure enough to need further evaluation)
3) Fix the bug in a way that you know is too hacky for upstream but fixes the problem on Fedora
4) Disable the specific case that's provoking the issue.
5) Disable the entire test suite.

The second place where our thoughts might mismatch is in the definition of "disable".  For me, a disabled test or test suite is one that does not fail the build if the test or test suite doesn't pass.  I think that your definition is slightly different; I'm guessing you'd say that not running the test at all is what constitutes disabling.  The reasons I'd give for my view are:

* On rawhide if the build succeeds the new build will replace the old package no matter what the test suite printed to the logs.
* When someone else rebuilds the package for some reason (releng rebuild, provenpackagers rebuilding for changes to guidelines Fedora Change Owner rebuilding dependent packages), they won't know that they have to look at the build log of this package to see the test suite results.  Even if they do, they won't know what the old baseline was, only what the current results are.
* If you should give up maintaining the package and someone else take over (maybe just to satisfy the deps in their own package) they won't know that a failing test suite will not fail the build.

Comment 35 Miroslav Suchý 2013-09-09 07:36:57 UTC
And one note - all this is about *potential* problem in future. Because the tests are passing right now. So right now there is really no need to do "|| echo".

Comment 36 Miroslav Suchý 2013-09-09 07:42:42 UTC
And one note - all this is about *potential* problem in future. Because the tests are passing right now. So right now there is really no need to do "|| echo".

Comment 37 Mamoru TASAKA 2013-09-09 08:59:37 UTC
Well, looking at the code gtk+-3.8.4, it seems to me that 0.3 should _exactly_ be turned into 77, not 76, as it seems all decimals used here can be exactly represented by double type, so still I will leave the patch posted pending.

(In reply to Toshio Ernie Kuratomi from comment #34)
> Few comments:
> 
> About the definition of hiding:  The patch doesn't hide the test failure. 
> It attempts to fix the test failure.  Hiding it would be to comment out that
> test or disabling the test suite.

The same as I explained by comment #33 - and this is to the comment you said in the packaging thread.

> About verifying with upstream: 
(long comments cut)

As currently I don't think your patch is correct as I said above, I will leave your patch pending, better to ask the upstream for correct solution.
(At least applying patches by myself needs some degree of _my_ confidence that the patch is correct).


> There's two places where our expectations might not match up here.  The
> first would be that we have different implicit rankings of solutions to test
> failure.  Here's mine from most desirable to least desirable:
> 
> 1) Fix the bug the right way.
> 2) Potentially fix the bug the right way (unsure enough to need further
> evaluation)
> 3) Fix the bug in a way that you know is too hacky for upstream but fixes
> the problem on Fedora
> 4) Disable the specific case that's provoking the issue.
> 5) Disable the entire test suite.
> 
> The second place where our thoughts might mismatch is in the definition of
> "disable".  For me, a disabled test or test suite is one that does not fail
> the build if the test or test suite doesn't pass.  I think that your
> definition is slightly different; I'm guessing you'd say that not running
> the test at all is what constitutes disabling.  The reasons I'd give for my
> view are:
> 

Okay, so your view and mine differ, and please comment if the different of this is really blocker or not.

(In reply to Miroslav Suchý from comment #35)
> And one note - all this is about *potential* problem in future. Because the
> tests are passing right now. So right now there is really no need to do "||
> echo".

It seems that on f20 i686 test fails (sometimes??)

Comment 38 Mamoru TASAKA 2013-09-09 09:02:22 UTC
I won't say that reviews must not say anything which is not written in review guidelines, however reviewers must be careful not to insist on making submitters apply reviewrs' policy or faith.

Comment 39 Mamoru TASAKA 2013-09-09 09:07:15 UTC
(Maybe some rounding effect is happening on ruby inside, however I am not sure)

Comment 40 Mamoru TASAKA 2013-09-09 10:14:31 UTC
Ah..... 0.3 is not a value that can be exactly represented, sorry..

Comment 41 Toshio Ernie Kuratomi 2013-09-09 18:23:43 UTC
(In reply to Mamoru TASAKA from comment #37)
> It seems that on f20 i686 test fails (sometimes??)

On f20 koji it failed with an error that I attribute to a change in API that this package depends on.  That's the first patch in my email.  After fixing that, I didn't retry the build multiple times to see if the .to_str() failure was only occurring sometimes but I can confirm that it happened on x86 f20 but passed on x86_64:

http://koji.fedoraproject.org/koji/taskinfo?taskID=5899933

(In reply to Mamoru TASAKA from comment #39)
> (Maybe some rounding effect is happening on ruby inside, however I am not
> sure)

<nod>  Isn't the rule of thumb: Never depend on C code to precisely represent any floating point numbers? ;-)

(In reply to Mamoru TASAKA from comment #38)
> I won't say that reviews must not say anything which is not written in review
> guidelines, however reviewers must be careful not to insist on making
> submitters apply reviewrs' policy or faith.

In so far as style goes I would agree with this.  (For instance, trailing periods in Summary, removing shebang lines in importable code modules that trigger rpmlint but don't affect the code...)  However, at some point undocumented points do make a technical difference.  The testsuite is one of those places.  If there's disagreement here, the reviewer could choose to try to make it a blocker (the most common route for this is to propose to the FPC that they add a rule covering it to the guidelines).  Or the reviewer could consider that they consider it enough of a problem that they won't approve the package themselves but they understand that there's a difference of opinion and will let someone else pick up the review and finish it if they choose.

I hope that explains that I don't consider that msuchy or anyone else has an obligation to approve the package without a commitment not to disable (sorry, my definition of disable) the testsuite.  But at the same time, it's not currently something that all reviewers might consider a blocker.

From the Preamble of the Packaging Guidelines:

"It is the reviewer's responsibility to point out specific problems with a package and a packager's responsibility to deal with those issues. The reviewer and packager work together to determine the severity of the issues (whether they block a package or can be worked on after the package is in the repository.)"

The reviewer has pointed out a shortcoming of the package.  The two of you disagree on the severity.  One of you could take this to FPC to make a definitive ruling or the two of you could decide to let another reviewer decide if they would like to approve this despite the problem.

Comment 42 Miroslav Suchý 2013-09-17 10:57:56 UTC
My update:
I would accept those headers on that place, since this is probably first package where this happen. But please consider bringing up this discussion to ruby-sig and find some final and better solution.

I would accept that waive of these, but only if:
* you put there in comment why it is currently waived out (does not work on F21 because of...)
* if you put there in comment link to upstream report of that issue.
And once those tests are functional again in future, remove that "|| echo".

Comment 43 Mamoru TASAKA 2013-09-19 08:17:32 UTC
http://mtasaka.fedorapeople.org/Review_request/ruby-gnome2-suite/rubygem-gdk3.spec
http://mtasaka.fedorapeople.org/Review_request/ruby-gnome2-suite/rubygem-gdk3-2.0.2-2.fc.src.rpm

* Thu Sep 19 2013 Mamoru TASAKA <mtasaka@fedoraproject.org> - 2.0.2-2
- Patch from upstream to fix TestGdkRGBA

Koji scratch build:
F-21: http://koji.fedoraproject.org/koji/taskinfo?taskID=5954074
F-20: http://koji.fedoraproject.org/koji/taskinfo?taskID=5954078

The upstream patch is safe because 255 * 0.2 + 0.5 = 51.5, for example.

Comment 44 Miroslav Suchý 2013-09-19 12:28:19 UTC
Forbidden

You don't have permission to access /Review_request/ruby-gnome2-suite/rubygem-gdk3-2.0.2-2.fc.src.rpm on this server.

Can you please fix it?

Comment 45 Mamoru TASAKA 2013-09-19 14:53:10 UTC
Permission fixed.

(By the way, you can also download it from
http://koji.fedoraproject.org/scratch/mtasaka/task_5954074/
)

Comment 46 Miroslav Suchý 2013-09-25 08:43:16 UTC
One last thing - you are missing:
Requires: ruby(release)

Comment 47 Mamoru TASAKA 2013-09-26 01:39:58 UTC
(In reply to Miroslav Suchý from comment #46)
> One last thing - you are missing:
> Requires: ruby(release)

See this line:
# MRI only
Requires:	ruby

Comment 48 Mamoru TASAKA 2013-09-26 02:24:58 UTC
(Basically for any gem packages containing C extension modules,
 "(Build)Requires: ruby(release)" is nonsense, because they work
  only with CRuby = MRI.
  Current ruby guideline says that any rubygem-based rpm must indicate
  that some ruby interpreter is needed, and if any ruby interpreter can
  satisfy the dependency, ruby(release) should be used. Otherwise ruby
  guideline says that the package _should_ (not _must_) require the
  specific ruby interpreter.
)

Comment 49 Miroslav Suchý 2013-09-26 08:26:26 UTC
APPROVED

But I strongly suggest you to continue discussing the problematic parts (like the headers files) on ruby-sig mailing list.

Comment 50 Mamoru TASAKA 2013-09-26 15:26:53 UTC
Thank you.

New Package SCM Request
=======================
Package Name: rubygem-gdk3
Short Description: Ruby binding of GDK-3.x
Owners: mtasaka
Branches: f20
InitialCC:

Comment 51 Kevin Fenzi 2013-09-27 18:27:47 UTC
Git done (by process-git-requests).

Comment 52 Mamoru TASAKA 2013-09-30 09:11:47 UTC
Rebuilt for all branches, push requested for F-20, closing.

Thank you for reviewing and git procedure.


Note You need to log in before you can comment on or make changes to this bug.