Re: This patch fixes the exception handling in libselinux-python bindings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 8, 2010 at 3:52 PM, Joshua Brindle <method@xxxxxxxxxxxxxxx> wrote:
> Daniel J Walsh wrote:
>>
>> On 01/08/2010 03:19 PM, Stephen Smalley wrote:
>>>
>>> On Fri, 2010-01-08 at 15:06 -0500, Stephen Smalley wrote:
>>>>
>>>> On Fri, 2010-01-08 at 10:32 -0500, Stephen Smalley wrote:
>>>>>
>>>>> On Mon, 2009-09-28 at 15:07 -0400, Daniel J Walsh wrote:
>>>>>>
>>>>>> On 09/24/2009 03:19 PM, Joshua Brindle wrote:
>>>>>>>
>>>>>>> Joshua Brindle wrote:
>>>>>>>>
>>>>>>>> Joshua Brindle wrote:
>>>>>>>>>
>>>>>>>>> Daniel J Walsh wrote:
>>>>>>>>>>
>>>>>>>>>> On 09/16/2009 03:35 PM, Joshua Brindle wrote:
>>>>>>>>>>>
>>>>>>>>>>> Joshua Brindle wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Daniel J Walsh wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> What do you think of this one. Removed excess swig cruft,
>>>>>>>>>>>>>
>>>>>>>>>>>>> You need to run
>>>>>>>>>>>>>
>>>>>>>>>>>>> make swigify to generate those changes.
>>>>>>>>>>>>>
>>>>>>>>>>>> Ok, looking at this now. I don't completely get how it works.
>>>>>>>>>>>> I'm
>>>>>>>>>>>> trying
>>>>>>>>>>>> to reproduce what you are doing by hand but nothing comes out of
>>>>>>>>>>>> gcc:
>>>>>>>>>>>>
>>>>>>>>>>>> [root@localhost src]# echo '#include
>>>>>>>>>>>> "../include/selinux/selinux.h"'>
>>>>>>>>>>>> temp.c
>>>>>>>>>>>> [root@localhost src]# gcc -c temp.c -aux-info temp.aux
>>>>>>>>>>>> [root@localhost src]# ls temp.*
>>>>>>>>>>>> temp.c temp.o
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>> I got this "sort of" working locally. It works when I call it
>>>>>>>>> directly
>>>>>>>>> on the header but it leaves a .gch file sitting in the include
>>>>>>>>> directory.
>>>>>>>>>
>>>>>>>>> Trying to use stdin I get:
>>>>>>>>>
>>>>>>>>> [root@localhost src]# gcc -x c-header -c - -aux-info temp.aux<
>>>>>>>>> ../include/selinux/selinux.h
>>>>>>>>> <stdin>:569: internal compiler error: Segmentation fault
>>>>>>>>> Please submit a full bug report,
>>>>>>>>> with preprocessed source if appropriate.
>>>>>>>>> See<http://bugzilla.redhat.com/bugzilla>  for instructions.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Other comments:
>>>>>>>>>
>>>>>>>>> The disconnect between swigify and clean targets remains: If make
>>>>>>>>> swigify builds this, and it is checked in to the tree then make
>>>>>>>>> clean
>>>>>>>>> shouldn't remove it, else it should be in the pywrap target and not
>>>>>>>>> installed.
>>>>>>>>>
>>>>>>>>> I'm not sure what the header re-ordering in selinuxswig.i and the
>>>>>>>>> copytree/install functions have to do with this patch.
>>>>>>>>>
>>>>>>>>
>>>>>>>> Applied with this diff on top:
>>>>>>>>
>>>>>>>> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
>>>>>>>> index 928a1df..74b1e6a 100644
>>>>>>>> --- a/libselinux/src/Makefile
>>>>>>>> +++ b/libselinux/src/Makefile
>>>>>>>> @@ -16,14 +16,14 @@ LIBVERSION = 1
>>>>>>>>
>>>>>>>> LIBA=libselinux.a
>>>>>>>> TARGET=libselinux.so
>>>>>>>> -SWIGIF= selinuxswig_python.i
>>>>>>>> +SWIGIF= selinuxswig_python.i selinuxswig_python_exception.i
>>>>>>>> SWIGRUBYIF= selinuxswig_ruby.i
>>>>>>>> SWIGCOUT= selinuxswig_wrap.c
>>>>>>>> SWIGRUBYCOUT= selinuxswig_ruby_wrap.c
>>>>>>>> SWIGLOBJ:= $(patsubst %.c,%.lo,$(SWIGCOUT))
>>>>>>>> SWIGRUBYLOBJ:= $(patsubst %.c,%.lo,$(SWIGRUBYCOUT))
>>>>>>>> SWIGSO=_selinux.so
>>>>>>>> -SWIGFILES=$(SWIGSO) selinux.py
>>>>>>>> +SWIGFILES=$(SWIGSO) selinux.py selinuxswig_python_exception.i
>>>>>>>> SWIGRUBYSO=_rubyselinux.so
>>>>>>>> LIBSO=$(TARGET).$(LIBVERSION)
>>>>>>>> AUDIT2WHYSO=audit2why.so
>>>>>>>> @@ -103,7 +103,7 @@ $(SWIGCOUT): $(SWIGIF)
>>>>>>>> $(SWIGRUBYCOUT): $(SWIGRUBYIF)
>>>>>>>> $(SWIGRUBY) $^
>>>>>>>>
>>>>>>>> -swigify: $(SWIGIF) selinuxswig_python_exception.i
>>>>>>>> +swigify: $(SWIGIF)
>>>>>>>> $(SWIG) $<
>>>>>>>>
>>>>>>>> install: all
>>>>>>>> @@ -127,7 +127,7 @@ relabel:
>>>>>>>> /sbin/restorecon $(SHLIBDIR)/$(LIBSO)
>>>>>>>>
>>>>>>>> clean:
>>>>>>>> - -rm -f $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(SWIGLOBJ) $(SWIGSO)
>>>>>>>> $(TARGET) $(AUDIT2WHYSO) *.o *.lo *~ selinuxswig_python_exception.i
>>>>>>>> + -rm -f $(OBJS) $(LOBJS) $(LIBA) $(LIBSO) $(SWIGLOBJ) $(SWIGSO)
>>>>>>>> $(TARGET) $(AUDIT2WHYSO) *.o *.lo *~
>>>>>>>>
>>>>>>>> distclean: clean
>>>>>>>> rm -f $(GENERATED) $(SWIGFILES)
>>>>>>>> diff --git a/libselinux/src/exception.sh
>>>>>>>> b/libselinux/src/exception.sh
>>>>>>>> old mode 100644
>>>>>>>> new mode 100755
>>>>>>>> index b2a3799..c3e61a5
>>>>>>>> --- a/libselinux/src/exception.sh
>>>>>>>> +++ b/libselinux/src/exception.sh
>>>>>>>> @@ -15,7 +15,6 @@ echo "
>>>>>>>> ;;
>>>>>>>> esac
>>>>>>>> }
>>>>>>>> -echo '#include "../include/selinux/selinux.h"'>  temp.c
>>>>>>>> -gcc -c temp.c -aux-info temp.aux
>>>>>>>> -for i in `awk '/..\/include\/selinux\/selinux.h.*extern int/ {
>>>>>>>> print $6
>>>>>>>> }' temp.aux`; do except $i ; done
>>>>>>>> -rm -f temp.c temp.aux temp.o
>>>>>>>> +gcc -x c -c - -aux-info temp.aux<  ../include/selinux/selinux.h
>>>>>>>> +for i in `awk '/<stdin>.*extern int/ { print $6 }' temp.aux`; do
>>>>>>>> except
>>>>>>>> $i ; done
>>>>>>>> +rm -f -- temp.aux -.o
>>>>>>>>
>>>>>>>
>>>>>>> Merged in libselinux-2.0.87
>>>>>>
>>>>>> I have VERSION 2.0.86 in git?
>>>>>
>>>>> This seems to break make install-pywrap on the current selinux trunk:
>>>>> bash exception.sh>  selinuxswig_python_exception.i
>>>>> swig -Wall -python -o selinuxswig_wrap.c -outdir ./
>>>>> selinuxswig_python.i selinuxswig_python_exception.i
>>>>> swig error : Unrecognized option selinuxswig_python.i
>>>>> Use 'swig -help' for available options.
>>>>
>>>> This btw prevents use of Caleb's patches on Fedora 12.  If I can't build
>>>> and install the python modules from the selinux repo, then there is an
>>>> undefined dependency from the Fedora libsemanage-python module on the
>>>> upstream libsemanage (some symbol introduced in the Fedora patches to
>>>> libsemanage) and thus migrate.py is unable to import semanage and
>>>> aborts.
>>>
>>> Hmm...if I make swigify, all is well again.  But something seems wrong
>>> with the Makefile...

The make targets swigify and make install-pywrap should do the same
things during their swig step, however they don't. It appears that make
swigify does not include the second target to swig
(selinuxswig_python_exception.i), but install-pywrap does. On the other
hand, swig also does not accept multiple .i files so install-pywrap
fails.

As a result the exception wrappers are not installed.

[make swigify]

[ccase@fc12 libselinux]$ make distclean
<snip>
[ccase@fc12 libselinux]$ make swigify
<snip>
make -C src swigify
make[1]: Entering directory
`/home/ccase/projects/git/selinux-upstream/libselinux/src'
bash exception.sh > selinuxswig_python_exception.i
swig -Wall -python -o selinuxswig_wrap.c -outdir ./ selinuxswig_python.i
../include/selinux/avc.h:410: Warning(302): Identifier
'avc_cache_stats' redefined (ignored),
../include/selinux/avc.h:390: Warning(302): previous definition of
'avc_cache_stats'.
../include/selinux/selinux.h:142: Warning(451): Setting a const char *
variable may leak memory.
../include/selinux/selinux.h:345: Warning(451): Setting a const char *
variable may leak memory.
make[1]: Leaving directory
`/home/ccase/projects/git/selinux-upstream/libselinux/src'

[make install-pywrap]

[ccase@fc12 libselinux]$ make distclean
<snip>
[ccase@fc12 libselinux]$ make install-pywrap
<snip>
bash exception.sh > selinuxswig_python_exception.i
swig -Wall -python -o selinuxswig_wrap.c -outdir ./
selinuxswig_python.i selinuxswig_python_exception.i
swig error : Unrecognized option selinuxswig_python.i
Use 'swig -help' for available options.
make[1]: *** [selinuxswig_wrap.c] Error 1
make[1]: Leaving directory
`/home/ccase/projects/git/selinux-upstream/libselinux/src'
make: *** [install-pywrap] Error 2

Caleb


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux