RE: [PATCH] libsepol: Move secilc out of libsepol

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

 



I forgot to set LIBDIR in the original patch. I'll send version two momentarily.

>-----Original Message-----
>From: Stephen Smalley [mailto:sds@xxxxxxxxxxxxx]
>Sent: Monday, March 30, 2015 11:03 AM
>To: Yuli Khodorkovskiy; selinux@xxxxxxxxxxxxx
>Subject: Re: [PATCH] libsepol: Move secilc out of libsepol
>
>On 03/26/2015 03:30 PM, Yuli Khodorkovskiy wrote:
>> Since the secilc compiler is independent of libsepol, move secilc out
>> of libsepol. Linke secilc dynamically rather than statically with libsepol.
>>
>> - Move secilc source, test policies, docs, and secilc manpage to secilc
>>   directory.
>> - Remove unneeded Makefile from libsepol/cil. To build secilc, run make
>>   in the secilc directory.
>> - Add target to install the secilc binary to /usr/bin/.
>> - Create an Android makefile for secilc and move secilc out of libsepol
>>   Android makefile.
>> - Add cil_set_mls to libsepol public API as it is needed by secilc.
>> - Remove policy.conf from testing since it is no longer used.
>>
>> Signed-off-by: Yuli Khodorkovskiy <ykhodorkovskiy@xxxxxxxxxx>
>
>No longer builds with make DESTDIR=~/obj install:
>cc -Wall -Wshadow -Wextra -Wundef -Wmissing-format-attribute -Wcast-
>align -Wstrict-prototypes -Wpointer-arith -Wunused -
>I/home/sds/obj/usr/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o
>secilc secilc.o -lsepol
>secilc.o: In function `main':
>secilc.c:(.text+0x564): undefined reference to `cil_set_log_level'
>secilc.c:(.text+0x573): undefined reference to `cil_db_init'
>secilc.c:(.text+0x587): undefined reference to `cil_set_disable_dontaudit'
>secilc.c:(.text+0x59b): undefined reference to `cil_set_disable_neverallow'
>secilc.c:(.text+0x5af): undefined reference to `cil_set_preserve_tunables'
>secilc.c:(.text+0x5c9): undefined reference to `cil_set_handle_unknown'
>secilc.c:(.text+0x5eb): undefined reference to `cil_set_mls'
>secilc.c:(.text+0x5ff): undefined reference to `cil_set_target_platform'
>secilc.c:(.text+0x613): undefined reference to `cil_set_policy_version'
>secilc.c:(.text+0x7b8): undefined reference to `cil_add_file'
>secilc.c:(.text+0x82f): undefined reference to `cil_compile'
>secilc.c:(.text+0x86f): undefined reference to `cil_build_policydb'
>secilc.c:(.text+0xa5f): undefined reference to `cil_filecons_to_string'
>secilc.c:(.text+0xba2): undefined reference to `cil_db_destroy'
>collect2: error: ld returned 1 exit status
>make[1]: *** [secilc] Error 1
>make[1]: Leaving directory `/home/sds/selinux/secilc'
>
>> ---
>>  Makefile                                           |   2 +-
>>  libsepol/Android.mk                                |  15 ---
>>  libsepol/cil/Makefile                              | 102 ---------------
>>  libsepol/cil/test/policy.conf                      | 143 ---------------------
>>  libsepol/src/libsepol.map.in                       |   1 +
>>  secilc/.gitignore                                  |   6 +
>>  secilc/Android.mk                                  |  31 +++++
>>  {libsepol/cil => secilc}/COPYING                   |   0
>>  secilc/Makefile                                    |  47 +++++++
>>  {libsepol/cil => secilc}/README                    |  26 ++--
>>  .../cil => secilc}/docs/CIL_Reference_Guide.xml    |   0
>>  {libsepol/cil => secilc}/docs/Makefile             |  17 +--
>>  .../docs/cil_access_vector_rules.xml               |   0
>>  .../docs/cil_call_macro_statements.xml             |   0
>>  .../docs/cil_class_and_permission_statements.xml   |   0
>>  .../docs/cil_conditional_statements.xml            |   0
>>  .../docs/cil_constraint_statements.xml             |   0
>>  .../docs/cil_container_statements.xml              |   0
>>  .../cil => secilc}/docs/cil_context_statement.xml  |   0
>>  .../docs/cil_default_object_statements.xml         |   0
>>  {libsepol/cil => secilc}/docs/cil_design.dia       | Bin
>>  {libsepol/cil => secilc}/docs/cil_design.jpeg      | Bin
>>  .../docs/cil_file_labeling_statements.xml          |   0
>>  .../docs/cil_mls_labeling_statements.xml           |   0
>>  .../docs/cil_network_labeling_statements.xml       |   0
>>  .../docs/cil_policy_config_statements.xml          |   0
>>  .../cil => secilc}/docs/cil_role_statements.xml    |   0
>>  .../cil => secilc}/docs/cil_sid_statements.xml     |   0
>>  .../cil => secilc}/docs/cil_type_statements.xml    |   0
>>  .../cil => secilc}/docs/cil_user_statements.xml    |   0
>>  .../cil => secilc}/docs/cil_xen_statements.xml     |   0
>>  {libsepol/cil/docs => secilc}/secilc.8.xml         |   0
>>  {libsepol/cil => secilc}/secilc.c                  |  36 +++---
>>  {libsepol/cil => secilc}/test/block_test.cil       |   0
>>  {libsepol/cil => secilc}/test/in_test.cil          |   0
>>  {libsepol/cil => secilc}/test/integration.cil      |   0
>>  {libsepol/cil => secilc}/test/minimum.cil          |   0
>>  .../cil => secilc}/test/name_resolution_test.cil   |   0
>>  {libsepol/cil => secilc}/test/optional_test.cil    |   0
>>  {libsepol/cil => secilc}/test/policy.cil           |   0
>>  40 files changed, 116 insertions(+), 310 deletions(-)  delete mode
>> 100644 libsepol/cil/Makefile  delete mode 100644
>> libsepol/cil/test/policy.conf  create mode 100644 secilc/.gitignore
>> create mode 100644 secilc/Android.mk  rename {libsepol/cil =>
>> secilc}/COPYING (100%)  create mode 100644 secilc/Makefile  rename
>> {libsepol/cil => secilc}/README (73%)  rename {libsepol/cil =>
>> secilc}/docs/CIL_Reference_Guide.xml (100%)  rename {libsepol/cil =>
>> secilc}/docs/Makefile (81%)  rename {libsepol/cil =>
>> secilc}/docs/cil_access_vector_rules.xml (100%)  rename {libsepol/cil
>> => secilc}/docs/cil_call_macro_statements.xml (100%)  rename
>> {libsepol/cil => secilc}/docs/cil_class_and_permission_statements.xml
>> (100%)  rename {libsepol/cil =>
>> secilc}/docs/cil_conditional_statements.xml (100%)  rename
>> {libsepol/cil => secilc}/docs/cil_constraint_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_container_statements.xml
>> (100%)  rename {libsepol/cil => secilc}/docs/cil_context_statement.xml
>> (100%)  rename {libsepol/cil =>
>> secilc}/docs/cil_default_object_statements.xml (100%)  rename
>> {libsepol/cil => secilc}/docs/cil_design.dia (100%)  rename
>> {libsepol/cil => secilc}/docs/cil_design.jpeg (100%)  rename
>> {libsepol/cil => secilc}/docs/cil_file_labeling_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_mls_labeling_statements.xml
>> (100%)  rename {libsepol/cil =>
>> secilc}/docs/cil_network_labeling_statements.xml (100%)  rename
>> {libsepol/cil => secilc}/docs/cil_policy_config_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_role_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_sid_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_type_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_user_statements.xml (100%)
>> rename {libsepol/cil => secilc}/docs/cil_xen_statements.xml (100%)
>> rename {libsepol/cil/docs => secilc}/secilc.8.xml (100%)  rename
>> {libsepol/cil => secilc}/secilc.c (90%)  rename {libsepol/cil =>
>> secilc}/test/block_test.cil (100%)  rename {libsepol/cil =>
>> secilc}/test/in_test.cil (100%)  rename {libsepol/cil =>
>> secilc}/test/integration.cil (100%)  rename {libsepol/cil =>
>> secilc}/test/minimum.cil (100%)  rename {libsepol/cil =>
>> secilc}/test/name_resolution_test.cil (100%)  rename {libsepol/cil =>
>> secilc}/test/optional_test.cil (100%)  rename {libsepol/cil =>
>> secilc}/test/policy.cil (100%)
>>
>> diff --git a/Makefile b/Makefile
>> index f71faab..93e10de 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1,4 +1,4 @@
>> -SUBDIRS=libsepol libselinux libsemanage sepolgen checkpolicy
>> policycoreutils # policy
>> +SUBDIRS=libsepol libselinux libsemanage sepolgen checkpolicy secilc
>> +policycoreutils # policy
>>  PYSUBDIRS=libselinux libsemanage
>>  DISTCLEANSUBIDRS=libselinux libsemanage
>>
>> diff --git a/libsepol/Android.mk b/libsepol/Android.mk index
>> ab4bcd1..3e4700b 100644
>> --- a/libsepol/Android.mk
>> +++ b/libsepol/Android.mk
>> @@ -135,18 +135,3 @@ LOCAL_SRC_FILES := $(common_src_files)
>> LOCAL_MODULE_CLASS := STATIC_LIBRARIES
>>
>>  include $(BUILD_STATIC_LIBRARY)
>> -
>> -##
>> -# secilc
>> -#
>> -include $(CLEAR_VARS)
>> -
>> -LOCAL_MODULE := secilc
>> -LOCAL_MODULE_TAGS := optional
>> -LOCAL_C_INCLUDES := $(common_includes) -LOCAL_CFLAGS :=
>> $(common_cflags) -LOCAL_SRC_FILES := cil/secilc.c
>> -LOCAL_STATIC_LIBRARIES := libsepol -LOCAL_MODULE_CLASS :=
>EXECUTABLES
>> -
>> -include $(BUILD_HOST_EXECUTABLE)
>> diff --git a/libsepol/cil/Makefile b/libsepol/cil/Makefile deleted
>> file mode 100644 index 9f52ee4..0000000
>> --- a/libsepol/cil/Makefile
>> +++ /dev/null
>> @@ -1,102 +0,0 @@
>> -PREFIX ?= $(DESTDIR)/usr
>> -LIBDIR ?= $(PREFIX)/lib
>> -SHLIBDIR ?= $(DESTDIR)/lib
>> -INCLUDEDIR ?= $(PREFIX)/include
>> -SRCDIR ?= ./src
>> -TESTDIR ?= ./test
>> -UNITDIR ?= $(TESTDIR)/unit
>> -LIBCILDIR ?= $(SRCDIR)
>> -
>> -LEX = flex
>> -
>> -DEBUG = 0
>> -
>> -SECILC = secilc
>> -
>> -UNIT = unit_tests
>> -
>> -SECILC_SRCS := secilc.c
>> -SECILC_OBJS := $(patsubst %.c,%.o,$(SECILC_SRCS))
>> -
>> -TEST_SRCS := $(wildcard $(UNITDIR)/*.c) -TEST_OBJS := $(patsubst
>> %.c,%.o,$(TEST_SRCS))
>> -
>> -LIBCIL_GENERATED := $(LIBCILDIR)/cil_lexer.c -LIBCIL_SRCS  :=
>> $(wildcard $(LIBCILDIR)/*.c) $(LIBCIL_GENERATED) -LIBCIL_OBJS :=
>> $(patsubst %.c,%.o,$(LIBCIL_SRCS)) -LIBCIL_INCLUDES := $(wildcard
>> $(LIBCILDIR)/*.h)
>> -
>> -LIBCIL_STATIC := $(SRCDIR)/libcil.a
>> -
>> -LIBSEPOL_STATIC = /usr/lib/libsepol.a
>> -
>> -LIBS =
>> -LDFLAGS =
>> -COVCFLAGS = -fprofile-arcs -ftest-coverage -O0
>> -
>> -CFLAGS ?= -Wall -Wshadow -Wextra -Wundef -Wmissing-format-
>attribute
>> -Wcast-align -Wstrict-prototypes -Wpointer-arith -Wunused
>> -
>> -ifeq ($(DEBUG),1)
>> -	override CFLAGS += -g3 -O0 -gdwarf-2 -fno-strict-aliasing -DDEBUG
>> -	override LDFLAGS += -g
>> -else
>> -	override CFLAGS += -O2
>> -endif
>> -
>> -override CFLAGS += -I./include -I$(INCLUDEDIR) -D_GNU_SOURCE
>> -D_FILE_OFFSET_BITS=64
>> -
>> -ARCH := $(patsubst i%86,i386,$(shell uname -m)) -ifneq (,$(filter
>> i386,$(ARCH)))
>> -	TLSFLAGS += -mno-tls-direct-seg-refs
>> -endif
>> -ifneq (,$(filter x86_64,$(ARCH)))
>> -	override LDFLAGS += -I/usr/lib64
>> -	override LIBSEPOL_STATIC = /usr/lib64/libsepol.a
>> -endif
>> -
>> -all: $(SECILC)
>> -
>> -%.o: %.c $(LIBCIL_INCLUDES)
>> -	$(CC) $(CFLAGS) -c -o $@ $<
>> -
>> -$(LIBCIL_STATIC): $(LIBCIL_OBJS)
>> -	$(AR) rcs $@ $^
>> -	ranlib $@
>> -
>> -$(LIBCIL_GENERATED): $(LIBCILDIR)/cil_lexer.l
>> -	$(LEX) -t $< > $@
>> -
>> -$(UNIT): $(TEST_OBJS) $(LIBCIL_STATIC)
>> -	$(CC) $(CFLAGS) -o $@ $^ $(LIBCIL_STATIC) $(LIBSEPOL_STATIC)
>$(LDFLAGS)
>> -
>> -$(SECILC): $(SECILC_OBJS) $(LIBCIL_STATIC)
>> -	$(CC) $(CFLAGS) -o $@ $^ $(LIBCIL_STATIC) $(LIBSEPOL_STATIC)
>$(LDFLAGS)
>> -
>> -unit: $(SECILC) $(UNIT)
>> -
>> -# Requires lcov 1.9+ (--ignore-errors)
>> -coverage: CFLAGS += $(COVCFLAGS)
>> -coverage: clean unit
>> -	./unit_tests
>> -	test -d cov || mkdir cov
>> -	lcov --directory src --capture --output-file cov/app.info --ignore-
>errors source -b src
>> -	lcov --remove cov/app.info '/usr/include/*' --remove cov/app.info
>'sepol/*' --output-file cov/app.info
>> -	genhtml -o ./cov/html ./cov/app.info
>> -
>> -test: $(SECILC)
>> -	./$(SECILC) test/policy.cil
>> -
>> -clean:
>> -	rm -f $(SECILC)
>> -	rm -f $(LIBCIL_STATIC)
>> -	rm -f $(TEST_OBJS) $(SECILC_OBJS)
>> -	rm -rf cov src/*.gcda src/*.gcno *.gcda *.gcno
>> -	rm -f $(LIBCIL_OBJS)
>> -
>> -bare: clean
>> -	rm -f $(LIBCIL_GENERATED)
>> -	rm -f $(UNIT)
>> -	rm -f policy.*
>> -	rm -f file_contexts
>> -
>> -.PHONY: all bare clean coverage test unit diff --git
>> a/libsepol/cil/test/policy.conf b/libsepol/cil/test/policy.conf
>> deleted file mode 100644 index 938af91..0000000
>> --- a/libsepol/cil/test/policy.conf
>> +++ /dev/null
>> @@ -1,143 +0,0 @@
>> -class file
>> -class process
>> -class char
>> -
>> -sid kernel
>> -sid security
>> -sid unlabeled
>> -
>> -common file {ioctl read write create getattr setattr lock relabelfrom
>> relabelto append unlink link rename execute swapon quotaon mounton
>}
>> -
>> -class file inherits file { execute_no_trans entrypoint execmod open
>> audit_access } -class char inherits file { foo transition } -class
>> process { open }
>> -
>> -sensitivity s0 alias sens0;
>> -sensitivity s1;
>> -
>> -dominance { s0 s1 }
>> -
>> -category c0 alias cat0;
>> -category c1;
>> -category c2;
>> -
>> -level s0:c0.c2;
>> -level s1:c0.c2;
>> -
>> -mlsconstrain file { open } (not (((l1 eq l2) and (u1 eq u2)) or (r1
>> eq r2))); -mlsconstrain file { open } (((l1 eq l2) and (u1 eq u2)) or
>> (r1 != r2)); -mlsconstrain file { open } (l1 dom h2); -mlsconstrain
>> file { open } (h1 domby l2); -mlsconstrain file { open } (l1 incomp
>> l2);
>> -
>> -mlsvalidatetrans file (h1 domby l2);
>> -
>> -attribute foo_type;
>> -attribute bar_type;
>> -attribute baz_type;
>> -attribute exec_type;
>> -
>> -type bin_t, bar_type, exec_type;
>> -type kernel_t, foo_type, exec_type, baz_type; -type security_t,
>> baz_type; -type unlabeled_t, baz_type;
>> -
>> -type exec_t, baz_type;
>> -type console_t, baz_type;
>> -type auditadm_t, baz_type;
>> -type console_device_t, baz_type;
>> -type user_tty_device_t, baz_type;
>> -type device_t, baz_type;
>> -type getty_t, baz_type;
>> -type a_t, baz_type;
>> -type b_t, baz_type;
>> -
>> -typealias bin_t alias sbin_t;
>> -
>> -bool secure_mode false;
>> -bool console_login true;
>> -bool b1 false;
>> -
>> -role system_r;
>> -role user_r;
>> -role system_r types bin_t;
>> -role system_r types kernel_t;
>> -role system_r types security_t;
>> -role system_r types unlabeled_t;
>> -
>> -policycap open_perms;
>> -permissive device_t;
>> -
>> -range_transition device_t console_t : file s0:c0 - s1:c0.c1;
>> -
>> -type_transition device_t console_t : file console_device_t;
>> -type_member device_t bin_t : file exec_t;
>> -
>> -if console_login{
>> -	type_change auditadm_t console_device_t : file user_tty_device_t;
>> -}
>> -
>> -role_transition system_r bin_t user_r;
>> -
>> -auditallow device_t auditadm_t: file { open }; -dontaudit device_t
>> auditadm_t: file { read };
>> -
>> -allow system_r user_r;
>> -
>> -allow console_t console_device_t: char { write setattr }; -allow
>> console_t console_device_t: file { open read getattr }; -allow
>> foo_type self: file { execute }; -allow bin_t device_t: file { execute
>> }; -allow bin_t exec_t: file { execute }; -allow bin_t bin_t: file {
>> execute }; -allow a_t b_t : file { write }; -allow console_t
>> console_device_t: file { read write getattr setattr lock append };
>> -allow kernel_t kernel_t : file { execute };
>> -
>> -if b1 {
>> -	allow a_t b_t : file { read };
>> -}
>> -
>> -if secure_mode{
>> -	auditallow device_t exec_t: file { read write };
>> -}
>> -
>> -if console_login{
>> -	allow getty_t console_device_t: file { getattr open read write
>append };
>> -}
>> -else {
>> -	dontaudit getty_t console_device_t: file { getattr open read write
>append };
>> -}
>> -
>> -if (not ((secure_mode eq console_login) xor ((secure_mode or
>console_login) and secure_mode))){
>> -	allow bin_t exec_t: file { execute };
>> -}
>> -
>> -user system_u roles system_r level s0:c0 range s0:c0 - s1:c0,c1;
>> -user user_u roles user_r level s0:c0 range s0:c0 - s0:c0;
>> -
>> -validatetrans file (t1 == exec_t);
>> -
>> -constrain char transition (not (((t1 eq exec_t) and (t2 eq bin_t)) or
>> (r1 eq r2))); -constrain file { open } (r1 dom r2);
>> -constrain file { open }	(r1 domby r2);
>> -constrain file { open }	(r1 incomp r2);
>> -constrain file { open read getattr } (not (((t1 eq exec_t) and (t2 eq
>> bin_t)) or (r1 eq r2))); -constrain char { write setattr } (not (((t1
>> eq exec_t) and (t2 eq bin_t)) or (r1 eq r2)));
>> -
>> -
>> -sid kernel system_u:system_r:kernel_t:s0:c0 - s1:c0,c1 -sid security
>> system_u:system_r:security_t:s0:c0 - s1:c0,c1 -sid unlabeled
>> system_u:system_r:unlabeled_t:s0:c0 - s1:c0,c1
>> -
>> -fs_use_xattr ext3 system_u:system_r:bin_t:s0:c0 - s1:c0,c1;
>> -
>> -genfscon proc /usr/bin system_u:system_r:bin_t:s0:c0 - s1:c0,c1
>> -
>> -portcon tcp 22 system_u:system_r:bin_t:s0:c0 - s1:c0,c1 -portcon udp
>> 25 system_u:system_r:bin_t:s0:c0 - s1:c0,c1
>> -
>> -netifcon eth0 system_u:system_r:bin_t:s0:c0 - s1:c0,c1
>> system_u:system_r:bin_t:s0:c0 - s1:c0,c1
>> -
>> -nodecon 192.25.35.200 192.168.1.1 system_u:system_r:bin_t:s0:c0 -
>> s1:c0,c1 -nodecon 2001:db8:ac10:fe01:: 2001:de0:da88:2222::
>> system_u:system_r:bin_t:s0:c0 - s1:c0,c1 diff --git
>> a/libsepol/src/libsepol.map.in b/libsepol/src/libsepol.map.in index
>> 1285314..0ae0f1a 100644
>> --- a/libsepol/src/libsepol.map.in
>> +++ b/libsepol/src/libsepol.map.in
>> @@ -44,5 +44,6 @@ LIBSEPOL_1.1 {
>>  	cil_filecons_to_string;
>>  	cil_set_target_platform;
>>  	cil_set_policy_version;
>> +	cil_set_mls;
>>    local: *;
>>  } LIBSEPOL_1.0;
>> diff --git a/secilc/.gitignore b/secilc/.gitignore new file mode
>> 100644 index 0000000..98c367a
>> --- /dev/null
>> +++ b/secilc/.gitignore
>> @@ -0,0 +1,6 @@
>> +secilc
>> +secilc.8
>> +policy.*
>> +file_contexts
>> +docs/html
>> +docs/pdf
>> diff --git a/secilc/Android.mk b/secilc/Android.mk new file mode
>> 100644 index 0000000..b80955c
>> --- /dev/null
>> +++ b/secilc/Android.mk
>> @@ -0,0 +1,31 @@
>> +LOCAL_PATH:= $(call my-dir)
>> +
>> +common_src_files := secilc.c
>> +
>> +common_cflags := \
>> +	-Wall -Wshadow -O2 \
>> +	-pipe -fno-strict-aliasing \
>> +	-Wno-return-type
>> +
>> +ifeq ($(HOST_OS), darwin)
>> +common_cflags += -DDARWIN
>> +endif
>> +
>> +common_includes := \
>> +	$(LOCAL_PATH)/../libsepol/cil/include/ \
>> +	$(LOCAL_PATH)/../libsepol/include/ \
>> +
>> +##
>> +# secilc
>> +#
>> +include $(CLEAR_VARS)
>> +
>> +LOCAL_MODULE := secilc
>> +LOCAL_MODULE_TAGS := optional
>> +LOCAL_C_INCLUDES := $(common_includes) LOCAL_CFLAGS :=
>> +$(common_cflags) LOCAL_SRC_FILES := ./secilc.c
>LOCAL_SHARED_LIRARIES
>> +:= libsepol LOCAL_MODULE_CLASS := EXECUTABLES
>> +
>> +include $(BUILD_HOST_EXECUTABLE)
>> diff --git a/libsepol/cil/COPYING b/secilc/COPYING similarity index
>> 100% rename from libsepol/cil/COPYING rename to secilc/COPYING diff
>> --git a/secilc/Makefile b/secilc/Makefile new file mode 100644 index
>> 0000000..d6767fa
>> --- /dev/null
>> +++ b/secilc/Makefile
>> @@ -0,0 +1,47 @@
>> +PREFIX ?= $(DESTDIR)/usr
>> +BINDIR ?= $(PREFIX)/bin
>> +MANDIR ?= $(PREFIX)/share/man
>> +INCLUDEDIR ?= $(PREFIX)/include
>> +TESTDIR ?= ./test
>> +
>> +LDFLAGS = -lsepol
>> +SECILC = secilc
>> +SECILC_SRCS := secilc.c
>> +SECILC_OBJS := $(patsubst %.c,%.o,$(SECILC_SRCS))
>> +
>> +# The secilc man page:
>> +MANPAGE = secilc.8
>> +XMLTO = $(shell which xmlto 2> /dev/null | grep / | head -n1)
>> +
>> +CFLAGS ?= -Wall -Wshadow -Wextra -Wundef -Wmissing-format-
>attribute
>> +-Wcast-align -Wstrict-prototypes -Wpointer-arith -Wunused
>> +
>> +override CFLAGS += -I$(INCLUDEDIR) -D_GNU_SOURCE
>> +-D_FILE_OFFSET_BITS=64
>> +
>> +$(SECILC): $(SECILC_OBJS)
>> +	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
>> +
>> +all: $(SECILC) man
>> +
>> +test: $(SECILC)
>> +	./$(SECILC) test/policy.cil
>> +
>> +man: $(MANPAGE).xml
>> +	$(XMLTO) man $(MANPAGE).xml
>> +
>> +install: all man
>> +	-mkdir -p $(BINDIR)
>> +	-mkdir -p $(MANDIR)/man8
>> +	install -m 755 $(SECILC) $(BINDIR)
>> +	install -m 644 $(MANPAGE) $(MANDIR)/man8
>> +
>> +doc:
>> +	$(MAKE) -C docs
>> +
>> +clean:
>> +	rm -f $(SECILC)
>> +	rm -f $(SECILC_OBJS)
>> +	rm -f policy.*
>> +	rm -f file_contexts
>> +	rm -f $(MANPAGE)
>> +
>> +.PHONY: all clean test install doc
>> diff --git a/libsepol/cil/README b/secilc/README similarity index 73%
>> rename from libsepol/cil/README rename to secilc/README index
>> e25f849..14b8cc8 100644
>> --- a/libsepol/cil/README
>> +++ b/secilc/README
>> @@ -11,34 +11,30 @@ INTRODUCTION
>>  DEPENDENCIES
>>
>>  	gcc >= 4.5.1
>> -	libsepol-static >= 2.1.4
>> -	lcov >= 1.9
>> -	flex >= 2.5.35
>> +	libsepol >= 2.4
>>
>>
>>  BUILD STEPS
>>
>> -	Open a terminal client and execute the following command to
>download the source code:
>> -
>> -			git clone https://github.com/SELinuxProject/cil.git
>> -
>> -	Change directory into the "cil" directory.
>>  	Run "make" with one of the following targets:
>>
>>  	make
>> -		Build the CIL compiler (secilc)
>> +		Build the CIL compiler (secilc).
>>
>> -	make unit
>> -		Build the unit_test application to run unit tests
>> +	make test
>> +		Pass a sample policy to test with the compiler.
>>
>> -	make coverage
>> -		Build the unit test binary and create coverage reports
>> +	make install
>> +		Install the secilc compiler and man page to disk.
>>
>>  	make clean
>> -		Remove temporary build files
>> +		Remove temporary build files.
>> +
>> +	make man
>> +		Build the secilc man page.
>>
>>  	make bare
>> -		Remove temporary build files and compile binaries
>> +		Remove temporary build files and compile binaries.
>>
>>
>>  USAGE
>> diff --git a/libsepol/cil/docs/CIL_Reference_Guide.xml
>> b/secilc/docs/CIL_Reference_Guide.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/CIL_Reference_Guide.xml
>> rename to secilc/docs/CIL_Reference_Guide.xml
>> diff --git a/libsepol/cil/docs/Makefile b/secilc/docs/Makefile
>> similarity index 81% rename from libsepol/cil/docs/Makefile rename to
>> secilc/docs/Makefile index cf18e36..1655f59 100644
>> --- a/libsepol/cil/docs/Makefile
>> +++ b/secilc/docs/Makefile
>> @@ -1,6 +1,5 @@
>>  HTMLDIR ?= ./html
>>  PDFDIR ?= ./pdf
>> -MAN8DIR ?= ./man8
>>
>>  # The CIL Reference Guide first part
>>  CIL_REF_GUIDE = CIL_Reference_Guide.xml @@ -9,10 +8,6 @@ FILE_LIST
>?=
>> $(CIL_REF_GUIDE) $(wildcard cil*.xml)  # xmlto generates a *.proc file
>> that can be removed.
>>  PROC_FILE = CIL_Reference_Guide.proc
>>
>> -# The secilc man page:
>> -MANPAGE = secilc.8.xml
>> -
>> -
>>  # look for xmlto and dblatex packages  XMLTO = $(shell which xmlto 2>
>> /dev/null | grep / | head -n1)  DBLATEX = $(shell which dblatex 2>
>> /dev/null | grep / | head -n1) @@ -22,7 +17,7 @@ ifeq ($(XMLTO),)
>> $(error xmlto package not found - install package.)  endif
>>
>> -all: html pdf man
>> +all: html pdf
>>
>>  html: $(FILE_LIST)
>>  	$(XMLTO) html $(CIL_REF_GUIDE)
>> @@ -41,10 +36,6 @@ endif
>>  	@for m in *.pdf; do if [ -f $$m ]; then mv $$m $(PDFDIR); fi; done
>>  	@rm -f $(PROC_FILE)
>>
>> -
>> -man: $(MANPAGE)
>> -	$(XMLTO) man $(MANPAGE)
>> -	@mkdir -p $(MAN8DIR)
>> -	@for m in *.8; do if [ -f $$m ]; then mv $$m $(MAN8DIR); fi; done
>> -	@rm -f $(MANPAGE).proc
>> -
>> +clean:
>> +	@rm -rf html/
>> +	@rm -rf pdf/
>> diff --git a/libsepol/cil/docs/cil_access_vector_rules.xml
>> b/secilc/docs/cil_access_vector_rules.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_access_vector_rules.xml
>> rename to secilc/docs/cil_access_vector_rules.xml
>> diff --git a/libsepol/cil/docs/cil_call_macro_statements.xml
>> b/secilc/docs/cil_call_macro_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_call_macro_statements.xml
>> rename to secilc/docs/cil_call_macro_statements.xml
>> diff --git a/libsepol/cil/docs/cil_class_and_permission_statements.xml
>> b/secilc/docs/cil_class_and_permission_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_class_and_permission_statements.xml
>> rename to secilc/docs/cil_class_and_permission_statements.xml
>> diff --git a/libsepol/cil/docs/cil_conditional_statements.xml
>> b/secilc/docs/cil_conditional_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_conditional_statements.xml
>> rename to secilc/docs/cil_conditional_statements.xml
>> diff --git a/libsepol/cil/docs/cil_constraint_statements.xml
>> b/secilc/docs/cil_constraint_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_constraint_statements.xml
>> rename to secilc/docs/cil_constraint_statements.xml
>> diff --git a/libsepol/cil/docs/cil_container_statements.xml
>> b/secilc/docs/cil_container_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_container_statements.xml
>> rename to secilc/docs/cil_container_statements.xml
>> diff --git a/libsepol/cil/docs/cil_context_statement.xml
>> b/secilc/docs/cil_context_statement.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_context_statement.xml
>> rename to secilc/docs/cil_context_statement.xml
>> diff --git a/libsepol/cil/docs/cil_default_object_statements.xml
>> b/secilc/docs/cil_default_object_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_default_object_statements.xml
>> rename to secilc/docs/cil_default_object_statements.xml
>> diff --git a/libsepol/cil/docs/cil_design.dia
>> b/secilc/docs/cil_design.dia similarity index 100% rename from
>> libsepol/cil/docs/cil_design.dia rename to secilc/docs/cil_design.dia
>> diff --git a/libsepol/cil/docs/cil_design.jpeg
>> b/secilc/docs/cil_design.jpeg similarity index 100% rename from
>> libsepol/cil/docs/cil_design.jpeg rename to
>> secilc/docs/cil_design.jpeg diff --git
>> a/libsepol/cil/docs/cil_file_labeling_statements.xml
>> b/secilc/docs/cil_file_labeling_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_file_labeling_statements.xml
>> rename to secilc/docs/cil_file_labeling_statements.xml
>> diff --git a/libsepol/cil/docs/cil_mls_labeling_statements.xml
>> b/secilc/docs/cil_mls_labeling_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_mls_labeling_statements.xml
>> rename to secilc/docs/cil_mls_labeling_statements.xml
>> diff --git a/libsepol/cil/docs/cil_network_labeling_statements.xml
>> b/secilc/docs/cil_network_labeling_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_network_labeling_statements.xml
>> rename to secilc/docs/cil_network_labeling_statements.xml
>> diff --git a/libsepol/cil/docs/cil_policy_config_statements.xml
>> b/secilc/docs/cil_policy_config_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_policy_config_statements.xml
>> rename to secilc/docs/cil_policy_config_statements.xml
>> diff --git a/libsepol/cil/docs/cil_role_statements.xml
>> b/secilc/docs/cil_role_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_role_statements.xml
>> rename to secilc/docs/cil_role_statements.xml
>> diff --git a/libsepol/cil/docs/cil_sid_statements.xml
>> b/secilc/docs/cil_sid_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_sid_statements.xml
>> rename to secilc/docs/cil_sid_statements.xml
>> diff --git a/libsepol/cil/docs/cil_type_statements.xml
>> b/secilc/docs/cil_type_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_type_statements.xml
>> rename to secilc/docs/cil_type_statements.xml
>> diff --git a/libsepol/cil/docs/cil_user_statements.xml
>> b/secilc/docs/cil_user_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_user_statements.xml
>> rename to secilc/docs/cil_user_statements.xml
>> diff --git a/libsepol/cil/docs/cil_xen_statements.xml
>> b/secilc/docs/cil_xen_statements.xml
>> similarity index 100%
>> rename from libsepol/cil/docs/cil_xen_statements.xml
>> rename to secilc/docs/cil_xen_statements.xml
>> diff --git a/libsepol/cil/docs/secilc.8.xml b/secilc/secilc.8.xml
>> similarity index 100% rename from libsepol/cil/docs/secilc.8.xml
>> rename to secilc/secilc.8.xml diff --git a/libsepol/cil/secilc.c
>> b/secilc/secilc.c similarity index 90% rename from
>> libsepol/cil/secilc.c rename to secilc/secilc.c index f4e32b3..923151c
>> 100644
>> --- a/libsepol/cil/secilc.c
>> +++ b/secilc/secilc.c
>> @@ -34,7 +34,7 @@
>>  #include <getopt.h>
>>  #include <sys/stat.h>
>>
>> -#include <cil/cil.h>
>> +#include <sepol/cil/cil.h>
>>  #include <sepol/policydb.h>
>>
>>  void usage(char *prog)
>> @@ -210,13 +210,13 @@ int main(int argc, char *argv[])
>>  	for (i = optind; i < argc; i++) {
>>  		file = fopen(argv[i], "r");
>>  		if (!file) {
>> -			cil_log(CIL_ERR, "Could not open file: %s\n",
>argv[i]);
>> +			fprintf(stderr, "Could not open file: %s\n", argv[i]);
>>  			rc = SEPOL_ERR;
>>  			goto exit;
>>  		}
>>  		rc = stat(argv[i], &filedata);
>>  		if (rc == -1) {
>> -			cil_log(CIL_ERR, "Could not stat file: %s\n", argv[i]);
>> +			fprintf(stderr, "Could not stat file: %s\n", argv[i]);
>>  			goto exit;
>>  		}
>>  		file_size = filedata.st_size;
>> @@ -224,7 +224,7 @@ int main(int argc, char *argv[])
>>  		buffer = malloc(file_size);
>>  		rc = fread(buffer, file_size, 1, file);
>>  		if (rc != 1) {
>> -			cil_log(CIL_ERR, "Failure reading file: %s\n",
>argv[i]);
>> +			fprintf(stderr, "Failure reading file: %s\n", argv[i]);
>>  			goto exit;
>>  		}
>>  		fclose(file);
>> @@ -232,7 +232,7 @@ int main(int argc, char *argv[])
>>
>>  		rc = cil_add_file(db, argv[i], buffer, file_size);
>>  		if (rc != SEPOL_OK) {
>> -			cil_log(CIL_ERR, "Failure adding %s\n", argv[i]);
>> +			fprintf(stderr, "Failure adding %s\n", argv[i]);
>>  			goto exit;
>>  		}
>>
>> @@ -242,13 +242,13 @@ int main(int argc, char *argv[])
>>
>>  	rc = cil_compile(db);
>>  	if (rc != SEPOL_OK) {
>> -		cil_log(CIL_ERR, "Failed to compile cildb: %d\n", rc);
>> +		fprintf(stderr, "Failed to compile cildb: %d\n", rc);
>>  		goto exit;
>>  	}
>>
>>  	rc = cil_build_policydb(db, &pdb);
>>  	if (rc != SEPOL_OK) {
>> -		cil_log(CIL_ERR, "Failed to build policydb\n");
>> +		fprintf(stderr, "Failed to build policydb\n");
>>  		goto exit;
>>  	}
>>
>> @@ -256,29 +256,27 @@ int main(int argc, char *argv[])
>>  		int size = snprintf(NULL, 0, "policy.%d", policyvers);
>>  		output = malloc((size + 1) * sizeof(char));
>>  		if (output == NULL) {
>> -			cil_log(CIL_ERR, "Failed to create output
>filename\n");
>> +			fprintf(stderr, "Failed to create output
>filename\n");
>>  			rc = SEPOL_ERR;
>>  			goto exit;
>>  		}
>>  		if (snprintf(output, size + 1, "policy.%d", policyvers) != size)
>{
>> -			cil_log(CIL_ERR, "Failed to create output
>filename\n");
>> +			fprintf(stderr, "Failed to create output
>filename\n");
>>  			rc = SEPOL_ERR;
>>  			goto exit;
>>  		}
>>  	}
>>
>> -	cil_log(CIL_INFO, "Writing binary to %s\n", output);
>> -
>>  	binary = fopen(output, "w");
>>  	if (binary == NULL) {
>> -		cil_log(CIL_ERR, "Failure opening binary file for writing\n");
>> +		fprintf(stderr, "Failure opening binary file for writing\n");
>>  		rc = SEPOL_ERR;
>>  		goto exit;
>>  	}
>>
>>  	rc = sepol_policy_file_create(&pf);
>>  	if (rc != 0) {
>> -		cil_log(CIL_ERR, "Failed to create policy file: %d\n", rc);
>> +		fprintf(stderr, "Failed to create policy file: %d\n", rc);
>>  		goto exit;
>>  	}
>>
>> @@ -286,18 +284,16 @@ int main(int argc, char *argv[])
>>
>>  	rc = sepol_policydb_write(pdb, pf);
>>  	if (rc != 0) {
>> -		cil_log(CIL_ERR, "Failed to write binary policy: %d\n", rc);
>> +		fprintf(stderr, "Failed to write binary policy: %d\n", rc);
>>  		goto exit;
>>  	}
>>
>>  	fclose(binary);
>>  	binary = NULL;
>>
>> -	cil_log(CIL_INFO, "Writing file contexts\n");
>> -
>>  	rc = cil_filecons_to_string(db, &fc_buf, &fc_size);
>>  	if (rc != SEPOL_OK) {
>> -		cil_log(CIL_ERR, "Failed to get file context data\n");
>> +		fprintf(stderr, "Failed to get file context data\n");
>>  		goto exit;
>>  	}
>>
>> @@ -308,12 +304,12 @@ int main(int argc, char *argv[])
>>  	}
>>
>>  	if (file_contexts == NULL) {
>> -		cil_log(CIL_ERR, "Failed to open file_contexts file\n");
>> +		fprintf(stderr, "Failed to open file_contexts file\n");
>>  		goto exit;
>>  	}
>>
>>  	if (fwrite(fc_buf, sizeof(char), fc_size, file_contexts) != fc_size) {
>> -		cil_log(CIL_ERR, "Failed to write file_contexts file\n");
>> +		fprintf(stderr, "Failed to write file_contexts file\n");
>>  		goto exit;
>>  	}
>>
>> @@ -323,8 +319,6 @@ int main(int argc, char *argv[])
>>  	rc = SEPOL_OK;
>>
>>  exit:
>> -	cil_log(CIL_INFO,"Exiting\n");
>> -
>>  	if (binary != NULL) {
>>  		fclose(binary);
>>  	}
>> diff --git a/libsepol/cil/test/block_test.cil
>> b/secilc/test/block_test.cil similarity index 100% rename from
>> libsepol/cil/test/block_test.cil rename to secilc/test/block_test.cil
>> diff --git a/libsepol/cil/test/in_test.cil b/secilc/test/in_test.cil
>> similarity index 100% rename from libsepol/cil/test/in_test.cil rename
>> to secilc/test/in_test.cil diff --git
>> a/libsepol/cil/test/integration.cil b/secilc/test/integration.cil
>> similarity index 100% rename from libsepol/cil/test/integration.cil
>> rename to secilc/test/integration.cil diff --git
>> a/libsepol/cil/test/minimum.cil b/secilc/test/minimum.cil similarity
>> index 100% rename from libsepol/cil/test/minimum.cil rename to
>> secilc/test/minimum.cil diff --git
>> a/libsepol/cil/test/name_resolution_test.cil
>> b/secilc/test/name_resolution_test.cil
>> similarity index 100%
>> rename from libsepol/cil/test/name_resolution_test.cil
>> rename to secilc/test/name_resolution_test.cil
>> diff --git a/libsepol/cil/test/optional_test.cil
>> b/secilc/test/optional_test.cil similarity index 100% rename from
>> libsepol/cil/test/optional_test.cil
>> rename to secilc/test/optional_test.cil diff --git
>> a/libsepol/cil/test/policy.cil b/secilc/test/policy.cil similarity
>> index 100% rename from libsepol/cil/test/policy.cil rename to
>> secilc/test/policy.cil
>>


_______________________________________________
Selinux mailing list
Selinux@xxxxxxxxxxxxx
To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx.
To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.




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

  Powered by Linux