* [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.