Re: [PATCH] Makefile: always include and link with DESTDIR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 30 May 2022 at 00:49, Nicolas Iooss <nicolas.iooss@xxxxxxx> wrote:
>
> On Fri, May 20, 2022 at 3:00 PM Christian Göttsche
> <cgzones@xxxxxxxxxxxxxx> wrote:
> >
> > The top level Makefile adds, if the environment variable DESTDIR is
> > defined, the according include and link directory to CFLAGS and LDFLAGS
> > to build all userspace tools against dependencies from this repository
> > and not the system.
> > If CFLAGS or LDFLAGS are specified by the user, e.g.
> >
> >     DESTDIR=~/destdir CFLAGS=-Dfoo LDFLAGS=-Lbar make install
> >
> > use the override directive to force adding DESTDIR paths to the user
> > specified CFLAGS or LDFLAGS.
> >
> > Note that
> >
> >     DESTDIR=~/destdir make CFLAGS=-Dfoo LDFLAGS=-Lbar install
> >
> > does not work, since in sub-directories the internal make options take
> > precedence over the overridden environment variables in the top
> > Makefile.
>
> Hello,
>
> >From my understanding of the documentation of "override"
> (https://www.gnu.org/software/make/manual/html_node/Override-Directive.html)
> it only matters when setting variables which come from the command
> line, not from the environment. On my system (Arch Linux with "GNU
> Make 4.3"), your first command works fine. To really be sure I
> understood things correctly, I added a target into the main Makefile:
>
> testenv:
>     @echo Root Makefile: CFLAGS=$(CFLAGS)
>     (cd libsepol && $(MAKE) $@)
>
> ... and added similar commands to libsepol/Makefile and
> libsepol/src/Makefile. Without override, "DESTDIR=/tmp/destdir
> CFLAGS=-Dfoo make testenv" displays:
>
> Root Makefile: CFLAGS=-Dfoo -I/tmp/destdir/usr/include
> libsepol Makefile: CFLAGS=-Dfoo -I/tmp/destdir/usr/include
> libsepol/src Makefile: CFLAGS=-Dfoo -I/tmp/destdir/usr/include -I.
> -I../include -D_GNU_SOURCE -I../cil/include -DHAVE_REALLOCARRAY
>
> ... which shows that the Makefile works as expected. Adding "override"
> does not change this output. It only changes it with
> "DESTDIR=/tmp/destdir make CFLAGS=-Dfoo testenv":
>
> Root Makefile: CFLAGS=-Dfoo -I/tmp/destdir/usr/include
> libsepol Makefile: CFLAGS=-Dfoo
> libsepol/src Makefile: CFLAGS=-Dfoo -I. -I../include -D_GNU_SOURCE
> -I../cil/include -DHAVE_REALLOCARRAY
>
> Your patch makes the first output have " -I/tmp/destdir/usr/include"
> but not the other lines, because $(MAKEFLAGS) contains "CFLAGS=-Dfoo"
> (as documented on
> https://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html
> ). So using CFLAGS in command-line argument does not work and making
> it work would require removing CFLAGS and LDFLAGS from MAKEFLAGS,
> which seems fragile.
>
> Therefore, I did not manage to reproduce the issue that your patch was
> fixing and I did not understand why using "override" helped. You could
> be using a specific kind of make which behaves differently as mine.
> Could you please provide some way to reproduce the issue you were
> experiencing (that "DESTDIR=~/destdir CFLAGS=-Dfoo LDFLAGS=-Lbar make
> install" did not work on your system)?

Thanks for reviewing.
I must have mixed up something, cause

    DESTDIR=~/destdir CFLAGS=-Dfoo LDFLAGS=-Lbar make install

works indeed.
Please disregard this patch.

>
> Thanks,
> Nicolas
>
> > Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>
> > ---
> >  Makefile | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index 2ffba8e9..e05e924b 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -29,8 +29,8 @@ ifneq ($(DESTDIR),)
> >         LIBDIR ?= $(DESTDIR)$(PREFIX)/lib
> >         LIBSEPOLA ?= $(LIBDIR)/libsepol.a
> >
> > -       CFLAGS += -I$(DESTDIR)$(PREFIX)/include
> > -       LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR)
> > +       override CFLAGS += -I$(DESTDIR)$(PREFIX)/include
> > +       override LDFLAGS += -L$(DESTDIR)$(PREFIX)/lib -L$(LIBDIR)
> >         export CFLAGS
> >         export LDFLAGS
> >         export LIBSEPOLA
> > --
> > 2.36.1
> >
>




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux