Hello community, here is the log from the commit of package ruby-common for openSUSE:Factory checked in at 2018-07-13 10:13:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ruby-common (Old) and /work/SRC/openSUSE:Factory/.ruby-common.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ruby-common" Fri Jul 13 10:13:27 2018 rev:13 rq:620969 version:2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/ruby-common/ruby-common.changes 2018-02-12 10:08:36.639785557 +0100 +++ /work/SRC/openSUSE:Factory/.ruby-common.new/ruby-common.changes 2018-07-13 10:13:33.301900856 +0200 @@ -1,0 +2,11 @@ +Wed Jun 6 15:11:27 UTC 2018 - mrueck...@suse.de + +- rename the gem_packages template from opensuse.spec.erb to + gem_packages.spec.erb +- add support for binary_map flag in gem2rpm.yml + - This can be used to rename the _unversioned_ symlink of the + binaries in /usr/bin/ to avoid conflicts with other packages +- gem_packages.spec.erb: sync with file in gem2rpm + + +------------------------------------------------------------------- Old: ---- opensuse.spec.erb New: ---- gem_packages.spec.erb ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ruby-common.spec ++++++ --- /var/tmp/diff_new_pack.ygvQ03/_old 2018-07-13 10:13:33.869901523 +0200 +++ /var/tmp/diff_new_pack.ygvQ03/_new 2018-07-13 10:13:33.869901523 +0200 @@ -36,7 +36,7 @@ Source8: ruby-common.macros Source9: ruby.rpm-macros Source10: gem_packages.sh -Source11: opensuse.spec.erb +Source11: gem_packages.spec.erb Source12: ruby-find-versioned Source13: gemfile.attr Source14: gemfile.rb ++++++ gem_install.sh ++++++ --- /var/tmp/diff_new_pack.ygvQ03/_old 2018-07-13 10:13:33.897901556 +0200 +++ /var/tmp/diff_new_pack.ygvQ03/_new 2018-07-13 10:13:33.897901556 +0200 @@ -22,6 +22,7 @@ require 'logger' require 'rubygems' require 'rubygems/package' +require 'yaml' begin require 'rubygems/format' rescue LoadError => ex @@ -48,6 +49,7 @@ options.verbose = false options.rpmsourcedir = ENV['RPM_SOURCE_DIR'] || '/home/abuild/rpmbuild/SOURCES' options.rpmbuildroot = ENV['RPM_BUILD_ROOT'] || '/home/abuild/rpmbuild/BUILDROOT/just-testing' +options.parsed_config = nil GILogger = Logger.new(STDERR) GILogger.level=Logger::DEBUG @@ -75,6 +77,20 @@ end end +def map_executable(options, executable) + if not(options.parsed_config.nil? or + options.parsed_config[:binary_map].nil? or + options.parsed_config[:binary_map][executable].nil?) + executable=options.parsed_config[:binary_map][executable] + end + executable +end + +def initialized_gem2rpm_config(options, name) + options.config = name + options.parsed_config = YAML.load_file(name) +end + opt_parser = OptionParser.new do |opts| opts.banner = "Usage: gem_install.rb [options]" @@ -82,7 +98,7 @@ opts.separator "Specific options:" opts.on('--config [FILENAME]', 'path to gem2rpm.yml') do |name| - options.config = name + initialized_gem2rpm_config(options, name) end opts.on('--default-gem [FILENAME]', 'Which filename to use when we dont find another gem file.') do |fname| @@ -152,6 +168,13 @@ GILogger.info "Found gem #{options.gemfile}" end +if options.config.nil? + name = File.join(options.rpmsourcedir, 'gem2rpm.yml') + if File.exist?(name) + initialized_gem2rpm_config(options, name) + end +end + package = Gem::Package.new(options.gemfile) rescue Gem::Format.from_file_by_path(options.gemfile) spec = package.spec gemdir = File.join(Gem.dir, 'gems', "#{options.gemname}-#{options.gemversion}") @@ -212,6 +235,7 @@ full_versioned = "#{unversioned}#{options.rubysuffix}-#{spec.version}" ruby_versioned = "#{unversioned}#{options.rubysuffix}" gem_versioned = "#{unversioned}-#{spec.version}" + unversioned = map_executable(options, unversioned) File.rename(default_path, full_versioned) patchfile(full_versioned, />= 0(\.a)?/, "= #{options.gemversion}") # unversioned ++++++ gem_packages.spec.erb ++++++ <% begin require 'rbconfigpackagingsupport' rescue LoadError => ex end def self.patch_mod_full_name(path, mod_full_name) path.gsub(/\/-/, "/#{mod_full_name}") end def self.patch_libdir(path) # path ? path.gsub(/\/usr\/lib(64)?/, '%{_libdir}') : path path end def self.get_extension_doc_dir(gem_spec) return nil unless Gem.ruby_engine == 'ruby' && Gem::Requirement.new("~> 2.1.0").satisfied_by?(Gem.ruby_version) if gem_spec.respond_to?(:extensions_dir) rp = gem_spec.extensions_dir.rpartition(gem_spec.base_dir) return File.join(rp[1], 'doc', rp[2]) end return nil end def self.get_mod_weight(spec) versions=spec.version.to_s.split('.') begin v1=Integer(versions[0]) rescue v1=1 end begin v2=Integer(versions[1]) rescue v2=0 end begin v3=Integer(versions[2]) rescue v3=0 end weight=v1*10000+v2*100+v3 end def self.map_executable(config, executable) if not(config[:binary_map].nil? or config[:binary_map][executable].nil?) executable=config[:binary_map][executable] end executable end def self.filecontent_or_value(path) (path and File.exists?(path)) ? File.read(path) : path end def self.parse_custom_pkgs(env_value) custom_pkgs = {} if env_value list = env_value.split(/\s+/) list.each do |element| pkg_name,filelist_path, preamble, description = element.split(/\|/, 4) filelist = filecontent_or_value(filelist_path) preamble = filecontent_or_value(preamble) description = filecontent_or_value(description) custom_pkgs[pkg_name] = { "filelist" => filelist, "preamble" => preamble, "description" => description, } end end custom_pkgs end rb_suffix = RbConfig::CONFIG['ruby_install_name'].gsub(/^ruby/, '') rb_pkgname = RbConfig::CONFIG['ruby_install_name'].gsub(/^ruby\./, '') if rb_suffix =~ /\A\d+\.\d+\z/ rb_suffix = '.ruby' + rb_suffix end pkg_basename = rb_pkgname + '-rubygem-' + spec.name mod_full_name = "#{spec.name}-#{spec.version}" mod_weight = get_mod_weight(spec) gem_platform = Gem::Platform.new(RbConfig::CONFIG["arch"]).to_s rb_bindir = RbConfig::CONFIG['bindir'] rb_sysconfdir = RbConfig::CONFIG['sysconfdir'] docdir = '/usr/share/doc/packages' gem_spec = Gem::Specification.new gem_base_dir = patch_libdir(gem_spec.base_dir) gem_cache_dir = patch_libdir(gem_spec.cache_dir) gem_gems_dir = patch_libdir(gem_spec.gems_dir) gem_spec_dir = patch_libdir(gem_spec.spec_dir) gem_bin_dir = patch_libdir(patch_mod_full_name(gem_spec.bin_dir , mod_full_name )) gem_doc_dir = patch_libdir(patch_mod_full_name(gem_spec.doc_dir, mod_full_name )) gem_gem_dir = patch_libdir(patch_mod_full_name(gem_spec.gem_dir, mod_full_name )) gem_ri_dir = patch_libdir(patch_mod_full_name(gem_spec.ri_dir, mod_full_name )) #ruby2.1 gem_extensions_dir = gem_spec.respond_to?(:extensions_dir) ? patch_libdir(gem_spec.extensions_dir) : nil gem_extension_dir = gem_spec.respond_to?(:extension_dir) ? patch_libdir(patch_mod_full_name(gem_spec.extension_dir, mod_full_name)) : nil gem_extension_doc = patch_libdir(get_extension_doc_dir(gem_spec)) #/ruby2.1 %> %package -n <%= pkg_basename %><%= config[:version_suffix] %> # MANUAL <% if config[:main] && config[:main][:preamble] -%> <%= config[:main][:preamble] %> <% end -%> # /MANUAL Summary: <%= config[:summary] or spec.summary %> Group: Development/Languages/Ruby <% unless spec.executables.empty? -%> PreReq: update-alternatives <% end -%> Enhances: <%= rb_pkgname %> %description -n <%= pkg_basename %><%= config[:version_suffix] %> <%= config[:description] or spec.description -%> <% if spec.has_rdoc && !(config[:disable_docs]) -%> %package -n <%= pkg_basename %>-doc<%= config[:version_suffix] %> Summary: RDoc documentation for <%= spec.name %> Group: Development/Languages/Ruby Requires: <%= pkg_basename %><%= config[:version_suffix] %> = <%= spec.version %> %description -n <%= pkg_basename %>-doc<%= config[:version_suffix] %> Documentation generated at gem installation time. Usually in RDoc and RI formats. <% end -%> <% test_frameworks = Hash.new docdirfiles = [] format.file_entries.each do |entry| # new rubygems version has it different if entry.kind_of?(Array) path=entry[0]['path'] else path=entry end path.gsub!(%r{^\./}, '') %w(test spec).each { |framework| test_frameworks[framework] = 1 if path.index(framework + "/") == 0 } %w(changes copying history legal licence license license-mit mit-license changelog news release_notes readme ).each { |file| bpath = path.downcase.gsub(%r{\.rdoc$}, '').gsub(%r{\.txt$}, '').gsub(%r{\.md$}, '').gsub(%r{\.markdown$}, '') #$stderr.puts "PATH #{path} #{bpath} #{file}" docdirfiles << path if bpath == file } end test_frameworks = test_frameworks.keys.sort -%> <% unless test_frameworks.empty? -%> %package -n <%= pkg_basename %>-testsuite<%= config[:version_suffix] %> Summary: Test suite for <%= spec.name %> Group: Development/Languages/Ruby Requires: <%= pkg_basename %><%= config[:version_suffix] %> = <%= spec.version %> %description -n <%= pkg_basename %>-testsuite<%= config[:version_suffix] %> Test::Unit or RSpec files, useful for developers. <% end -%> <% unless spec.executables.empty? -%> %post -n <%= pkg_basename %><%= config[:version_suffix] %> <% spec.executables.each do |executable| -%> /usr/sbin/update-alternatives --install \ <%= rb_bindir %>/<%= map_executable(config, executable) %> <%= map_executable(config, executable) %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> <%= mod_weight %> /usr/sbin/update-alternatives --install \ <%= rb_bindir %>/<%= "#{executable}-#{spec.version}" %> <%= "#{executable}-#{spec.version}" %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> <%= mod_weight %> /usr/sbin/update-alternatives --install \ <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}" %> <%= "#{executable}#{rb_suffix}" %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> <%= mod_weight %> <% end -%> %preun -n <%= pkg_basename %><%= config[:version_suffix] %> if [ "$1" = 0 ] ; then <% spec.executables.each do |executable| -%> /usr/sbin/update-alternatives --remove <%= map_executable(config, executable) %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> /usr/sbin/update-alternatives --remove <%= "#{executable}-#{spec.version}" %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> /usr/sbin/update-alternatives --remove <%= "#{executable}#{rb_suffix}" %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> <% end -%> fi <% end -%> %files -n <%= pkg_basename %><%= config[:version_suffix] %> %defattr(-,root,root,-) # MANUAL <% if config[:main] && config[:main][:filelist] -%> <%= config[:main][:filelist] -%> <% end -%> # /MANUAL <% unless docdirfiles.empty? -%> <%= docdir %>/<%= pkg_basename %><%= config[:version_suffix] %> <% end -%> <% spec.executables.each do |executable| -%> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}-#{spec.version}" %> <%= rb_bindir %>/<%= "#{executable}#{rb_suffix}" %> <%= rb_bindir %>/<%= "#{executable}-#{spec.version}" %> <%= rb_bindir %>/<%= map_executable(config, executable) %> %ghost <%= rb_sysconfdir %>/alternatives/<%= map_executable(config, executable) %> %ghost <%= rb_sysconfdir %>/alternatives/<%= "#{executable}#{rb_suffix}" %> %ghost <%= rb_sysconfdir %>/alternatives/<%= "#{executable}-#{spec.version}" %> <% end -%> # cache file <%= gem_cache_dir %>/<%= mod_full_name %>.gem <%= gem_gem_dir %> <% unless spec.extensions.empty? or gem_extension_dir.nil? -%> <%= gem_extension_dir %> <% end -%> <% test_frameworks.each do |framework| -%> %exclude <%= File.join gem_gem_dir, framework %> <% end -%> <%= gem_spec_dir %>/<%= mod_full_name -%>.gemspec <% if spec.has_rdoc && !(config[:disable_docs]) -%> %files -n <%= pkg_basename %>-doc<%= config[:version_suffix] %> %defattr(-,root,root,-) %doc <%= gem_doc_dir %> <% unless spec.extensions.empty? or gem_extension_doc.nil? -%> %doc <%= gem_extension_doc %> <% end -%> <% end -%> <% unless test_frameworks.empty? -%> %files -n <%= pkg_basename %>-testsuite<%= config[:version_suffix] %> %defattr(-,root,root,-) <% test_frameworks.each do |framework| -%> <%= File.join gem_gem_dir, framework %> <% end -%> <% end -%> <% if config[:custom_pkgs_ruby_versioned] config[:custom_pkgs_ruby_versioned].each do |custom_pkg_name, data| -%> %package -n <%= pkg_basename %>-<%= custom_pkg_name %><%= config[:version_suffix] %> <% if data[:preamble] and data[:preamble] != '' -%> <%= data[:preamble] %> <% else %> Summary: <%= custom_pkg_name %> sub package for <%= spec.name %> Group: Development/Languages/Ruby <% end %> Requires: <%= pkg_basename %><%= config[:version_suffix] %> = <%= spec.version %> %description -n <%= pkg_basename %>-<%= custom_pkg_name %><%= config[:version_suffix] %> <% if data[:description] and data[:description] != '' -%> <%= data[:description] %> <% else %> <%= spec.description -%> This package holds the <%= custom_pkg_name %> sub package for <%= spec.name -%> <% end %> %files -n <%= pkg_basename %>-<%= custom_pkg_name %><%= config[:version_suffix] %> %defattr(-,root,root,-) <%= data['filelist'] -%> <% end end -%>