File link-with-soname.patch of Package mruby
diff -Nur mruby-3.4.0/build_config/host-shared.rb new/build_config/host-shared.rb
--- mruby-3.4.0/build_config/host-shared.rb 2025-04-20 06:08:22.000000000 +0200
+++ new/build_config/host-shared.rb 2025-07-09 13:57:53.778707930 +0200
@@ -15,12 +15,12 @@
conf.archiver do |archiver|
archiver.command = cc.command
- archiver.archive_options = '-shared -o %{outfile} %{objs}'
+ archiver.archive_options = '-shared -Wl,-soname,%{filename} -o %{outfile} %{objs}'
end
# file extensions
conf.exts do |exts|
- exts.library = '.so'
+ exts.library = '.so.%{version}'
end
# file separator
diff -Nur mruby-3.4.0/lib/mruby/build/command.rb new/lib/mruby/build/command.rb
--- mruby-3.4.0/lib/mruby/build/command.rb 2025-04-20 06:08:22.000000000 +0200
+++ new/lib/mruby/build/command.rb 2025-07-09 13:56:55.668375790 +0200
@@ -4,7 +4,7 @@
class Command
include Rake::DSL
extend Forwardable
- def_delegators :@build, :filename, :objfile, :libfile, :exefile
+ def_delegators :@build, :filename, :realname, :objfile, :libfile, :exefile
attr_accessor :build, :command
def initialize(build)
@@ -240,7 +240,7 @@
def run(outfile, objfiles)
mkdir_p File.dirname(outfile)
_pp "AR", outfile.relative_path
- _run archive_options, { :outfile => filename(outfile), :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' ') }
+ _run archive_options, { :outfile => filename(outfile), :filename => realname(outfile), :objs => filename(objfiles).map{|f| %Q["#{f}"]}.join(' ') }
end
end
diff -Nur mruby-3.4.0/lib/mruby/build.rb new/lib/mruby/build.rb
--- mruby-3.4.0/lib/mruby/build.rb 2025-04-20 06:08:22.000000000 +0200
+++ new/lib/mruby/build.rb 2025-07-09 13:56:55.668457919 +0200
@@ -7,6 +7,7 @@
autoload :Gem, "mruby/gem"
autoload :Lockfile, "mruby/lockfile"
autoload :Presym, "mruby/presym"
+ autoload :Source, 'mruby/source'
INSTALL_PREFIX = ENV['PREFIX'] || ENV['INSTALL_PREFIX'] || '/usr/local'
INSTALL_DESTDIR = ENV['DESTDIR'] || ''
@@ -425,6 +426,10 @@
end
end
+ def realname(name)
+ filename(name).rpartition(file_separator)[-1]
+ end
+
def exefile(name)
if name.is_a?(Array)
name.flatten.map { |n| exefile(n) }
@@ -448,7 +453,7 @@
if name.is_a?(Array)
name.flatten.map { |n| libfile(n) }
else
- "#{name}#{exts.library}"
+ "#{name}#{exts.library}" % {:version => MRuby::Source::MRUBY_VERSION}
end
end