On 07/16/2010 02:15 PM, Mamoru Tasaka wrote:
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!
No problem. Really sorry on the delay for this response, I got pulled back onto deltacloud last week.
Updated srpm can be found here:
http://mo.morsi.org/files/rpms/ruby-1.8.7.299-4.fc13.src.rpm
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'".
Done
Some notes for 1.8.7.299-3:
- Obsoletes for -mode, -docs
- Please make Obsoletes EVR specific
i.e. Change Obsoletes to like: "Obsoletes: %{name}-mode < 1.8.7" and so on.
- in case these subpackage revives. Obsoletes without EVR specification causes some annoying problems in some cases
Done
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.
Done, now rpmbuild -bi --short-circuit works multiple consecutive times.
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".
Done
- 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.
Done
- 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.
Ah ok, I was wondering why tar cf was being used just to be piped into tar xf. This make sense.
I reverted it back to using tar with a comment about the hierarchy issue is the reason its being done that way.
- 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.
Reverted these to the old tar way as well.
- 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".
Done
- noarch subpackage
! 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.... )
- At least -rdoc and -irb subpackage can be noarch
Done
- 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)
Done
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.
Done
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 "<=".
Done
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.
Done
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.
Done
Again thank you for creating ruby187 srpm.
Regards, Mamoru
Thanks in return for the reviews and for uploading the new rpms to rawhide.
BTW I also verified that the puppet, rails, and deltacloud test suites all work against Ruby 1.8.7 (some bugs were filed in bugzilla, but nothing major, mostly spec file stuff).
-Mo