Ruby 1.8.7 RPM RC1

Mamoru Tasaka mtasaka at ioa.s.u-tokyo.ac.jp
Fri Jul 16 18:15:18 UTC 2010


Hello, all:

Mohammed Morsi wrote, at 07/13/2010 12:50 PM +9:00:
> On 07/10/2010 03:39 PM, Mamoru Tasaka wrote:
>
> http://mo.morsi.org/files/rpms/ruby-1.8.7.299-3.fc13.src.rpm

Again thank you!


> Also a couple of other things. First off, it seems the change log
> is about as twice the size of the rest of the spec file itself.
> Is it ever acceptable to truncate this? Perhaps with a note, saying see cvs for the rest of the changelog?

- If you want to shorten %changelog, please check what "vim" srpm
   does. i.e.
   - Create "Changelog.rpm"
   - Move old %changelog entry there
   - And at the end of %changelog, write "for older history, please see
     'Changelog.rpm'".


Some notes for 1.8.7.299-3:

* Obsoletes for -mode, -docs
   - Please make Obsoletes EVR specific
     - in case these subpackage revives. Obsoletes without
       EVR specification causes some annoying problems in
       some cases
     i.e. Change Obsoletes to like: "Obsoletes: %{name}-mode < 1.8.7"
     and so on.

* Documention
   - For example, still -tcltk subpackage misses most of example
     ruby scripts

   ! Note
     - Please try to make "$ rpmbuild -bi --short-circuit" (after
       "$ rpmbuild -bc" is done) succeeds even when executed for multiple
       times to make the spec file easier to maintain.
       - If "$ rpmbuild -bi --short-circuit" fails when executed multiple
         time, we have to execute whole rpmbuild process again even if
         we only want to modify %install section.

      So, for example,
       - Please don't do:
----------------------------------------------------------------------
    241  mkdir ruby ruby-libs ruby-tcltk irb
    242  mv ../%{name}-%{arcver}/sample/* ruby
    244  mv ../%{name}-%{arcver}/lib/README* ../%{name}-%{arcver}/doc/* ruby-libs
----------------------------------------------------------------------
         With this, all files under ../%{name}-%{arcver}/sample/ are
         gone (and the same thing happens on line 244).
         So if "rpmbuild -bi --short-circuit" is executed again,
         these line fails because there are no longer needed files under
         ../%{name}-%{arcver}/sample/* (and the same for line 244).

         The correct way is not to use "mv" here, but to replace this with
         "cp -a".

       - The following lines
----------------------------------------------------------------------
    236  # install documenation in tmp directory to be
    237  # picked up by %doc macros in %files sections
    238  mkdir tmp-ruby-docs
    239  pushd tmp-ruby-docs
----------------------------------------------------------------------
         fails when "-bi --short-circuit" is executed again because
         "tmp-ruby-docs" directory already exists. The correct way is
         to execute "rm -rf tmp-ruby-docs" before these lines to make
         it sure that "tmp-ruby-docs" directory is newly created.

       - By the way about the following line:
-----------------------------------------------------------------------
    245  find ../ext -mindepth 1 \
    246    \( -path '*/sample/*' -o -path '*/demo/*' \) -o \
    247    \( -name '*.rb' -not -path '*/lib/*' -not -name extconf.rb \) -o \
    248    \( -name 'README*' -o -name '*.txt*' -o -name 'MANUAL*' \) -exec mv -f {} ruby-libs \;
-----------------------------------------------------------------------
         * At least the line 245 should be
           "find ../%{name}-%{arcver}/ext -mindepth 1 \"

         * And using "-exec mv -f" is wrong here because
           - This moves all the files matching "find" condition into the same
             "ruby-libs" diretory, without ignoring (deleting) directory hierarchy.
             I guess the reason the original specfile used "tar" command is
             to keep directory hierarchy.
           - And as I said above, "mv" removes the files from the original directory,
             so this causes "rpmbuild -bi --short-circuit" fail when executed
             again.
             However, simply replacing "mv -f" to "cp -a" does not work
             here because of the above reason.

       - And the following lines:
-----------------------------------------------------------------------
    251  find ruby-libs -name *tcltklib* -exec mv {} ruby-tcltk \;
    252  find ruby-libs -name *tk*       -exec mv {} ruby-tcltk \;
-----------------------------------------------------------------------
         is not good because this also ignores directory hierarchy.

* Directory ownership issue
   - Still i686 koji build complains:
-----------------------------------------------------------------------
   2430  warning: File listed twice: /usr/lib/ruby
   2431  warning: File listed twice: /usr/lib/ruby/1.8
   2432  warning: File listed twice: /usr/lib/ruby/site_ruby
   2433  warning: File listed twice: /usr/lib/ruby/site_ruby/1.8
   2434  warning: File listed twice: /usr/lib/ruby/site_ruby/1.8/i386-linux
-----------------------------------------------------------------------

   - On the other hand,
------------------------------------------------------------------------
$ ls -1 *x86_64*rpm | grep -v debuginfo | xargs rpm -qlpv | grep '^d' | sed -e 's|^.* ||' | grep lib64 | sort
/usr/lib64/ruby/1.8/x86_64-linux/digest
/usr/lib64/ruby/1.8/x86_64-linux/io
/usr/lib64/ruby/1.8/x86_64-linux/racc
------------------------------------------------------------------------
     so the needed directories
------------------------------------------------------------------------
/usr/lib64/ruby/1.8/
/usr/lib64/ruby/1.8/x86_64-linux/
/usr/lib64/ruby/site_ruby
/usr/lib64/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/x86_64-linux
------------------------------------------------------------------------
     are not owned by any packages.
     I guess the following lines in ruby-1.8.7.spec:
------------------------------------------------------------------------
    334  %ifnarch ppc64 s390x sparc64 x86_64
    335  %dir %{vendorarchbase}
    336  %dir %{vendorarchbase}/%{rubyxver}
    337  %{sitearchbase}
    338  %endif
------------------------------------------------------------------------
     is the typo of "%ifarch", not "%ifnarch".

* noarch subpackage
   - At least -rdoc and -irb subpackage can be noarch
   ! Well, I thought -ri subpackage can also be noarch, however
     now generated yaml files used for ri now differ between on i686
     and x86_64, so currently -ri subpackage cannot be noarch
     ( however we installs yaml ri document files under %_datadir,
       so these files should be noarch... need investigating.... )

* rpmlint issue
ruby-irb.i686: W: file-not-utf8 /usr/share/doc/ruby-irb-1.8.7.299/irb-tools.rd.ja
ruby-libs.i686: W: file-not-utf8 /usr/share/doc/ruby-libs-1.8.7.299/README.1st
ruby-libs.i686: W: file-not-utf8 /usr/share/doc/ruby-libs-1.8.7.299/forwardable.rd.ja
   - Please change the encodings to UTF-8 (I guess these are under EUC-JP.. not
     checked)

ruby-static.i686: W: no-documentation
ruby.i686: W: no-manual-page-for-binary erb
ruby-irb.i686: W: no-manual-page-for-binary irb
ruby-rdoc.i686: W: no-manual-page-for-binary rdoc
ruby-ri.i686: W: no-manual-page-for-binary ri
ruby.i686: W: no-manual-page-for-binary testrb
   - These can be ignored.

ruby-tcltk.i686: E: non-executable-script /usr/lib/ruby/1.8/tkextlib/pkg_checker.rb 0644L /usr/bin/env
   - Please change the permission, or remove shebang.

ruby.i686: W: obsolete-not-provided ruby-docs
ruby.i686: W: obsolete-not-provided ruby-mode
   - These can be ignored.

ruby-irb.i686: W: self-obsoletion irb <= 1.8.7.299-3.fc14 obsoletes irb = 1.8.7.299-3.fc14
ruby-libs.i686: W: self-obsoletion libruby <= 1.8.7.299-3.fc14 obsoletes libruby = 1.8.7.299-3.fc14
ruby-rdoc.i686: W: self-obsoletion rdoc <= 1.8.7.299-3.fc14 obsoletes rdoc = 1.8.7.299-3.fc14
ruby-ri.i686: W: self-obsoletion ri <= 1.8.7.299-3.fc14 obsoletes ri = 1.8.7.299-3.fc14
   - It is better that obsoletes should be "Obsoletes: foo < %{name}-%{version}",
     not "<=".

ruby-tcltk.i686: W: spelling-error %description -l en_US Tcl -> Tc, Tl, Cl
ruby-tcltk.i686: W: spelling-error Summary(en_US) Tcl -> Tc, Tl, Cl
   - Can be ignored.

ruby-devel.i686: W: spurious-executable-perm /usr/lib/ruby/1.8/i386-linux/digest.h
ruby-devel.i686: W: spurious-executable-perm /usr/lib/ruby/1.8/i386-linux/dl.h
ruby-devel.i686: W: spurious-executable-perm /usr/lib/ruby/1.8/i386-linux/dlconfig.h
   - Permission on these files should be 0644.

ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/biorhythm.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/drb/old_tuplespace.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/drb/simpletuple.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/drb/speedc.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/exyacc.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/from.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/fullpath.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/getopts.test /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/less.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/mpart.rb ./ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/observ.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/pi.rb /usr/local/bin/ruby
ruby.i686: E: wrong-script-interpreter /usr/share/doc/ruby-1.8.7.299/trojan.rb /usr/local/bin/ruby
   - Please fix these.

Again thank you for creating ruby187 srpm.

Regards,
Mamoru


More information about the ruby-sig mailing list