Hello, all:
Mohammed Morsi wrote, at 07/13/2010 12:50 PM +9:00:
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