Message ID | 20230531011548.1133249-1-yamato@redhat.com (mailing list archive) |
---|---|
State | Rejected |
Delegated to: | Petr Lautrbach |
Headers | show |
Series | Makefile: expand ~ in DESTDIR | expand |
Masatake YAMATO <yamato@redhat.com> writes: > Though instructed as > > DESTDIR=~/obj ./scripts/env_use_destdir make test > > in README.md, compiling policy_define.c was failed with following errors: > > make[1]: Entering directory '/home/yamato/var/selinux/checkpolicy' > cc -O2 -Werror -Wall -Wextra -Wfloat-equal -Wformat=2 -Winit-self \ > -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes \ > -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes \ > -Wundef -Wunused -Wwrite-strings -fno-common -I~/obj/usr/include \ > -o policy_define.o -c policy_define.c > policy_define.c: In function ‘define_te_avtab_xperms_helper’: > policy_define.c:2083:61: error: ‘RULE_NOTSELF’ undeclared (first use in this function); did you mean ‘RULE_SELF’? > 2083 | avrule->flags |= (add ? RULE_SELF : RULE_NOTSELF); > | ^~~~~~~~~~~~ > | RULE_SELF > > because cc cannot find the directory ~/obj/usr/include passed via -I option. > > cc doesn't expand "~". > > Signed-off-by: Masatake YAMATO <yamato@redhat.com> It doesn't work when DESTDIR does not exist - If no existing file name matches a pattern, then that pattern is omitted from the output of the wildcard function, see https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html Petr > --- > Makefile | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index 2ffba8e9..053c6d3d 100644 > --- a/Makefile > +++ b/Makefile > @@ -26,11 +26,11 @@ else > endif > > ifneq ($(DESTDIR),) > - LIBDIR ?= $(DESTDIR)$(PREFIX)/lib > + LIBDIR ?= $(wildcard $(DESTDIR))$(PREFIX)/lib > LIBSEPOLA ?= $(LIBDIR)/libsepol.a > > - CFLAGS += -I$(DESTDIR)$(PREFIX)/include > - LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR) > + CFLAGS += -I$(wildcard $(DESTDIR))$(PREFIX)/include > + LDFLAGS += -L$(wildcard $(DESTDIR))$(PREFIX)/lib -L$(LIBDIR) > export CFLAGS > export LDFLAGS > export LIBSEPOLA > -- > 2.40.1
On Fri, 2 Jun 2023 at 14:05, Petr Lautrbach <plautrba@redhat.com> wrote: > > Masatake YAMATO <yamato@redhat.com> writes: > > > Though instructed as > > > > DESTDIR=~/obj ./scripts/env_use_destdir make test Is that a valid use case of the script `env_use_destdir`? I thought the script is just for executing binaries depending on the shared libraries in DESTDIR (e.g. `DESTDIR=~/obj ./scripts/env_use_destdir seinfo`), not for make invocations. > > > > in README.md, compiling policy_define.c was failed with following errors: > > > > make[1]: Entering directory '/home/yamato/var/selinux/checkpolicy' > > cc -O2 -Werror -Wall -Wextra -Wfloat-equal -Wformat=2 -Winit-self \ > > -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes \ > > -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes \ > > -Wundef -Wunused -Wwrite-strings -fno-common -I~/obj/usr/include \ > > -o policy_define.o -c policy_define.c > > policy_define.c: In function ‘define_te_avtab_xperms_helper’: > > policy_define.c:2083:61: error: ‘RULE_NOTSELF’ undeclared (first use in this function); did you mean ‘RULE_SELF’? > > 2083 | avrule->flags |= (add ? RULE_SELF : RULE_NOTSELF); > > | ^~~~~~~~~~~~ > > | RULE_SELF > > > > because cc cannot find the directory ~/obj/usr/include passed via -I option. > > > > cc doesn't expand "~". > > > > Signed-off-by: Masatake YAMATO <yamato@redhat.com> > > It doesn't work when DESTDIR does not exist - If no existing file name > matches a pattern, then that pattern is omitted from the output of the > wildcard function, see > https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html > > > Petr > > > --- > > Makefile | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 2ffba8e9..053c6d3d 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -26,11 +26,11 @@ else > > endif > > > > ifneq ($(DESTDIR),) > > - LIBDIR ?= $(DESTDIR)$(PREFIX)/lib > > + LIBDIR ?= $(wildcard $(DESTDIR))$(PREFIX)/lib > > LIBSEPOLA ?= $(LIBDIR)/libsepol.a > > > > - CFLAGS += -I$(DESTDIR)$(PREFIX)/include > > - LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR) > > + CFLAGS += -I$(wildcard $(DESTDIR))$(PREFIX)/include > > + LDFLAGS += -L$(wildcard $(DESTDIR))$(PREFIX)/lib -L$(LIBDIR) > > export CFLAGS > > export LDFLAGS > > export LIBSEPOLA > > -- > > 2.40.1 >
Christian Göttsche <cgzones@googlemail.com> writes: > On Fri, 2 Jun 2023 at 14:05, Petr Lautrbach <plautrba@redhat.com> wrote: >> >> Masatake YAMATO <yamato@redhat.com> writes: >> >> > Though instructed as >> > >> > DESTDIR=~/obj ./scripts/env_use_destdir make test > > Is that a valid use case of the script `env_use_destdir`? > I thought the script is just for executing binaries depending on the > shared libraries in DESTDIR (e.g. `DESTDIR=~/obj > ./scripts/env_use_destdir seinfo`), not for make invocations. `make` is just another binary to run in pre-set environment. Especially for `make test` it is important to use PATH and LD_LIBRARY_PATH pointing to the new built binaries. I personally use `source ./scripts/env_use_destdir` also for manual testing. Petr >> > >> > in README.md, compiling policy_define.c was failed with following errors: >> > >> > make[1]: Entering directory '/home/yamato/var/selinux/checkpolicy' >> > cc -O2 -Werror -Wall -Wextra -Wfloat-equal -Wformat=2 -Winit-self \ >> > -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes \ >> > -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes \ >> > -Wundef -Wunused -Wwrite-strings -fno-common -I~/obj/usr/include \ >> > -o policy_define.o -c policy_define.c >> > policy_define.c: In function ‘define_te_avtab_xperms_helper’: >> > policy_define.c:2083:61: error: ‘RULE_NOTSELF’ undeclared (first use in this function); did you mean ‘RULE_SELF’? >> > 2083 | avrule->flags |= (add ? RULE_SELF : RULE_NOTSELF); >> > | ^~~~~~~~~~~~ >> > | RULE_SELF >> > >> > because cc cannot find the directory ~/obj/usr/include passed via -I option. >> > >> > cc doesn't expand "~". >> > >> > Signed-off-by: Masatake YAMATO <yamato@redhat.com> >> >> It doesn't work when DESTDIR does not exist - If no existing file name >> matches a pattern, then that pattern is omitted from the output of the >> wildcard function, see >> https://www.gnu.org/software/make/manual/html_node/Wildcard-Function.html >> >> >> Petr >> >> > --- >> > Makefile | 6 +++--- >> > 1 file changed, 3 insertions(+), 3 deletions(-) >> > >> > diff --git a/Makefile b/Makefile >> > index 2ffba8e9..053c6d3d 100644 >> > --- a/Makefile >> > +++ b/Makefile >> > @@ -26,11 +26,11 @@ else >> > endif >> > >> > ifneq ($(DESTDIR),) >> > - LIBDIR ?= $(DESTDIR)$(PREFIX)/lib >> > + LIBDIR ?= $(wildcard $(DESTDIR))$(PREFIX)/lib >> > LIBSEPOLA ?= $(LIBDIR)/libsepol.a >> > >> > - CFLAGS += -I$(DESTDIR)$(PREFIX)/include >> > - LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR) >> > + CFLAGS += -I$(wildcard $(DESTDIR))$(PREFIX)/include >> > + LDFLAGS += -L$(wildcard $(DESTDIR))$(PREFIX)/lib -L$(LIBDIR) >> > export CFLAGS >> > export LDFLAGS >> > export LIBSEPOLA >> > -- >> > 2.40.1 >>
I would like to withdraw my patch. It seems that I skipped install target before running the test target. So I got the error. Sorry for making noise. Masatake YAMATO > Though instructed as > > DESTDIR=~/obj ./scripts/env_use_destdir make test > > in README.md, compiling policy_define.c was failed with following errors: > > make[1]: Entering directory '/home/yamato/var/selinux/checkpolicy' > cc -O2 -Werror -Wall -Wextra -Wfloat-equal -Wformat=2 -Winit-self \ > -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes \ > -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes \ > -Wundef -Wunused -Wwrite-strings -fno-common -I~/obj/usr/include \ > -o policy_define.o -c policy_define.c > policy_define.c: In function ‘define_te_avtab_xperms_helper’: > policy_define.c:2083:61: error: ‘RULE_NOTSELF’ undeclared (first use in this function); did you mean ‘RULE_SELF’? > 2083 | avrule->flags |= (add ? RULE_SELF : RULE_NOTSELF); > | ^~~~~~~~~~~~ > | RULE_SELF > > because cc cannot find the directory ~/obj/usr/include passed via -I option. > > cc doesn't expand "~". > > Signed-off-by: Masatake YAMATO <yamato@redhat.com> > --- > Makefile | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/Makefile b/Makefile > index 2ffba8e9..053c6d3d 100644 > --- a/Makefile > +++ b/Makefile > @@ -26,11 +26,11 @@ else > endif > > ifneq ($(DESTDIR),) > - LIBDIR ?= $(DESTDIR)$(PREFIX)/lib > + LIBDIR ?= $(wildcard $(DESTDIR))$(PREFIX)/lib > LIBSEPOLA ?= $(LIBDIR)/libsepol.a > > - CFLAGS += -I$(DESTDIR)$(PREFIX)/include > - LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR) > + CFLAGS += -I$(wildcard $(DESTDIR))$(PREFIX)/include > + LDFLAGS += -L$(wildcard $(DESTDIR))$(PREFIX)/lib -L$(LIBDIR) > export CFLAGS > export LDFLAGS > export LIBSEPOLA > -- > 2.40.1 >
diff --git a/Makefile b/Makefile index 2ffba8e9..053c6d3d 100644 --- a/Makefile +++ b/Makefile @@ -26,11 +26,11 @@ else endif ifneq ($(DESTDIR),) - LIBDIR ?= $(DESTDIR)$(PREFIX)/lib + LIBDIR ?= $(wildcard $(DESTDIR))$(PREFIX)/lib LIBSEPOLA ?= $(LIBDIR)/libsepol.a - CFLAGS += -I$(DESTDIR)$(PREFIX)/include - LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR) + CFLAGS += -I$(wildcard $(DESTDIR))$(PREFIX)/include + LDFLAGS += -L$(wildcard $(DESTDIR))$(PREFIX)/lib -L$(LIBDIR) export CFLAGS export LDFLAGS export LIBSEPOLA
Though instructed as DESTDIR=~/obj ./scripts/env_use_destdir make test in README.md, compiling policy_define.c was failed with following errors: make[1]: Entering directory '/home/yamato/var/selinux/checkpolicy' cc -O2 -Werror -Wall -Wextra -Wfloat-equal -Wformat=2 -Winit-self \ -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes \ -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes \ -Wundef -Wunused -Wwrite-strings -fno-common -I~/obj/usr/include \ -o policy_define.o -c policy_define.c policy_define.c: In function ‘define_te_avtab_xperms_helper’: policy_define.c:2083:61: error: ‘RULE_NOTSELF’ undeclared (first use in this function); did you mean ‘RULE_SELF’? 2083 | avrule->flags |= (add ? RULE_SELF : RULE_NOTSELF); | ^~~~~~~~~~~~ | RULE_SELF because cc cannot find the directory ~/obj/usr/include passed via -I option. cc doesn't expand "~". Signed-off-by: Masatake YAMATO <yamato@redhat.com> --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)