All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] Re-link programs after libsepol.a is updated
@ 2017-01-14 14:38 Nicolas Iooss
  2017-01-17 21:48 ` Stephen Smalley
  0 siblings, 1 reply; 4+ messages in thread
From: Nicolas Iooss @ 2017-01-14 14:38 UTC (permalink / raw)
  To: selinux

After libsepol is modified (for example while developing new features or
fixing bugs), running "make install" in the top-level directory does not
update the programs which use libsepol.a. Add this static library to the
target dependencies in order to force their updates. This makes "make"
use libsepol.a in the linking command without using LDLIBS.

While at it, copy what commit 14d706434846 ("libselinux: Allow
overriding libsepol.a location during build") introduced in libselinux
Makefile by using a new LIBSEPOLA variable in all Makefiles.

Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
---
 checkpolicy/Makefile                  | 7 +++----
 checkpolicy/test/Makefile             | 7 +++----
 libselinux/src/Makefile               | 4 ++--
 mcstrans/utils/Makefile               | 7 +++++--
 python/audit2allow/Makefile           | 4 ++--
 semodule-utils/semodule_deps/Makefile | 4 ++--
 6 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/checkpolicy/Makefile b/checkpolicy/Makefile
index 875cf008cae0..98fa38017583 100644
--- a/checkpolicy/Makefile
+++ b/checkpolicy/Makefile
@@ -6,6 +6,7 @@ BINDIR ?= $(PREFIX)/bin
 MANDIR ?= $(PREFIX)/share/man
 LIBDIR ?= $(PREFIX)/lib
 INCLUDEDIR ?= $(PREFIX)/include
+LIBSEPOLA ?= $(LIBDIR)/libsepol.a
 TARGETS = checkpolicy checkmodule
 
 LEX = flex
@@ -20,16 +21,14 @@ CHECKOBJS = y.tab.o lex.yy.o queue.o module_compiler.o parse_util.o \
 CHECKPOLOBJS = $(CHECKOBJS) checkpolicy.o
 CHECKMODOBJS = $(CHECKOBJS) checkmodule.o
 
-LDLIBS=$(LIBDIR)/libsepol.a
-
 GENERATED=lex.yy.c y.tab.c y.tab.h
 
 all:  $(TARGETS)
 	$(MAKE) -C test
 
-checkpolicy: $(CHECKPOLOBJS)
+checkpolicy: $(CHECKPOLOBJS) $(LIBSEPOLA)
 
-checkmodule: $(CHECKMODOBJS)
+checkmodule: $(CHECKMODOBJS) $(LIBSEPOLA)
 
 %.o: %.c 
 	$(CC) $(CFLAGS) -o $@ -c $<
diff --git a/checkpolicy/test/Makefile b/checkpolicy/test/Makefile
index e7bd717a7c9a..54d07f81a9c7 100644
--- a/checkpolicy/test/Makefile
+++ b/checkpolicy/test/Makefile
@@ -5,17 +5,16 @@ PREFIX ?= $(DESTDIR)/usr
 BINDIR=$(PREFIX)/bin
 LIBDIR ?= $(PREFIX)/lib
 INCLUDEDIR ?= $(PREFIX)/include
+LIBSEPOLA ?= $(LIBDIR)/libsepol.a
 
 CFLAGS ?= -g -Wall -W -Werror -O2 -pipe
 override CFLAGS += -I$(INCLUDEDIR)
 
-LDLIBS=$(LIBDIR)/libsepol.a -L$(LIBDIR)
-
 all: dispol dismod
 
-dispol: dispol.o
+dispol: dispol.o $(LIBSEPOLA)
 
-dismod: dismod.o
+dismod: dismod.o $(LIBSEPOLA)
 
 clean:
 	-rm -f dispol dismod *.o 
diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
index d17792c13350..5640a57d2768 100644
--- a/libselinux/src/Makefile
+++ b/libselinux/src/Makefile
@@ -155,8 +155,8 @@ selinuxswig_python_exception.i: ../include/selinux/selinux.h
 $(AUDIT2WHYLOBJ): audit2why.c
 	$(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC -DSHARED -c -o $@ $<
 
-$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ)
-	$(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux $(LIBSEPOLA) $(PYLIBS) -L$(LIBDIR)
+$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA)
+	$(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux $(PYLIBS) -L$(LIBDIR)
 
 %.o:  %.c policy.h
 	$(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $<
diff --git a/mcstrans/utils/Makefile b/mcstrans/utils/Makefile
index a0f93f548557..043d001d639c 100644
--- a/mcstrans/utils/Makefile
+++ b/mcstrans/utils/Makefile
@@ -2,14 +2,17 @@
 PREFIX ?= $(DESTDIR)/usr
 LIBDIR ?= $(PREFIX)/lib
 BINDIR ?= $(PREFIX)/sbin
+LIBSEPOLA ?= $(LIBDIR)/libsepol.a
 
 CFLAGS ?= -Wall
 override CFLAGS += -I../src -I$(PREFIX)/include -D_GNU_SOURCE
-LDLIBS += -L$(LIBDIR) ../src/mcstrans.o ../src/mls_level.o -lselinux -lpcre $(LIBDIR)/libsepol.a
+LDLIBS += -L$(LIBDIR) -lselinux -lpcre
 
 TARGETS=$(patsubst %.c,%,$(wildcard *.c))
 
-all: $(TARGETS) 
+all: $(TARGETS)
+
+$(TARGETS): ../src/mcstrans.o ../src/mls_level.o $(LIBSEPOLA)
 
 install: all
 	-mkdir -p $(BINDIR)
diff --git a/python/audit2allow/Makefile b/python/audit2allow/Makefile
index 16b5cc8dcb59..4f03e956125a 100644
--- a/python/audit2allow/Makefile
+++ b/python/audit2allow/Makefile
@@ -7,14 +7,14 @@ LIBDIR ?= $(PREFIX)/lib
 MANDIR ?= $(PREFIX)/share/man
 LOCALEDIR ?= /usr/share/locale
 INCLUDEDIR ?= $(PREFIX)/include
+LIBSEPOLA ?= $(LIBDIR)/libsepol.a
 
 CFLAGS ?= -Werror -Wall -W
 override CFLAGS += -I$(INCLUDEDIR)
-LDLIBS = $(LIBDIR)/libsepol.a
 
 all: audit2why sepolgen-ifgen-attr-helper
 
-sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o
+sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o $(LIBSEPOLA)
 
 audit2why:
 	ln -sf audit2allow audit2why
diff --git a/semodule-utils/semodule_deps/Makefile b/semodule-utils/semodule_deps/Makefile
index 28d667e9f4b8..7d8490f2f1a8 100644
--- a/semodule-utils/semodule_deps/Makefile
+++ b/semodule-utils/semodule_deps/Makefile
@@ -4,14 +4,14 @@ INCLUDEDIR ?= $(PREFIX)/include
 BINDIR ?= $(PREFIX)/bin
 LIBDIR ?= $(PREFIX)/lib
 MANDIR ?= $(PREFIX)/share/man
+LIBSEPOLA ?= $(LIBDIR)/libsepol.a
 
 CFLAGS ?= -Werror -Wall -W
 override CFLAGS += -I$(INCLUDEDIR)
-LDLIBS = $(LIBDIR)/libsepol.a
 
 all: semodule_deps
 
-semodule_deps:  semodule_deps.o 
+semodule_deps:  semodule_deps.o $(LIBSEPOLA)
 
 install: all
 	-mkdir -p $(BINDIR)
-- 
2.11.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] Re-link programs after libsepol.a is updated
  2017-01-14 14:38 [PATCH 1/1] Re-link programs after libsepol.a is updated Nicolas Iooss
@ 2017-01-17 21:48 ` Stephen Smalley
  2017-01-17 22:01   ` Nicolas Iooss
  0 siblings, 1 reply; 4+ messages in thread
From: Stephen Smalley @ 2017-01-17 21:48 UTC (permalink / raw)
  To: Nicolas Iooss, selinux

On Sat, 2017-01-14 at 15:38 +0100, Nicolas Iooss wrote:
> After libsepol is modified (for example while developing new features
> or
> fixing bugs), running "make install" in the top-level directory does
> not
> update the programs which use libsepol.a. Add this static library to
> the
> target dependencies in order to force their updates. This makes
> "make"
> use libsepol.a in the linking command without using LDLIBS.
> 
> While at it, copy what commit 14d706434846 ("libselinux: Allow
> overriding libsepol.a location during build") introduced in
> libselinux
> Makefile by using a new LIBSEPOLA variable in all Makefiles.
> 
> Signed-off-by: Nicolas Iooss <nicolas.iooss@m4x.org>
> ---
>  checkpolicy/Makefile                  | 7 +++----
>  checkpolicy/test/Makefile             | 7 +++----
>  libselinux/src/Makefile               | 4 ++--
>  mcstrans/utils/Makefile               | 7 +++++--
>  python/audit2allow/Makefile           | 4 ++--
>  semodule-utils/semodule_deps/Makefile | 4 ++--
>  6 files changed, 17 insertions(+), 16 deletions(-)
> 
> diff --git a/checkpolicy/Makefile b/checkpolicy/Makefile
> index 875cf008cae0..98fa38017583 100644
> --- a/checkpolicy/Makefile
> +++ b/checkpolicy/Makefile
> @@ -6,6 +6,7 @@ BINDIR ?= $(PREFIX)/bin
>  MANDIR ?= $(PREFIX)/share/man
>  LIBDIR ?= $(PREFIX)/lib
>  INCLUDEDIR ?= $(PREFIX)/include
> +LIBSEPOLA ?= $(LIBDIR)/libsepol.a
>  TARGETS = checkpolicy checkmodule
>  
>  LEX = flex
> @@ -20,16 +21,14 @@ CHECKOBJS = y.tab.o lex.yy.o queue.o
> module_compiler.o parse_util.o \
>  CHECKPOLOBJS = $(CHECKOBJS) checkpolicy.o
>  CHECKMODOBJS = $(CHECKOBJS) checkmodule.o
>  
> -LDLIBS=$(LIBDIR)/libsepol.a
> -
>  GENERATED=lex.yy.c y.tab.c y.tab.h
>  
>  all:  $(TARGETS)
>  	$(MAKE) -C test
>  
> -checkpolicy: $(CHECKPOLOBJS)
> +checkpolicy: $(CHECKPOLOBJS) $(LIBSEPOLA)
>  
> -checkmodule: $(CHECKMODOBJS)
> +checkmodule: $(CHECKMODOBJS) $(LIBSEPOLA)
>  
>  %.o: %.c 
>  	$(CC) $(CFLAGS) -o $@ -c $<
> diff --git a/checkpolicy/test/Makefile b/checkpolicy/test/Makefile
> index e7bd717a7c9a..54d07f81a9c7 100644
> --- a/checkpolicy/test/Makefile
> +++ b/checkpolicy/test/Makefile
> @@ -5,17 +5,16 @@ PREFIX ?= $(DESTDIR)/usr
>  BINDIR=$(PREFIX)/bin
>  LIBDIR ?= $(PREFIX)/lib
>  INCLUDEDIR ?= $(PREFIX)/include
> +LIBSEPOLA ?= $(LIBDIR)/libsepol.a
>  
>  CFLAGS ?= -g -Wall -W -Werror -O2 -pipe
>  override CFLAGS += -I$(INCLUDEDIR)
>  
> -LDLIBS=$(LIBDIR)/libsepol.a -L$(LIBDIR)
> -
>  all: dispol dismod
>  
> -dispol: dispol.o
> +dispol: dispol.o $(LIBSEPOLA)
>  
> -dismod: dismod.o
> +dismod: dismod.o $(LIBSEPOLA)
>  
>  clean:
>  	-rm -f dispol dismod *.o 
> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> index d17792c13350..5640a57d2768 100644
> --- a/libselinux/src/Makefile
> +++ b/libselinux/src/Makefile
> @@ -155,8 +155,8 @@ selinuxswig_python_exception.i:
> ../include/selinux/selinux.h
>  $(AUDIT2WHYLOBJ): audit2why.c
>  	$(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC
> -DSHARED -c -o $@ $<
>  
> -$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ)
> -	$(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux
> $(LIBSEPOLA) $(PYLIBS) -L$(LIBDIR)
> +$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA)
> +	$(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux
> $(PYLIBS) -L$(LIBDIR)

Why did you change this?

>  
>  %.o:  %.c policy.h
>  	$(CC) $(CFLAGS) $(TLSFLAGS) -c -o $@ $<
> diff --git a/mcstrans/utils/Makefile b/mcstrans/utils/Makefile
> index a0f93f548557..043d001d639c 100644
> --- a/mcstrans/utils/Makefile
> +++ b/mcstrans/utils/Makefile
> @@ -2,14 +2,17 @@
>  PREFIX ?= $(DESTDIR)/usr
>  LIBDIR ?= $(PREFIX)/lib
>  BINDIR ?= $(PREFIX)/sbin
> +LIBSEPOLA ?= $(LIBDIR)/libsepol.a
>  
>  CFLAGS ?= -Wall
>  override CFLAGS += -I../src -I$(PREFIX)/include -D_GNU_SOURCE
> -LDLIBS += -L$(LIBDIR) ../src/mcstrans.o ../src/mls_level.o -lselinux
> -lpcre $(LIBDIR)/libsepol.a
> +LDLIBS += -L$(LIBDIR) -lselinux -lpcre
>  
>  TARGETS=$(patsubst %.c,%,$(wildcard *.c))
>  
> -all: $(TARGETS) 
> +all: $(TARGETS)
> +
> +$(TARGETS): ../src/mcstrans.o ../src/mls_level.o $(LIBSEPOLA)
>  
>  install: all
>  	-mkdir -p $(BINDIR)
> diff --git a/python/audit2allow/Makefile
> b/python/audit2allow/Makefile
> index 16b5cc8dcb59..4f03e956125a 100644
> --- a/python/audit2allow/Makefile
> +++ b/python/audit2allow/Makefile
> @@ -7,14 +7,14 @@ LIBDIR ?= $(PREFIX)/lib
>  MANDIR ?= $(PREFIX)/share/man
>  LOCALEDIR ?= /usr/share/locale
>  INCLUDEDIR ?= $(PREFIX)/include
> +LIBSEPOLA ?= $(LIBDIR)/libsepol.a
>  
>  CFLAGS ?= -Werror -Wall -W
>  override CFLAGS += -I$(INCLUDEDIR)
> -LDLIBS = $(LIBDIR)/libsepol.a
>  
>  all: audit2why sepolgen-ifgen-attr-helper
>  
> -sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o
> +sepolgen-ifgen-attr-helper: sepolgen-ifgen-attr-helper.o
> $(LIBSEPOLA)
>  
>  audit2why:
>  	ln -sf audit2allow audit2why
> diff --git a/semodule-utils/semodule_deps/Makefile b/semodule-
> utils/semodule_deps/Makefile
> index 28d667e9f4b8..7d8490f2f1a8 100644
> --- a/semodule-utils/semodule_deps/Makefile
> +++ b/semodule-utils/semodule_deps/Makefile
> @@ -4,14 +4,14 @@ INCLUDEDIR ?= $(PREFIX)/include
>  BINDIR ?= $(PREFIX)/bin
>  LIBDIR ?= $(PREFIX)/lib
>  MANDIR ?= $(PREFIX)/share/man
> +LIBSEPOLA ?= $(LIBDIR)/libsepol.a
>  
>  CFLAGS ?= -Werror -Wall -W
>  override CFLAGS += -I$(INCLUDEDIR)
> -LDLIBS = $(LIBDIR)/libsepol.a
>  
>  all: semodule_deps
>  
> -semodule_deps:  semodule_deps.o 
> +semodule_deps:  semodule_deps.o $(LIBSEPOLA)
>  
>  install: all
>  	-mkdir -p $(BINDIR)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] Re-link programs after libsepol.a is updated
  2017-01-17 21:48 ` Stephen Smalley
@ 2017-01-17 22:01   ` Nicolas Iooss
  2017-01-18 21:48     ` Stephen Smalley
  0 siblings, 1 reply; 4+ messages in thread
From: Nicolas Iooss @ 2017-01-17 22:01 UTC (permalink / raw)
  To: Stephen Smalley; +Cc: selinux

[-- Attachment #1: Type: text/plain, Size: 1834 bytes --]

On Tue, Jan 17, 2017 at 10:48 PM, Stephen Smalley <sds@tycho.nsa.gov> wrote:

> On Sat, 2017-01-14 at 15:38 +0100, Nicolas Iooss wrote:
> > After libsepol is modified (for example while developing new features
> > or
> > fixing bugs), running "make install" in the top-level directory does
> > not
> > update the programs which use libsepol.a. Add this static library to
> > the
> > target dependencies in order to force their updates. This makes
> > "make"
> > use libsepol.a in the linking command without using LDLIBS.
> >
> > While at it, copy what commit 14d706434846 ("libselinux: Allow
> > overriding libsepol.a location during build") introduced in
> > libselinux
> > Makefile by using a new LIBSEPOLA variable in all Makefiles.
>

> diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> > index d17792c13350..5640a57d2768 100644
> > --- a/libselinux/src/Makefile
> > +++ b/libselinux/src/Makefile
> > @@ -155,8 +155,8 @@ selinuxswig_python_exception.i:
> > ../include/selinux/selinux.h
> >  $(AUDIT2WHYLOBJ): audit2why.c
> >       $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC
> > -DSHARED -c -o $@ $<
> >
> > -$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ)
> > -     $(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux
> > $(LIBSEPOLA) $(PYLIBS) -L$(LIBDIR)
> > +$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA)
> > +     $(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux
> > $(PYLIBS) -L$(LIBDIR)
>
> Why did you change this?


When libsepol.a is updated, $(AUDIT2WHYSO) (which is a Python extension,
named something like python3audit2why.so and installed as module
"selinux.audit2why") was not rebuilt. Adding $(LIBSEPOLA) to the
dependencies (in order to fix this) makes libsepol.a appear in the command
line through $^ so I removed $(LIBSEPOLA) from the "$(CC)..." line.

Thanks for your review,
Nicolas

[-- Attachment #2: Type: text/html, Size: 2721 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/1] Re-link programs after libsepol.a is updated
  2017-01-17 22:01   ` Nicolas Iooss
@ 2017-01-18 21:48     ` Stephen Smalley
  0 siblings, 0 replies; 4+ messages in thread
From: Stephen Smalley @ 2017-01-18 21:48 UTC (permalink / raw)
  To: Nicolas Iooss; +Cc: selinux

On Tue, 2017-01-17 at 23:01 +0100, Nicolas Iooss wrote:
> On Tue, Jan 17, 2017 at 10:48 PM, Stephen Smalley <sds@tycho.nsa.gov>
> wrote:
> > On Sat, 2017-01-14 at 15:38 +0100, Nicolas Iooss wrote:
> > > After libsepol is modified (for example while developing new
> > features
> > > or
> > > fixing bugs), running "make install" in the top-level directory
> > does
> > > not
> > > update the programs which use libsepol.a. Add this static library
> > to
> > > the
> > > target dependencies in order to force their updates. This makes
> > > "make"
> > > use libsepol.a in the linking command without using LDLIBS.
> > >
> > > While at it, copy what commit 14d706434846 ("libselinux: Allow
> > > overriding libsepol.a location during build") introduced in
> > > libselinux
> > > Makefile by using a new LIBSEPOLA variable in all Makefiles.
> > 
> 
> > > diff --git a/libselinux/src/Makefile b/libselinux/src/Makefile
> > > index d17792c13350..5640a57d2768 100644
> > > --- a/libselinux/src/Makefile
> > > +++ b/libselinux/src/Makefile
> > > @@ -155,8 +155,8 @@ selinuxswig_python_exception.i:
> > > ../include/selinux/selinux.h
> > >  $(AUDIT2WHYLOBJ): audit2why.c
> > >       $(CC) $(filter-out -Werror, $(CFLAGS)) $(PYINC) -fPIC
> > > -DSHARED -c -o $@ $<
> > >  
> > > -$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ)
> > > -     $(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux
> > > $(LIBSEPOLA) $(PYLIBS) -L$(LIBDIR)
> > > +$(AUDIT2WHYSO): $(AUDIT2WHYLOBJ) $(LIBSEPOLA)
> > > +     $(CC) $(CFLAGS) -shared -o $@ $^ -L. $(LDFLAGS) -lselinux
> > > $(PYLIBS) -L$(LIBDIR)
> > 
> > Why did you change this?
> 
> When libsepol.a is updated, $(AUDIT2WHYSO) (which is a Python
> extension, named something like python3audit2why.so and installed as
> module "selinux.audit2why") was not rebuilt. Adding $(LIBSEPOLA) to
> the dependencies (in order to fix this) makes libsepol.a appear in
> the command line through $^ so I removed $(LIBSEPOLA) from the
> "$(CC)..." line.

Ok, thanks.  Applied.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-01-18 21:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-14 14:38 [PATCH 1/1] Re-link programs after libsepol.a is updated Nicolas Iooss
2017-01-17 21:48 ` Stephen Smalley
2017-01-17 22:01   ` Nicolas Iooss
2017-01-18 21:48     ` Stephen Smalley

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.