Bug 614451

Summary: Review Request: rubygem-gherkin - A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.
Product: [Fedora] Fedora Reporter: Michal Fojtik <mfojtik>
Component: Package ReviewAssignee: Mamoru TASAKA <mtasaka>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-package-review, jguiditt, mfojtik, mtasaka, notting, tdawson
Target Milestone: ---Flags: mtasaka: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: rubygem-gherkin-2.1.5-3.el5 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-08-02 14:21:13 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Michal Fojtik 2010-07-14 14:17:53 UTC
Spec URL: http://mifo.sk/RPMS/rubygem-gherkin.spec
SRPM URL: http://mifo.sk/RPMS/rubygem-gherkin-2.1.3-1.fc13.src.rpm
Description:

Gherkin is the language that Cucumber understands. It is a Business Readable, Domain Specific Language that lets you describe software’s behaviour without detailing how that behaviour is implemented.

Gherkin serves two purposes – documentation and automated tests. The third is a bonus feature – when it yells in red it’s talking to you, telling you what code you should write.

Gherkin’s grammar is defined in the Treetop grammar that is part of the Cucumber codebase. The grammar exists in different flavours for many spoken languages (37 at the time of writing), so that your team can use the keywords in your own language.

Comment 1 Michal Fojtik 2010-07-14 14:18:47 UTC
Koji build:

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

Comment 2 Michal Fojtik 2010-07-14 14:23:22 UTC
Well there is one thing you need to know before review. Because this gem requires some beta version of RSpec, these tests are disabled in %check section. Also, because there is only some historic version of Cucumber available (in fact, this package is one of new Cucumber version dependency) features are also disabled.

Comment 3 Mamoru TASAKA 2010-07-17 18:36:32 UTC
Initial notes:

* Macros
  - %ruby_sitelib macro seems used nowhere.
  - %rubyabi is defined nowhere.

* Version
  - Latest seems 2.1.4

* BuildRoot
  - BuildRoot tag is no longer used on Fedora.
    (BuildRoot tag is still needed on EPEL)

* Compiler flags
  - Fedora specific compiler flags are not correctly
    honored.
-------------------------------------------------------------
   292  Building native extensions.  This could take a while...
   293  /usr/bin/ruby extconf.rb
   294  checking for main() in -lc... yes
   295  creating Makefile
   296  make
   297  gcc -I. -I. -I/usr/lib/ruby/1.8/i386-linux -I. -D_FILE_OFFSET_BITS=64 -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -O0 -Wall -Werror  -c gherkin_lexer_ar.c
   298  gcc -shared -o gherkin_lexer_ar.so gherkin_lexer_ar.o -L. -L/usr/lib -L.  -rdynamic -Wl,-export-dynamic    -lruby -lc  -lpthread -lrt -ldl -lcrypt -lm   -lc
   299  make install
   300  /usr/bin/install -c -m 0755 gherkin_lexer_ar.so /builddir/build/BUILD/rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/lib
-------------------------------------------------------------
    - Here Fedora uses optimization level "-O2" for gcc, which
      is overwritten by the latter "-O0".
      This is because extconf.rb files included in gem override CFLAGS.
      For example, ./ext/gherkin_lexer_ar/extconf.rb says:
-------------------------------------------------------------
     3  $CFLAGS << ' -O0 -Wall -Werror' if CONFIG['CC'] =~ /gcc/
-------------------------------------------------------------

      Unfortunately extconf.rb is in gem file and this cannot be modified
      until gem is once installed (i.e. compilation is once done).
      Unless you have an idea, you have to
      - Once install gem file under %_builddir (like now)
      - modify extconf.rb
      - and recompile C codes again.

* ext/ directory / C extension .so files
  - Files under ext/ directory are usually for compiling C extension .so
    files and should not be needed once .so files are created.
  - Arch-dependent C extension .so files should be installed under
    %ruby_sitearch:
    https://fedoraproject.org/wiki/Packaging/Ruby#Ruby_packages_with_binary_content.2Fshared_libraries

* Directory ownership issue
  - The following directories are not owned by any packages:
-------------------------------------------------------------
%{geminstdir}
%{geminstdir}/bin
-------------------------------------------------------------

* rpmlint issue
  - Please check your srpm and rebuilt binary rpms with rpmlint:
--------------------------------------------------------------
rubygem-gherkin-debuginfo.i686: E: debuginfo-without-sources
    - Please create debuginfo rpm correctly
      ! Note
        build.log says many warnings when creating debuginfo rpm
        like:
--------------------------------------------------------------
   918  cpio: rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_ar/ext/gherkin_lexer_ar/gherkin_lexer_ar.c: Cannot stat: No such file or directory
   919  cpio: rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_bg/ext/gherkin_lexer_bg/gherkin_lexer_bg.c: Cannot stat: No such file or directory
   920  cpio: rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_ca/ext/gherkin_lexer_ca/gherkin_lexer_ca.c: Cannot stat: No such file or directory
--------------------------------------------------------------
        Note that "ext/gherkin_lexer_ar" is repeated here. You may have to
        create some symlinks so that /usr/lib/rpm/find-debuginfo.sh can find
        the corresponding source files properly.

rubygem-gherkin.i686: W: no-soname /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/lib/gherkin_lexer_ar.so
rubygem-gherkin.i686: W: no-soname /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/lib/gherkin_lexer_bg.so
(and others)
    - As far as I checked rpmlint codes to see why these rpmlint warnings arose,
      these rpmlint warnings can be ignored. However anyway these .so files must
      be moved to under %ruby_sitearch.

rubygem-gherkin.i686: E: script-without-shebang /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/tasks/compile.rake
rubygem-gherkin.i686: E: script-without-shebang /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/tasks/ragel_task.rb
    - Usually permissions are incorrect. Please check if these files have 0644 permission.

rubygem-gherkin.i686: E: version-control-internal-file /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ikvm/.gitignore
rubygem-gherkin.i686: E: version-control-internal-file /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/java/.gitignore
rubygem-gherkin.i686: E: version-control-internal-file /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/java/src/main/java/gherkin/lexer/.gitignore
(and others)
    - These files should be removed.

rubygem-gherkin.i686: W: wrong-file-end-of-line-encoding /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/spec/gherkin/fixtures/dos_line_endings.feature
rubygem-gherkin.i686: W: wrong-file-end-of-line-encoding /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/spec/gherkin/fixtures/with_bom.feature
    - Usually dos2unix or 'sed -i -e "s|\r||"' fixes these.

* gemspec specifications file
  - Installed gherkin-2.1.3.gemspec contains:
----------------------------------------------------------------
    28      if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
    29        s.add_runtime_dependency(%q<trollop>, ["~> 1.16.2"])
    30        s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.15"])
    31        s.add_development_dependency(%q<cucumber>, ["~> 0.8.4"])
    32        s.add_development_dependency(%q<rake-compiler>, ["~> 0.7.0"])
    33      else
----------------------------------------------------------------
    However at least rspec ~> 2.0.0.beta.15 is not available, so
    gherkin gem cannot work (at least "ruby -rubygems -e 'gem gherkin'" does not
    work). Please modify installed gemspec file.

Comment 4 Michal Fojtik 2010-07-19 13:34:24 UTC
Spec URL: http://mifo.sk/RPMS/rubygem-gherkin.spec
SRPM URL: http://mifo.sk/RPMS/rubygem-gherkin-2.1.5-1.fc13.src.rpm

KOJI: http://koji.fedoraproject.org/koji/taskinfo?taskID=2328910

rpmlint:

RPM: No errors. Just some warnings about macros and devel files.
RPMS: Clean.

(In reply to comment #3)
> Initial notes:
> 
> * Macros
>   - %ruby_sitelib macro seems used nowhere.
>   - %rubyabi is defined nowhere.

Fixed.

> * Version
>   - Latest seems 2.1.4

For today, latest is 2.1.5 ;-) 

> * BuildRoot
>   - BuildRoot tag is no longer used on Fedora.
>     (BuildRoot tag is still needed on EPEL)

I kept that in this spec file. Will be removed for Fedora and present in EPEL branch.

> * Compiler flags
>   - Fedora specific compiler flags are not correctly
>     honored.
> -------------------------------------------------------------
>    292  Building native extensions.  This could take a while...
>    293  /usr/bin/ruby extconf.rb
>    294  checking for main() in -lc... yes
>    295  creating Makefile
>    296  make
>    297  gcc -I. -I. -I/usr/lib/ruby/1.8/i386-linux -I. -D_FILE_OFFSET_BITS=64
> -fPIC -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
> --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom
> -fasynchronous-unwind-tables -O0 -Wall -Werror  -c gherkin_lexer_ar.c
>    298  gcc -shared -o gherkin_lexer_ar.so gherkin_lexer_ar.o -L. -L/usr/lib
> -L.  -rdynamic -Wl,-export-dynamic    -lruby -lc  -lpthread -lrt -ldl -lcrypt
> -lm   -lc
>    299  make install
>    300  /usr/bin/install -c -m 0755 gherkin_lexer_ar.so
> /builddir/build/BUILD/rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/lib
> -------------------------------------------------------------
>     - Here Fedora uses optimization level "-O2" for gcc, which
>       is overwritten by the latter "-O0".
>       This is because extconf.rb files included in gem override CFLAGS.
>       For example, ./ext/gherkin_lexer_ar/extconf.rb says:
> -------------------------------------------------------------
>      3  $CFLAGS << ' -O0 -Wall -Werror' if CONFIG['CC'] =~ /gcc/
> -------------------------------------------------------------
> 
>       Unfortunately extconf.rb is in gem file and this cannot be modified
>       until gem is once installed (i.e. compilation is once done).
>       Unless you have an idea, you have to
>       - Once install gem file under %_builddir (like now)
>       - modify extconf.rb
>       - and recompile C codes again.

I tried to figure this out, but I end up with your solution.
So I install everything in ussual way, then modify extconf.rb
and recompile it using Fedora CFLAGS.


> * ext/ directory / C extension .so files
>   - Files under ext/ directory are usually for compiling C extension .so
>     files and should not be needed once .so files are created.
>   - Arch-dependent C extension .so files should be installed under
>     %ruby_sitearch:
>    
> https://fedoraproject.org/wiki/Packaging/Ruby#Ruby_packages_with_binary_content.2Fshared_libraries

Fixed.

> 
> * Directory ownership issue
>   - The following directories are not owned by any packages:
> -------------------------------------------------------------
> %{geminstdir}
> %{geminstdir}/bin

Fixed.

> -------------------------------------------------------------
> 
> * rpmlint issue
>   - Please check your srpm and rebuilt binary rpms with rpmlint:
> --------------------------------------------------------------
> rubygem-gherkin-debuginfo.i686: E: debuginfo-without-sources
>     - Please create debuginfo rpm correctly
>       ! Note
>         build.log says many warnings when creating debuginfo rpm
>         like:
> --------------------------------------------------------------
>    918  cpio:
> rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_ar/ext/gherkin_lexer_ar/gherkin_lexer_ar.c:
> Cannot stat: No such file or directory
>    919  cpio:
> rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_bg/ext/gherkin_lexer_bg/gherkin_lexer_bg.c:
> Cannot stat: No such file or directory
>    920  cpio:
> rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_ca/ext/gherkin_lexer_ca/gherkin_lexer_ca.c:
> Cannot stat: No such file or directory
> --------------------------------------------------------------
>         Note that "ext/gherkin_lexer_ar" is repeated here. You may have to
>         create some symlinks so that /usr/lib/rpm/find-debuginfo.sh can find
>         the corresponding source files properly.
> 
> rubygem-gherkin.i686: W: no-soname
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/lib/gherkin_lexer_ar.so
> rubygem-gherkin.i686: W: no-soname
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/lib/gherkin_lexer_bg.so
> (and others)
>     - As far as I checked rpmlint codes to see why these rpmlint warnings
> arose,
>       these rpmlint warnings can be ignored. However anyway these .so files
> must
>       be moved to under %ruby_sitearch.

I'm not getting these errors/warning using rpmlint, so I hope it's fixed.

> 
> rubygem-gherkin.i686: E: script-without-shebang
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/tasks/compile.rake
> rubygem-gherkin.i686: E: script-without-shebang
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/tasks/ragel_task.rb
>     - Usually permissions are incorrect. Please check if these files have 0644
> permission.

Fixed.

> 
> rubygem-gherkin.i686: E: version-control-internal-file
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ikvm/.gitignore
> rubygem-gherkin.i686: E: version-control-internal-file
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/java/.gitignore
> rubygem-gherkin.i686: E: version-control-internal-file
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/java/src/main/java/gherkin/lexer/.gitignore
> (and others)
>     - These files should be removed.

Removed.

> rubygem-gherkin.i686: W: wrong-file-end-of-line-encoding
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/spec/gherkin/fixtures/dos_line_endings.feature
> rubygem-gherkin.i686: W: wrong-file-end-of-line-encoding
> /usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/spec/gherkin/fixtures/with_bom.feature
>     - Usually dos2unix or 'sed -i -e "s|\r||"' fixes these.

Fixed using sed.

> 
> * gemspec specifications file
>   - Installed gherkin-2.1.3.gemspec contains:
> ----------------------------------------------------------------
>     28      if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
>     29        s.add_runtime_dependency(%q<trollop>, ["~> 1.16.2"])
>     30        s.add_development_dependency(%q<rspec>, ["~> 2.0.0.beta.15"])
>     31        s.add_development_dependency(%q<cucumber>, ["~> 0.8.4"])
>     32        s.add_development_dependency(%q<rake-compiler>, ["~> 0.7.0"])
>     33      else
> ----------------------------------------------------------------
>     However at least rspec ~> 2.0.0.beta.15 is not available, so
>     gherkin gem cannot work (at least "ruby -rubygems -e 'gem gherkin'" does
> not
>     work). Please modify installed gemspec file.    

File modified in %install section. I replaced beta with latest Fedora version.

-- Michal

Comment 5 Michal Fojtik 2010-07-19 13:39:32 UTC
> -------------------------------------------------------------
> 
> * rpmlint issue
>   - Please check your srpm and rebuilt binary rpms with rpmlint:
> --------------------------------------------------------------
> rubygem-gherkin-debuginfo.i686: E: debuginfo-without-sources
>     - Please create debuginfo rpm correctly
>       ! Note
>         build.log says many warnings when creating debuginfo rpm
>         like:
> --------------------------------------------------------------
>    918  cpio:
> rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_ar/ext/gherkin_lexer_ar/gherkin_lexer_ar.c:
> Cannot stat: No such file or directory
>    919  cpio:
> rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_bg/ext/gherkin_lexer_bg/gherkin_lexer_bg.c:
> Cannot stat: No such file or directory
>    920  cpio:
> rubygem-gherkin-2.1.3/usr/lib/ruby/gems/1.8/gems/gherkin-2.1.3/ext/gherkin_lexer_ca/ext/gherkin_lexer_ca/gherkin_lexer_ca.c:
> Cannot stat: No such file or directory
> --------------------------------------------------------------
>         Note that "ext/gherkin_lexer_ar" is repeated here. You may have to
>         create some symlinks so that /usr/lib/rpm/find-debuginfo.sh can find
>         the corresponding source files properly

Ok I was too fast. Actually I getting these errors in Koji logs. I'll post update soon.

Comment 6 Michal Fojtik 2010-07-19 14:32:15 UTC
OK I figured out repeated .so files, so this is fixed for now. Unfortunately I was unable to figure out second issue with C files. I tried several changes and builds, but without any luck. If you or somebody could point me where could be a problem, you will become my hero of the day :-)

KOJI build:
http://koji.fedoraproject.org/koji/getfile?taskID=2328950&name=build.log

Comment 7 Mamoru TASAKA 2010-07-19 18:47:32 UTC
Assigning.

Comment 8 Mamoru TASAKA 2010-07-19 20:01:17 UTC
For 2.1.5-1:

? pushd / popd
  - By the way "pushd" is used many times but no corresponding
    "popd" can be seen.

* About empty debuginfo rpm and
  "No such file or directory" message from /usr/lib/rpm/find-debuginfo.sh
  - Well, the problem behind here is that the C codes used here
    contain "#line" directive.
    e.g. ext/gherkin_lexer_ar/gherkin_lexer_ar.c contains:
--------------------------------------------------------------------------
    91  #line 92 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
    92  static const char _lexer_actions[] = {
--------------------------------------------------------------------------
    With this, find-debuginfo.sh tries to find 
    "ext/gherkin_lexer_ar/gherkin_lexer_ar.c" (relative to the directory
    of this file), however it is not found.
    This sometime happens that the C codes to be used are generated
    automatically by some other softwares (such as bison, in this case
    perhaps ragel).

    Possible solution:
    - Create needed symlink, like:
--------------------------------------------------------------------------
rm -rf ../lib/*.so
for lexer_dir in */ ; do
  pushd $lexer_dir

  mkdir ext
  pushd ext
  ln -sf .. ${lexer_dir%/}
  popd

  sed -i 's/ -O0 / -O2 /' extconf.rb
  CONFIGURE_ARGS="--with-cflags='%{optflags}'" ruby extconf.rb
  make clean && make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
  make install RUBYARCHDIR="../../lib"
  popd
done
--------------------------------------------------------------------------
      See "ln -sf" line and around it.
      ! By the way, I think "for lexer_dir in */ ; do" is simpler.
      http://koji.fedoraproject.org/koji/taskinfo?taskID=2329549

    - Remove "#line foo" lines from C codes.

* Default working directory
--------------------------------------------------------------------------
pushd %{_builddir}/%{name}-%{version}/%{geminstdir}/ext
--------------------------------------------------------------------------
  - Here "%{_builddir}/%{name}-%{version}" can be replaced with
    simply ".", because %setup -q sets the default working directory
    to %{_builddir}/%{name}-%{version}.

? -doc subpackage
  - By the way would you consider to create -doc subpackage?
    I think at least the following files are not needed on runtime
    by default:
--------------------------------------------------------------------------
%{geminstdir}/Rakefile
%{geminstdir}/ext
%{geminstdir}/tasks
%{gemdir}/doc/%{gemname}-%{version}
--------------------------------------------------------------------------

* One more gemspec specification file error
  - Well,
--------------------------------------------------------------------------
[tasaka1@localhost ~]$ gherkin
/usr/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': RubyGem version error: trollop(1.15 not ~> 1.16.2) (Gem::LoadError)
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate'
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each'
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate'
	from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
	from /usr/bin/gherkin:18
--------------------------------------------------------------------------

Comment 9 Michal Fojtik 2010-07-20 09:56:42 UTC
rev. 2.1.5-2:

Spec URL: http://mifo.sk/RPMS/rubygem-gherkin.spec
SRPM URL: http://mifo.sk/RPMS/rubygem-gherkin-2.1.5-2.fc13.src.rpm

Koji build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=2330630

(In reply to comment #8)
> For 2.1.5-1:
> 
> ? pushd / popd
>   - By the way "pushd" is used many times but no corresponding
>     "popd" can be seen.

Fixed.

> 
> * About empty debuginfo rpm and
>   "No such file or directory" message from /usr/lib/rpm/find-debuginfo.sh
>   - Well, the problem behind here is that the C codes used here
>     contain "#line" directive.
>     e.g. ext/gherkin_lexer_ar/gherkin_lexer_ar.c contains:
> --------------------------------------------------------------------------
>     91  #line 92 "ext/gherkin_lexer_ar/gherkin_lexer_ar.c"
>     92  static const char _lexer_actions[] = {
> --------------------------------------------------------------------------
>     With this, find-debuginfo.sh tries to find 
>     "ext/gherkin_lexer_ar/gherkin_lexer_ar.c" (relative to the directory
>     of this file), however it is not found.
>     This sometime happens that the C codes to be used are generated
>     automatically by some other softwares (such as bison, in this case
>     perhaps ragel).
> 
>     Possible solution:
>     - Create needed symlink, like:
> --------------------------------------------------------------------------
> rm -rf ../lib/*.so
> for lexer_dir in */ ; do
>   pushd $lexer_dir
> 
>   mkdir ext
>   pushd ext
>   ln -sf .. ${lexer_dir%/}
>   popd
> 
>   sed -i 's/ -O0 / -O2 /' extconf.rb
>   CONFIGURE_ARGS="--with-cflags='%{optflags}'" ruby extconf.rb
>   make clean && make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
>   make install RUBYARCHDIR="../../lib"
>   popd
> done

Thanks a lot ! Btw. what means that '%' in ${lexer_dir%/} ?

> --------------------------------------------------------------------------
>       See "ln -sf" line and around it.
>       ! By the way, I think "for lexer_dir in */ ; do" is simpler.
>       http://koji.fedoraproject.org/koji/taskinfo?taskID=2329549
> 
>     - Remove "#line foo" lines from C codes.

Fixed.

> 
> * Default working directory
> --------------------------------------------------------------------------
> pushd %{_builddir}/%{name}-%{version}/%{geminstdir}/ext
> --------------------------------------------------------------------------
>   - Here "%{_builddir}/%{name}-%{version}" can be replaced with
>     simply ".", because %setup -q sets the default working directory
>     to %{_builddir}/%{name}-%{version}.

I tried that but it seems like it's not working.

> 
> ? -doc subpackage
>   - By the way would you consider to create -doc subpackage?
>     I think at least the following files are not needed on runtime
>     by default:
> --------------------------------------------------------------------------
> %{geminstdir}/Rakefile
> %{geminstdir}/ext
> %{geminstdir}/tasks
> %{gemdir}/doc/%{gemname}-%{version}
> --------------------------------------------------------------------------

-doc subpackage included.

> 
> * One more gemspec specification file error
>   - Well,
> --------------------------------------------------------------------------
> [tasaka1@localhost ~]$ gherkin
> /usr/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': RubyGem
> version error: trollop(1.15 not ~> 1.16.2) (Gem::LoadError)
>  from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate'
>  from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate'
>  from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each'
>  from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate'
>  from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem'
>  from /usr/bin/gherkin:18
> --------------------------------------------------------------------------    

Fixed. If there will be any issues with 1.15 version, I'll contact maintainer and ask for update.

Comment 10 Mamoru TASAKA 2010-07-20 11:01:27 UTC
I will check your latest srpm later, however just for this:

(In reply to comment #9)
> Thanks a lot ! Btw. what means that '%' in ${lexer_dir%/} ?

${lexer_dir%/} is bash (sh) syntax 
---------------------------------------------------------
${parameter%word}
${parameter%%word}
  Remove matching suffix pattern.  The word is expanded
  to produce a pattern just as in pathname expansion.  
  If the pattern matches a trailing portion of the expanded 
  value of parameter,  then the result of the expansion 
  is the expanded value of parameter with the shortest
  matching pattern (the ``%'' case)  or  the  longest  
  matching  pattern  (the  ``%%''  case) deleted.
  <following explanation omitted>
----------------------------------------------------------

Comment 11 Michal Fojtik 2010-07-20 12:09:51 UTC
(In reply to comment #10)
> I will check your latest srpm later, however just for this:
> 
> (In reply to comment #9)
> > Thanks a lot ! Btw. what means that '%' in ${lexer_dir%/} ?
> 
> ${lexer_dir%/} is bash (sh) syntax 
> ---------------------------------------------------------
> ${parameter%word}
> ${parameter%%word}
>   Remove matching suffix pattern.  The word is expanded
>   to produce a pattern just as in pathname expansion.  
>   If the pattern matches a trailing portion of the expanded 
>   value of parameter,  then the result of the expansion 
>   is the expanded value of parameter with the shortest
>   matching pattern (the ``%'' case)  or  the  longest  
>   matching  pattern  (the  ``%%''  case) deleted.
>   <following explanation omitted>
> ----------------------------------------------------------    

Interesting, I didn't know that. Thanks!

Comment 12 Mamoru TASAKA 2010-07-20 20:16:15 UTC
For 2.1.5-2:

* Hacks for debuginfo generation

(In reply to comment #8)
> For 2.1.5-1:
> 
> * About empty debuginfo rpm and
>   "No such file or directory" message from /usr/lib/rpm/find-debuginfo.sh
>     Possible solution:
>     - Create needed symlink, like:
> --------------------------------------------------------------------------
> rm -rf ../lib/*.so
> for lexer_dir in */ ; do
>   pushd $lexer_dir
> 
>   mkdir ext
>   pushd ext
>   ln -sf .. ${lexer_dir%/}
>   popd
> 
>   sed -i 's/ -O0 / -O2 /' extconf.rb
>   CONFIGURE_ARGS="--with-cflags='%{optflags}'" ruby extconf.rb
>   make clean && make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
>   make install RUBYARCHDIR="../../lib"
>   popd
> done
> --------------------------------------------------------------------------

>     - Remove "#line foo" lines from C codes.
  - Well, what I meant here was that either of the hacks is needed
    (i.e. create symlink or remove "#line" directive), not both
    (however adding both is no harmful).

* trollop/rspec version dependency issue
----------------------------------------------------------------------------
   100  # TODO: Update these packages in Fedora and remove this lines
   101  sed -i -e "s|2.0.0.beta.15|1.3.0|" %{buildroot}%{geminstdir}/Rakefile
   102  sed -i -e "s|1.16.2|1.15|" %{buildroot}%{geminstdir}/Rakefile
----------------------------------------------------------------------------
  - Well, this fix is needed, however it is not enough.
    You will see that the installed gemspec specification file still
    has old (previous) dependency
    ... because .gemspec file is created when installing gem ball from
        Rakefile in gem ball, same issue as optflag issue
    So you have to fix both Rakefile and .gemspec file manually.

Comment 13 Michal Fojtik 2010-07-21 11:06:47 UTC
(In reply to comment #12)

> 
> * trollop/rspec version dependency issue
> ----------------------------------------------------------------------------
>    100  # TODO: Update these packages in Fedora and remove this lines
>    101  sed -i -e "s|2.0.0.beta.15|1.3.0|" %{buildroot}%{geminstdir}/Rakefile
>    102  sed -i -e "s|1.16.2|1.15|" %{buildroot}%{geminstdir}/Rakefile
> ----------------------------------------------------------------------------
>   - Well, this fix is needed, however it is not enough.
>     You will see that the installed gemspec specification file still
>     has old (previous) dependency
>     ... because .gemspec file is created when installing gem ball from
>         Rakefile in gem ball, same issue as optflag issue
>     So you have to fix both Rakefile and .gemspec file manually.    

Yes, you are right. I fixed both specfile and Rakefile.

rev. 2.1.5-3:

Spec URL: http://mifo.sk/RPMS/rubygem-gherkin.spec
SRPM URL: http://mifo.sk/RPMS/rubygem-gherkin-2.1.5-3.fc13.src.rpm

Comment 14 Mamoru TASAKA 2010-07-21 18:03:14 UTC
---------------------------------------------------------------
    This package (rubygem-gherkin) is APPROVED by mtasaka
---------------------------------------------------------------

Comment 15 Michal Fojtik 2010-07-22 07:42:17 UTC
Thanks Mamoru! 

New Package CVS Request
=======================
Package Name: rubygem-gherkin
Short Description: A fast Gherkin lexer/parser based on the Ragel State Machine Compiler
Owners: mfojtik
Branches: F-12 F-13 EL-5 EL-6

Comment 16 Kevin Fenzi 2010-07-23 21:42:59 UTC
CVS done (by process-cvs-requests.py).

Comment 17 Fedora Update System 2010-08-02 12:04:54 UTC
rubygem-gherkin-2.1.5-3.fc14 has been submitted as an update for Fedora 14.
http://admin.fedoraproject.org/updates/rubygem-gherkin-2.1.5-3.fc14

Comment 18 Fedora Update System 2010-08-02 12:18:24 UTC
rubygem-gherkin-2.1.5-3.fc13 has been submitted as an update for Fedora 13.
http://admin.fedoraproject.org/updates/rubygem-gherkin-2.1.5-3.fc13

Comment 19 Fedora Update System 2010-08-02 12:35:08 UTC
rubygem-gherkin-2.1.5-3.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/rubygem-gherkin-2.1.5-3.fc12

Comment 20 Fedora Update System 2010-08-02 13:08:48 UTC
rubygem-gherkin-2.1.5-3.el5 has been submitted as an update for Fedora EPEL 5.
http://admin.fedoraproject.org/updates/rubygem-gherkin-2.1.5-3.el5

Comment 21 Mamoru TASAKA 2010-08-02 14:21:13 UTC
Closing.

Comment 22 Fedora Update System 2010-08-13 21:12:01 UTC
rubygem-gherkin-2.1.5-3.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 23 Fedora Update System 2010-08-13 21:23:14 UTC
rubygem-gherkin-2.1.5-3.fc13 has been pushed to the Fedora 13 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 24 Fedora Update System 2010-08-19 01:05:35 UTC
rubygem-gherkin-2.1.5-3.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 25 Fedora Update System 2010-09-06 18:25:40 UTC
rubygem-gherkin-2.1.5-3.el5 has been pushed to the Fedora EPEL 5 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 26 Troy Dawson 2014-12-18 23:40:44 UTC
Package Change Request
======================
Package Name: rubygem-gherkin
New Branches: epel7
Owners: tdawson

Comment 27 Gwyn Ciesla 2014-12-19 13:23:37 UTC
Git done (by process-git-requests).