All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guido Trentalancia <guido@trentalancia.com>
To: Eric Paris <eparis@redhat.com>
Cc: Stephen Smalley <sds@tycho.nsa.gov>,
	Eric Paris <eparis@parisplace.org>,
	SELinux Mail List <selinux@tycho.nsa.gov>
Subject: Re: [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule)
Date: Tue, 13 Sep 2011 02:53:22 +0200	[thread overview]
Message-ID: <1315875203.2177.22.camel@vortex> (raw)
In-Reply-To: <1315868758.2177.8.camel@vortex>

On Tue, 2011-09-13 at 01:05 +0200, Guido Trentalancia wrote:
> Hi Eric.
> 
> On Mon, 2011-09-12 at 18:01 -0400, Eric Paris wrote:
> > On 09/12/2011 04:29 PM, Guido Trentalancia wrote:
> > > Hi Stephen.
> > > 
> > > On Mon, 2011-09-12 at 08:57 -0400, Stephen Smalley wrote:
> > >> On Fri, 2011-09-09 at 13:31 -0400, Eric Paris wrote:
> > >>> I'm also really annoyed by this at times, but I don't know what the
> > >>> right answer is.
> > >>>
> > >>> We really treat it like we have 5+ separate projects which just all
> > >>> happen to live in the same git tree.  Thus to build libselinux you
> > >>> must have already built and installed libsepol.  And then to build
> > >>> libsemanage you need to have done that with both libsepol and
> > >>> libselinux.  Then of course to get the builds and install right (on
> > >>> Fedora/RHEL) you have to know to use LIBDIR=/usr/lib64 SHLIBDIR=/lib64
> > >>> for libsepol and libsepol, but SHLIBDIR=/usr/lib64 for libsemanage.
> > >>> Its a mess, but I don't know what to do that's better....
> > >>
> > >> make DESTDIR=~/out at top-level should work fine - it will build and
> > >> install each library into a private tree (as specified by DESTDIR) and
> > >> then build and install the programs against those libraries.  Without
> > >> needing to clobber the system ones.
> > > 
> > > At the moment, it does not, until the Makefile(s) are modified or at
> > > least until the libraries are manually installed first.
> > > 
> > > Try by yourself, but do not forget to remove
> > > $(PREFIX)/usr/include/{selinux,semanage,sepol} and
> > > $(PREFIX){/usr,}/lib/libse{linux,manage,pol}* first !
> > 
> > I recently added the patch which changed the global to be 'build'
> > instead of 'install', so sds might not realize that 'install' is no
> > longer the default, however I think Guido is right about the install
> > having a number of paces that it hard coded things...
> 
> The new target seems to be "all" (introduced on Aug the 11th by Eric).
> 
> However, at the moment, without an existing installation in place the
> build fails on my system because it cannot source header files from
> $(PREFIX)/include/{selinux,sepol,semanage} during compilation and then
> because it cannot source shared libraries from LIBDIR ?= $(PREFIX)/lib
> during linking.
> 
> It also fails if an existing installation provides obsolete header
> files.
> 
> Another (even better) way of achieving the same would probably be to set
> a TOPLEVEL variable to "pwd" (shell builtin for current directory) in
> the top-level Makefile and then add -I
> $(TOPLEVEL)/{selinux,sepol,semanage}/include and -L
> $(TOPLEVEL)/lib{selinux,sepol,semanage}/src to CFLAGS and LDFLAGS
> respectively...

And here is what I meant:

diff -pruN selinux/checkpolicy/Makefile selinux-12092011-test-toplevel-arguments/checkpolicy/Makefile
--- selinux/checkpolicy/Makefile	2011-09-09 20:12:55.978662153 +0200
+++ selinux-12092011-test-toplevel-arguments/checkpolicy/Makefile	2011-09-13 02:24:20.252767154 +0200
@@ -19,7 +19,7 @@ CHECKOBJS = y.tab.o lex.yy.o queue.o mod
 CHECKPOLOBJS = $(CHECKOBJS) checkpolicy.o
 CHECKMODOBJS = $(CHECKOBJS) checkmodule.o
 
-LDLIBS=$(LIBDIR)/libsepol.a -lfl
+LDLIBS=../libsepol/src/libsepol.a -L$(LIBDIR) -lfl
 
 GENERATED=lex.yy.c y.tab.c y.tab.h
 
diff -pruN selinux/checkpolicy/test/Makefile selinux-12092011-test-toplevel-arguments/checkpolicy/test/Makefile
--- selinux/checkpolicy/test/Makefile	2011-09-09 20:12:55.980662174 +0200
+++ selinux-12092011-test-toplevel-arguments/checkpolicy/test/Makefile	2011-09-13 02:25:01.297083713 +0200
@@ -9,7 +9,7 @@ INCLUDEDIR ?= $(PREFIX)/include
 CFLAGS ?= -g -Wall -O2 -pipe
 override CFLAGS += -I$(INCLUDEDIR)
 
-LDLIBS=-lfl -lsepol -lselinux $(LIBDIR)/libsepol.a -L$(LIBDIR)
+LDLIBS=-lsepol -lselinux ../../libsepol/src/libsepol.a -L$(LIBDIR) -lfl
 
 all: dispol dismod
 
diff -pruN selinux/Makefile selinux-12092011-test-toplevel-arguments/Makefile
--- selinux/Makefile	2011-09-09 20:12:55.977662144 +0200
+++ selinux-12092011-test-toplevel-arguments/Makefile	2011-09-13 02:29:20.085069282 +0200
@@ -3,10 +3,15 @@ PYSUBDIRS=libselinux libsemanage
 DISTCLEANSUBIDRS=libselinux libsemanage
 
 ifeq ($(DEBUG),1)
-	export CFLAGS = -g3 -O0 -gdwarf-2 -fno-strict-aliasing -Wall -Wshadow -Werror
-	export LDFLAGS = -g
+	CFLAGS += -g3 -O0 -gdwarf-2 -fno-strict-aliasing -Wall -Wshadow -Werror
+	LDFLAGS += -g
 endif
 
+CFLAGS += -I$(CURDIR)/libselinux/include -I$(CURDIR)/libsepol/include -I$(CURDIR)/libsemanage/include
+LDFLAGS += -L$(CURDIR)/libselinux/src -L$(CURDIR)/libsepol/src -L$(CURDIR)/libsemanage/src
+export CFLAGS
+export LDFLAGS
+
 all install relabel clean test indent:
 	@for subdir in $(SUBDIRS); do \
 		(cd $$subdir && $(MAKE) $@) || exit 1; \
diff -pruN selinux/policycoreutils/semodule_deps/Makefile selinux-12092011-test-toplevel-arguments/policycoreutils/semodule_deps/Makefile
--- selinux/policycoreutils/semodule_deps/Makefile	2011-09-09 20:12:56.076662865 +0200
+++ selinux-12092011-test-toplevel-arguments/policycoreutils/semodule_deps/Makefile	2011-09-13 02:14:41.954328802 +0200
@@ -7,7 +7,7 @@ MANDIR ?= $(PREFIX)/share/man
 
 CFLAGS ?= -Werror -Wall -W
 override CFLAGS += -I$(INCLUDEDIR)
-LDLIBS = $(LIBDIR)/libsepol.a
+LDLIBS = ../../libsepol/src/libsepol.a
 
 all: semodule_deps
 
diff -pruN selinux/policycoreutils/sestatus/Makefile selinux-12092011-test-toplevel-arguments/policycoreutils/sestatus/Makefile
--- selinux/policycoreutils/sestatus/Makefile	2011-09-09 20:12:56.077662873 +0200
+++ selinux-12092011-test-toplevel-arguments/policycoreutils/sestatus/Makefile	2011-09-13 02:12:59.996589853 +0200
@@ -5,7 +5,7 @@ MANDIR = $(PREFIX)/share/man
 ETCDIR ?= $(DESTDIR)/etc
 LIBDIR ?= ${PREFIX}/lib
 
-CFLAGS = -Werror -Wall -W
+CFLAGS ?= -Werror -Wall -W
 override CFLAGS += -I$(PREFIX)/include -D_FILE_OFFSET_BITS=64
 LDLIBS = -lselinux -L$(LIBDIR)
 
diff -pruN selinux/policycoreutils/setfiles/Makefile selinux-12092011-test-toplevel-arguments/policycoreutils/setfiles/Makefile
--- selinux/policycoreutils/setfiles/Makefile	2011-09-09 20:12:56.078662881 +0200
+++ selinux-12092011-test-toplevel-arguments/policycoreutils/setfiles/Makefile	2011-09-13 02:12:44.826477882 +0200
@@ -5,7 +5,7 @@ MANDIR = $(PREFIX)/share/man
 LIBDIR ?= $(PREFIX)/lib
 AUDITH = $(shell ls /usr/include/libaudit.h 2>/dev/null)
 
-CFLAGS = -g -Werror -Wall -W
+CFLAGS ?= -g -Werror -Wall -W
 override CFLAGS += -I$(PREFIX)/include
 LDLIBS = -lselinux -lsepol -L$(LIBDIR)
 
diff -pruN selinux/README selinux-12092011-test-toplevel-arguments/README
--- selinux/README	1970-01-01 01:00:00.000000000 +0100
+++ selinux-12092011-test-toplevel-arguments/README	2011-09-13 02:22:53.625094846 +0200
@@ -0,0 +1,17 @@
+INSTALLATION:
+
+Type "make" to build and then "make install" to install.
+
+---
+
+The environment variables CFLAGS and LDFLAGS can be passed to "make" to use custom compiler
+and/or linker flags (for example: CFLAGS="-O3" LDFLAGS="" make).
+
+The environment variables LIBDIR and SHLIBDIR can be passed to "make" in order to configure
+different directories for the libraries (e.g. LIBDIR=/usr/lib64 and SHLIBDIR=/usr/lib64
+on 64-bit systems).
+
+The environment variable PREFIX can be passed to "make" in order to configure an install
+prefix other than "/usr".
+
+Please see the Makefile(s) for other environment variables that can be used.

There are many different ways of achieving it.

Using the CURDIR variable provided by make is quite nice. Not only it is
much simpler and much cleaner, but it also avoids the need to revert the
patch before creating the separate components to be released.

However there are many other bits left out from previously posted
patches (honor LIBDIR for load_policy, LIBSO link creation in SHLIBDIR
for the three shared libraries, genhomedircon manual page, do not
hard-code path in genhomedircon script, replacement of curly brackets
with parentheses for some variables in some makefiles, make use of
PREFIX for determining LOCALEDIR in some makefiles, do not override
passed environment variables in some makefiles, et cetera).

Regards,

Guido


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

  reply	other threads:[~2011-09-13  0:53 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-09 17:01 [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule Guido Trentalancia
2011-09-09 17:11 ` Guido Trentalancia
2011-09-09 17:17 ` Guido Trentalancia
2011-09-09 17:31   ` Eric Paris
2011-09-09 17:46     ` Guido Trentalancia
2011-09-09 17:59       ` [PATCH] Fix LIBDIR usage for load_policy (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Guido Trentalancia
2011-09-09 21:19         ` [RFC] Userspace top-level Makefile (was Re: [PATCH] Fix LIBDIR usage for load_policy) Guido Trentalancia
2011-09-09 21:37           ` Joshua Brindle
2011-09-09 21:46             ` Guido Trentalancia
2011-09-09 22:35             ` Guido Trentalancia
2011-09-09 23:07               ` Eric Paris
2011-09-09 23:12                 ` Guido Trentalancia
2011-09-09 23:15                   ` Eric Paris
2011-09-09 23:25                     ` Guido Trentalancia
2011-09-09 23:45                       ` Guido Trentalancia
2011-09-09 23:56                         ` Guido Trentalancia
2011-09-10  1:04                           ` [RFC] Userspace git local build (was Re: [RFC] Userspace top-level Makefile) Guido Trentalancia
2011-09-10  2:39                             ` [RFC v2] Userspace git local build (was Re: [RFC] Userspace git local build) Guido Trentalancia
2011-09-11 23:22                     ` [RFC] Userspace top-level Makefile (was Re: [PATCH] Fix LIBDIR usage for load_policy) Joshua Brindle
2011-09-12  2:12                       ` Guido Trentalancia
2011-09-12 12:41                         ` Joshua Brindle
2011-09-12 20:17                           ` [RFC] Improve installation of userspace shared libraries (was Re: [RFC] Userspace top-level Makefile) Guido Trentalancia
2011-09-13 21:00                             ` Stephen Smalley
2011-09-13 21:12                               ` Guido Trentalancia
2011-09-13 21:35                                 ` Guido Trentalancia
2011-09-12 12:57     ` [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule Stephen Smalley
2011-09-12 20:29       ` [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Guido Trentalancia
2011-09-12 22:01         ` Eric Paris
2011-09-12 23:05           ` Guido Trentalancia
2011-09-13  0:53             ` Guido Trentalancia [this message]
2011-09-13  2:03               ` [PATCH v2] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix includes for userspace tools and libraries) Guido Trentalancia
2011-09-13  2:41                 ` [PATCH v3] Fix includes for userspace tools and libraries (was Re: [PATCH v2] " Guido Trentalancia
2011-09-13 12:41           ` [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Stephen Smalley
2011-09-13 16:31             ` Guido Trentalancia
2011-09-13 17:20               ` Stephen Smalley
2011-09-13 18:33                 ` [PATCH] Fix includes for userspace tools and libraries (and possible security issue) Guido Trentalancia
2011-09-13 18:46                   ` Guido Trentalancia
2011-09-13 19:17                     ` Stephen Smalley
2011-09-13 18:48                   ` Stephen Smalley
2011-09-13 19:18                     ` Guido Trentalancia
2011-09-13 19:25                       ` Stephen Smalley
2011-09-13 19:34                         ` Stephen Smalley
2011-09-13 20:04                           ` Guido Trentalancia
2011-09-13 20:20                             ` Stephen Smalley
2011-09-13 20:49                               ` Guido Trentalancia
2011-09-13 20:26                             ` Eric Paris
2011-09-13 20:42                               ` Stephen Smalley
2011-09-13 21:09                                 ` Guido Trentalancia
2011-09-13 22:05                               ` [PATCH v4] " Guido Trentalancia
2011-09-13 23:33                                 ` [PATCH] Fix function arguments in libsemanage tests (was Re: [PATCH v4] Fix includes for userspace tools and libraries) Guido Trentalancia
2011-09-14  0:44                                   ` [PATCH] Change default make target for sepolgen " Guido Trentalancia
2011-09-14  1:10                                     ` [PATCH] Change default make target for some directories in the libraries (was Re: [PATCH] Change default make target for sepolgen) Guido Trentalancia
2011-09-14  1:20                                       ` [PATCH] Change default make target for the man directory of policycoreutils/mcstrans " Guido Trentalancia
2011-09-14 19:16                                     ` [PATCH] Change default make target for sepolgen (was Re: [PATCH v4] Fix includes for userspace tools and libraries) Eric Paris
2011-09-14 19:31                                   ` [PATCH] Fix function arguments in libsemanage tests " Eric Paris
2011-09-15  4:40                                     ` [PATCH v5] Fix makefiles for the userspace tools and libraries Guido Trentalancia
2011-09-15  9:40                                       ` [PATCH] Fix symbolic link creation for the userspace libraries Guido Trentalancia
2011-09-15 11:51                                       ` [PATCH v5] Fix makefiles for the userspace tools and libraries Guido Trentalancia
2011-09-14 12:56                                 ` [PATCH v4] Fix includes for userspace tools and libraries (and possible security issue) Stephen Smalley
2011-09-15  2:44                                   ` [PATCH v5] " Guido Trentalancia
2011-09-15 12:56                                     ` Stephen Smalley
2011-09-15 16:04                                       ` Guido Trentalancia
2011-09-15 16:35                                         ` Stephen Smalley
2011-09-15 17:03                                           ` Guido Trentalancia
2011-09-15 17:16                                             ` Stephen Smalley
2011-09-15 17:26                                               ` Guido Trentalancia
2011-09-15 18:14                                                 ` Stephen Smalley
2011-09-15 19:12                                                   ` [PATCH v5] Fix includes for userspace tools and libraries Guido Trentalancia
2011-09-15 20:00                                                     ` Stephen Smalley
2011-09-15 20:32                                                       ` Guido Trentalancia
2011-09-16 12:39                                                         ` Stephen Smalley
2011-09-16 12:50                                                           ` Guido Trentalancia
2011-09-17 20:48                                                       ` [PATCH v6] " Guido Trentalancia
2011-09-15 19:37                                                   ` [PATCH v5] " Guido Trentalancia
2011-09-15 17:15                                         ` [PATCH v5] Fix includes for userspace tools and libraries (and possible security issue) Eric Paris
2011-09-13 19:42                         ` [PATCH] " Guido Trentalancia
2011-09-13 17:08           ` [PATCH] Fix includes for userspace tools and libraries (was Re: [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule) Stephen Smalley
2011-09-09 17:31   ` [PATCH] Fix include semanage/handle.h for semanage_set_root() as used by semodule Guido Trentalancia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1315875203.2177.22.camel@vortex \
    --to=guido@trentalancia.com \
    --cc=eparis@parisplace.org \
    --cc=eparis@redhat.com \
    --cc=sds@tycho.nsa.gov \
    --cc=selinux@tycho.nsa.gov \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.