mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
libapparmor: Fix ruby 3.1 build for libapparmor
The Hack used to build the libapparmor swig interface for ruby fails with ruby 3.1. Instead of trying to do black magic in ruby to rename the generated Makefile to Makefile.new, just save off the Makefile and restore after ruby's setup has been called. Fixes: https://gitlab.com/apparmor/apparmor/-/issues/206 Signed-off-by: John Johansen <john.johansen@canonical.com> Acked-by: Christian Boltz <apparmor@cboltz.de>
This commit is contained in:
parent
0e52b555ae
commit
1ca30e35b0
3 changed files with 7 additions and 13 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -177,7 +177,7 @@ libraries/libapparmor/swig/ruby/LibAppArmor_wrap.c
|
||||||
libraries/libapparmor/swig/ruby/LibAppArmor_wrap.o
|
libraries/libapparmor/swig/ruby/LibAppArmor_wrap.o
|
||||||
libraries/libapparmor/swig/ruby/Makefile
|
libraries/libapparmor/swig/ruby/Makefile
|
||||||
libraries/libapparmor/swig/ruby/Makefile.in
|
libraries/libapparmor/swig/ruby/Makefile.in
|
||||||
libraries/libapparmor/swig/ruby/Makefile.new
|
libraries/libapparmor/swig/ruby/Makefile.bak
|
||||||
libraries/libapparmor/swig/ruby/Makefile.ruby
|
libraries/libapparmor/swig/ruby/Makefile.ruby
|
||||||
libraries/libapparmor/swig/ruby/mkmf.log
|
libraries/libapparmor/swig/ruby/mkmf.log
|
||||||
libraries/libapparmor/testsuite/.deps
|
libraries/libapparmor/testsuite/.deps
|
||||||
|
|
|
@ -9,7 +9,9 @@ LibAppArmor_wrap.c : $(srcdir)/../SWIG/libapparmor.i
|
||||||
MOSTLYCLEANFILES=LibAppArmor_wrap.c
|
MOSTLYCLEANFILES=LibAppArmor_wrap.c
|
||||||
|
|
||||||
Makefile.ruby: extconf.rb
|
Makefile.ruby: extconf.rb
|
||||||
|
mv Makefile Makefile.bak
|
||||||
PREFIX=$(prefix) $(RUBY) $< --with-LibAppArmor-include=$(top_srcdir)/include
|
PREFIX=$(prefix) $(RUBY) $< --with-LibAppArmor-include=$(top_srcdir)/include
|
||||||
|
mv Makefile.bak Makefile
|
||||||
|
|
||||||
LibAppArmor.so: LibAppArmor_wrap.c Makefile.ruby
|
LibAppArmor.so: LibAppArmor_wrap.c Makefile.ruby
|
||||||
$(MAKE) -fMakefile.ruby
|
$(MAKE) -fMakefile.ruby
|
||||||
|
@ -22,7 +24,7 @@ install-exec-local: Makefile.ruby
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
if test -f Makefile.ruby; then $(MAKE) -fMakefile.ruby clean; fi
|
if test -f Makefile.ruby; then $(MAKE) -fMakefile.ruby clean; fi
|
||||||
rm -f Makefile.ruby Makefile.new
|
rm -f Makefile.ruby Makefile.bak
|
||||||
rm -f *.o *.so *.log
|
rm -f *.o *.so *.log
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -2,16 +2,8 @@
|
||||||
|
|
||||||
require 'mkmf'
|
require 'mkmf'
|
||||||
|
|
||||||
# hack 1: ruby black magic to write a Makefile.new instead of a Makefile
|
# hack 1: Before extconf.rb gets called, Makefile gets backed up, and
|
||||||
alias open_orig open
|
# restored afterwards (see Makefile.am)
|
||||||
def open(path, mode=nil, perm=nil)
|
|
||||||
path = 'Makefile.new' if path == 'Makefile'
|
|
||||||
if block_given?
|
|
||||||
open_orig(path, mode, perm) { |io| yield(io) }
|
|
||||||
else
|
|
||||||
open_orig(path, mode, perm)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if ENV['PREFIX']
|
if ENV['PREFIX']
|
||||||
prefix = CONFIG['prefix']
|
prefix = CONFIG['prefix']
|
||||||
|
@ -27,7 +19,7 @@ if find_library('apparmor', 'parse_record', '../../src/.libs') and
|
||||||
|
|
||||||
# hack 2: strip all rpath references
|
# hack 2: strip all rpath references
|
||||||
open('Makefile.ruby', 'w') do |out|
|
open('Makefile.ruby', 'w') do |out|
|
||||||
IO.foreach('Makefile.new') do |line|
|
IO.foreach('Makefile') do |line|
|
||||||
out.puts line.gsub(/-Wl,-R'[^']*'/, '')
|
out.puts line.gsub(/-Wl,-R'[^']*'/, '')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue