Message ID | 20170114143825.4592-1-nicolas.iooss@m4x.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
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)
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
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.
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)
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(-)