Message ID | 20161105212403.30462-1-nicolas.iooss@m4x.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On 11/05/2016 05:24 PM, Nicolas Iooss wrote: > When compiling libselinux with CC=clang, "make pywrap" reports the > following message: > > bash exception.sh > selinuxswig_python_exception.i > clang-3.9: error: no such file or directory: 'temp.aux' > awk: fatal: cannot open file `temp.aux' for reading (No such file or > directory) > > This does not make the build fail as exception.sh returns an "OK" > status. Use "bash -e" with this script to make it return an error value. > > In order not to keep an empty selinuxswig_python_exception.i file after > a build fails (which would make a second run of "make pywrap" incorrectly > succeed), remove the file when exception.sh fails. > > As libsemanage uses the same code to build > semanageswig_python_exception.i, modify its Makefile too. > > By the way, on Linux clang does not seem to currently support -aux-info > so it cannot be used to craft selinuxswig_python_exception.i. Thanks, applied all three. Maybe we need to just always set CC to gcc in exception.sh? > > Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org> > --- > libselinux/src/Makefile | 2 +- > libsemanage/src/Makefile | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile > index b92fe1c8f5f9..24946cee8a01 100644 > --- a/libselinux/src/Makefile > +++ b/libselinux/src/Makefile > @@ -140,7 +140,7 @@ $(LIBPC): $(LIBPC).in ../VERSION > sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ > > selinuxswig_python_exception.i: ../include/selinux/selinux.h > - bash exception.sh > $@ > + bash -e exception.sh > $@ || (rm -f $@ ; false) > > $(AUDIT2WHYLOBJ): audit2why.c > $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $< > diff --git a/libsemanage/src/Makefile b/libsemanage/src/Makefile > index 55e3f469b0ba..cd29a8abf5ab 100644 > --- a/libsemanage/src/Makefile > +++ b/libsemanage/src/Makefile > @@ -98,7 +98,7 @@ $(LIBPC): $(LIBPC).in ../VERSION > sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ > > semanageswig_python_exception.i: ../include/semanage/semanage.h > - bash exception.sh > $@ > + bash -e exception.sh > $@ || (rm -f $@ ; false) > > conf-scan.c: conf-scan.l conf-parse.h > $(LEX) $(LFLAGS) -t $< > $@ >
On Nov 7, 2016 13:03, "Stephen Smalley" <sds@tycho.nsa.gov> wrote: > > On 11/05/2016 05:24 PM, Nicolas Iooss wrote: > > When compiling libselinux with CC=clang, "make pywrap" reports the > > following message: > > > > bash exception.sh > selinuxswig_python_exception.i > > clang-3.9: error: no such file or directory: 'temp.aux' > > awk: fatal: cannot open file `temp.aux' for reading (No such file or > > directory) > > > > This does not make the build fail as exception.sh returns an "OK" > > status. Use "bash -e" with this script to make it return an error value. > > > > In order not to keep an empty selinuxswig_python_exception.i file after > > a build fails (which would make a second run of "make pywrap" incorrectly > > succeed), remove the file when exception.sh fails. > > > > As libsemanage uses the same code to build > > semanageswig_python_exception.i, modify its Makefile too. > > > > By the way, on Linux clang does not seem to currently support -aux-info > > so it cannot be used to craft selinuxswig_python_exception.i. > > Thanks, applied all three. Maybe we need to just always set CC to gcc > in exception.sh? > What if you don't have GCC? We should support CC consistently and not set it under the hood IMHO. > > > > Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org> > > --- > > libselinux/src/Makefile | 2 +- > > libsemanage/src/Makefile | 2 +- > > 2 files changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile > > index b92fe1c8f5f9..24946cee8a01 100644 > > --- a/libselinux/src/Makefile > > +++ b/libselinux/src/Makefile > > @@ -140,7 +140,7 @@ $(LIBPC): $(LIBPC).in ../VERSION > > sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ > > > > selinuxswig_python_exception.i: ../include/selinux/selinux.h > > - bash exception.sh > $@ > > + bash -e exception.sh > $@ || (rm -f $@ ; false) > > > > $(AUDIT2WHYLOBJ): audit2why.c > > $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $< > > diff --git a/libsemanage/src/Makefile b/libsemanage/src/Makefile > > index 55e3f469b0ba..cd29a8abf5ab 100644 > > --- a/libsemanage/src/Makefile > > +++ b/libsemanage/src/Makefile > > @@ -98,7 +98,7 @@ $(LIBPC): $(LIBPC).in ../VERSION > > sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ > > > > semanageswig_python_exception.i: ../include/semanage/semanage.h > > - bash exception.sh > $@ > > + bash -e exception.sh > $@ || (rm -f $@ ; false) > > > > conf-scan.c: conf-scan.l conf-parse.h > > $(LEX) $(LFLAGS) -t $< > $@ > > > > _______________________________________________ > Selinux mailing list > Selinux@tycho.nsa.gov > To unsubscribe, send email to Selinux-leave@tycho.nsa.gov. > To get help, send an email containing "help" to Selinux-request@tycho.nsa.gov.
On 07/11/16 22:19, William Roberts wrote: > On Nov 7, 2016 13:03, "Stephen Smalley" <sds@tycho.nsa.gov > <mailto:sds@tycho.nsa.gov>> wrote: >> >> On 11/05/2016 05:24 PM, Nicolas Iooss wrote: >> > When compiling libselinux with CC=clang, "make pywrap" reports the >> > following message: >> > >> > bash exception.sh > selinuxswig_python_exception.i >> > clang-3.9: error: no such file or directory: 'temp.aux' >> > awk: fatal: cannot open file `temp.aux' for reading (No such file or >> > directory) >> > >> > This does not make the build fail as exception.sh returns an "OK" >> > status. Use "bash -e" with this script to make it return an error value. >> > >> > In order not to keep an empty selinuxswig_python_exception.i file after >> > a build fails (which would make a second run of "make pywrap" > incorrectly >> > succeed), remove the file when exception.sh fails. >> > >> > As libsemanage uses the same code to build >> > semanageswig_python_exception.i, modify its Makefile too. >> > >> > By the way, on Linux clang does not seem to currently support -aux-info >> > so it cannot be used to craft selinuxswig_python_exception.i. >> >> Thanks, applied all three. Maybe we need to just always set CC to gcc >> in exception.sh? >> > > What if you don't have GCC? We should support CC consistently and not > set it under the hood IMHO. There are also valid scenarios where exception.sh works without CC being gcc, for example when cross-compiling with CC=arm-....-gcc, or building with wrappers like CC=musl-gcc, etc. What about using gcc as a fallback if $CC did not work? i.e. something like this in exception.sh: if ! ${CC:-gcc} -x c -c -I../include - -aux-info .... ; then # clang does not support -aux-info so fall back to gcc gcc -x c -c -I../include - -aux-info .... fi Nicolas
On Mon, Nov 7, 2016 at 2:07 PM, Nicolas Iooss <nicolas.iooss@m4x.org> wrote: > On 07/11/16 22:19, William Roberts wrote: >> On Nov 7, 2016 13:03, "Stephen Smalley" <sds@tycho.nsa.gov >> <mailto:sds@tycho.nsa.gov>> wrote: >>> >>> On 11/05/2016 05:24 PM, Nicolas Iooss wrote: >>> > When compiling libselinux with CC=clang, "make pywrap" reports the >>> > following message: >>> > >>> > bash exception.sh > selinuxswig_python_exception.i >>> > clang-3.9: error: no such file or directory: 'temp.aux' >>> > awk: fatal: cannot open file `temp.aux' for reading (No such file or >>> > directory) >>> > >>> > This does not make the build fail as exception.sh returns an "OK" >>> > status. Use "bash -e" with this script to make it return an error value. >>> > >>> > In order not to keep an empty selinuxswig_python_exception.i file after >>> > a build fails (which would make a second run of "make pywrap" >> incorrectly >>> > succeed), remove the file when exception.sh fails. >>> > >>> > As libsemanage uses the same code to build >>> > semanageswig_python_exception.i, modify its Makefile too. >>> > >>> > By the way, on Linux clang does not seem to currently support -aux-info >>> > so it cannot be used to craft selinuxswig_python_exception.i. >>> >>> Thanks, applied all three. Maybe we need to just always set CC to gcc >>> in exception.sh? >>> >> >> What if you don't have GCC? We should support CC consistently and not >> set it under the hood IMHO. > > There are also valid scenarios where exception.sh works without CC being > gcc, for example when cross-compiling with CC=arm-....-gcc, or building > with wrappers like CC=musl-gcc, etc. > What about using gcc as a fallback if $CC did not work? i.e. something > like this in exception.sh: > > if ! ${CC:-gcc} -x c -c -I../include - -aux-info .... ; then > # clang does not support -aux-info so fall back to gcc > gcc -x c -c -I../include - -aux-info .... > fi > > Nicolas Looking at exception.sh it appears that it takes in selinux.h and produces custom exception handlers for the swig interface. We could potentially do this without -aux-info and just write the swig interface by hand.
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile index b92fe1c8f5f9..24946cee8a01 100644 --- a/libselinux/src/Makefile +++ b/libselinux/src/Makefile @@ -140,7 +140,7 @@ $(LIBPC): $(LIBPC).in ../VERSION sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ selinuxswig_python_exception.i: ../include/selinux/selinux.h - bash exception.sh > $@ + bash -e exception.sh > $@ || (rm -f $@ ; false) $(AUDIT2WHYLOBJ): audit2why.c $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $< diff --git a/libsemanage/src/Makefile b/libsemanage/src/Makefile index 55e3f469b0ba..cd29a8abf5ab 100644 --- a/libsemanage/src/Makefile +++ b/libsemanage/src/Makefile @@ -98,7 +98,7 @@ $(LIBPC): $(LIBPC).in ../VERSION sed -e 's/@VERSION@/$(VERSION)/; s:@prefix@:$(PREFIX):; s:@libdir@:$(LIBBASE):; s:@includedir@:$(INCLUDEDIR):' < $< > $@ semanageswig_python_exception.i: ../include/semanage/semanage.h - bash exception.sh > $@ + bash -e exception.sh > $@ || (rm -f $@ ; false) conf-scan.c: conf-scan.l conf-parse.h $(LEX) $(LFLAGS) -t $< > $@
When compiling libselinux with CC=clang, "make pywrap" reports the following message: bash exception.sh > selinuxswig_python_exception.i clang-3.9: error: no such file or directory: 'temp.aux' awk: fatal: cannot open file `temp.aux' for reading (No such file or directory) This does not make the build fail as exception.sh returns an "OK" status. Use "bash -e" with this script to make it return an error value. In order not to keep an empty selinuxswig_python_exception.i file after a build fails (which would make a second run of "make pywrap" incorrectly succeed), remove the file when exception.sh fails. As libsemanage uses the same code to build semanageswig_python_exception.i, modify its Makefile too. By the way, on Linux clang does not seem to currently support -aux-info so it cannot be used to craft selinuxswig_python_exception.i. Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org> --- libselinux/src/Makefile | 2 +- libsemanage/src/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)