Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/303732/?format=api
{ "id": 303732, "url": "http://patchwork.ozlabs.org/api/patches/303732/?format=api", "web_url": "http://patchwork.ozlabs.org/project/buildroot/patch/1387485489-4186-10-git-send-email-clshotwe@rockwellcollins.com/", "project": { "id": 27, "url": "http://patchwork.ozlabs.org/api/projects/27/?format=api", "name": "Buildroot development", "link_name": "buildroot", "list_id": "buildroot.buildroot.org", "list_email": "buildroot@buildroot.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<1387485489-4186-10-git-send-email-clshotwe@rockwellcollins.com>", "list_archive_url": null, "date": "2013-12-19T20:37:58", "name": "[v5,09/20] setools: new package", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": false, "hash": "8d9f3a5154dc96881aa4dad2f34bf66915b1e1a3", "submitter": { "id": 38285, "url": "http://patchwork.ozlabs.org/api/people/38285/?format=api", "name": "Clayton Shotwell", "email": "clshotwe@rockwellcollins.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/buildroot/patch/1387485489-4186-10-git-send-email-clshotwe@rockwellcollins.com/mbox/", "series": [], "comments": "http://patchwork.ozlabs.org/api/patches/303732/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/303732/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<buildroot-bounces@busybox.net>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "buildroot@lists.busybox.net" ], "Delivered-To": [ "patchwork-incoming@bilbo.ozlabs.org", "buildroot@osuosl.org" ], "Received": [ "from whitealder.osuosl.org (whitealder.osuosl.org\n\t[140.211.166.138])\n\tby ozlabs.org (Postfix) with ESMTP id 43D3D2C03B0\n\tfor <incoming@patchwork.ozlabs.org>;\n\tFri, 20 Dec 2013 07:40:39 +1100 (EST)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 896DC8C5BE;\n\tThu, 19 Dec 2013 20:40:38 +0000 (UTC)", "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id PS65pyiXNTIE; Thu, 19 Dec 2013 20:40:26 +0000 (UTC)", "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id DFCBC8C938;\n\tThu, 19 Dec 2013 20:39:13 +0000 (UTC)", "from whitealder.osuosl.org (whitealder.osuosl.org\n\t[140.211.166.138])\n\tby ash.osuosl.org (Postfix) with ESMTP id 72C201BF99B\n\tfor <buildroot@lists.busybox.net>;\n\tThu, 19 Dec 2013 20:39:08 +0000 (UTC)", "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 736738C5FF\n\tfor <buildroot@lists.busybox.net>;\n\tThu, 19 Dec 2013 20:39:08 +0000 (UTC)", "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id QV26eeq3xSCH for <buildroot@lists.busybox.net>;\n\tThu, 19 Dec 2013 20:38:49 +0000 (UTC)", "from secvs01.rockwellcollins.com (secvs01.rockwellcollins.com\n\t[205.175.225.240])\n\tby whitealder.osuosl.org (Postfix) with ESMTPS id 2216289892\n\tfor <buildroot@busybox.net>; Thu, 19 Dec 2013 20:38:40 +0000 (UTC)", "from nosuchhost.198.131.in-addr.arpa (HELO\n\tcollinscrsmtp01.rockwellcollins.com) ([131.198.63.132])\n\tby mail-virt.rockwellcollins.com with ESMTP;\n\t19 Dec 2013 14:38:22 -0600", "from nyx ([131.198.63.11])\n\tby collinscrsmtp01.rockwellcollins.com (Lotus Domino Release 8.5.2FP2\n\tHF162) with ESMTP id 2013121914382196-2990142 ;\n\tThu, 19 Dec 2013 14:38:21 -0600 " ], "X-Virus-Scanned": [ "amavisd-new at osuosl.org", "amavisd-new at osuosl.org" ], "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6", "From": "Clayton Shotwell <clshotwe@rockwellcollins.com>", "To": "buildroot@busybox.net", "Date": "Thu, 19 Dec 2013 14:37:58 -0600", "Message-Id": "<1387485489-4186-10-git-send-email-clshotwe@rockwellcollins.com>", "X-Mailer": "git-send-email 1.7.1", "In-Reply-To": "<1387485489-4186-1-git-send-email-clshotwe@rockwellcollins.com>", "References": "<1387485489-4186-1-git-send-email-clshotwe@rockwellcollins.com>", "X-MIMETrack": "Itemize by SMTP Server on\n\tCollinsCRSMTP01/CedarRapids/Collins/Rockwell(Release\n\t8.5.2FP2 HF162|May 16, 2011) at 12/19/2013 02:38:22 PM,\n\tSerialize by Router on\n\tCollinsCRSMTP01/CedarRapids/Collins/Rockwell(Release\n\t8.5.2FP2 HF162|May 16, 2011) at 12/19/2013 02:38:22 PM,\n\tSerialize complete at 12/19/2013 02:38:22 PM", "Cc": "Clayton Shotwell <clshotwe@rockwellcollins.com>", "Subject": "[Buildroot] [PATCH v5 09/20] setools: new package", "X-BeenThere": "buildroot@busybox.net", "X-Mailman-Version": "2.1.14", "Precedence": "list", "List-Id": "Discussion and development of buildroot <buildroot.busybox.net>", "List-Unsubscribe": "<http://lists.busybox.net/mailman/options/buildroot>,\n\t<mailto:buildroot-request@busybox.net?subject=unsubscribe>", "List-Archive": "<http://lists.busybox.net/pipermail/buildroot>", "List-Post": "<mailto:buildroot@busybox.net>", "List-Help": "<mailto:buildroot-request@busybox.net?subject=help>", "List-Subscribe": "<http://lists.busybox.net/mailman/listinfo/buildroot>,\n\t<mailto:buildroot-request@busybox.net?subject=subscribe>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"us-ascii\"", "Content-Transfer-Encoding": "7bit", "Errors-To": "buildroot-bounces@busybox.net", "Sender": "buildroot-bounces@busybox.net" }, "content": "Signed-off-by: Clayton Shotwell <clshotwe@rockwellcollins.com>\n---\nChanges v4 -> v5:\n - Changing the host version python bindings to depend on the target\n python bindings flag.\nChanges v3 -> v4:\n - Added back in the Python bindings configure option instead of\n relying on the Python package check (suggested by Thomas).\n - Revised the configure comments (suggested by Thomas).\nChanges v2 -> v3:\n - Changes patch naming convention (suggested by Thomas).\n - Added dependencies on BR2_TOOLCHAIN_HAS_THREADS and BR2_LARGEFILE\n (suggested by Thomas).\nChanges v1 -> v2:\n - General cleanup to the mk file to conform to the standard format.\n - Cleaned up the patch to include a signed-off-by line.\n - Changed package dependencies into selects in the config.\n - Changed the original Python select in the Config.in to be a check\n in the mk file.\n---\n package/Config.in | 1 +\n package/setools/Config.in | 33 +\n .../setools/setools-0001-cross-compile-fixes.patch | 121 +++\n .../setools-0002-swig-typedef-python-fixes.patch | 1014 ++++++++++++++++++++\n package/setools/setools.mk | 85 ++\n 5 files changed, 1254 insertions(+), 0 deletions(-)\n create mode 100644 package/setools/Config.in\n create mode 100644 package/setools/setools-0001-cross-compile-fixes.patch\n create mode 100644 package/setools/setools-0002-swig-typedef-python-fixes.patch\n create mode 100644 package/setools/setools.mk", "diff": "diff --git a/package/Config.in b/package/Config.in\nindex a838d6e..c4dc341 100644\n--- a/package/Config.in\n+++ b/package/Config.in\n@@ -952,6 +952,7 @@ endmenu\n \n menu \"Security\"\n source \"package/sepolgen/Config.in\"\n+source \"package/setools/Config.in\"\n endmenu\n \n menu \"Shell and utilities\"\ndiff --git a/package/setools/Config.in b/package/setools/Config.in\nnew file mode 100644\nindex 0000000..3344ed3\n--- /dev/null\n+++ b/package/setools/Config.in\n@@ -0,0 +1,33 @@\n+config BR2_PACKAGE_SETOOLS\n+\tbool \"setools\"\n+\tselect BR2_PACKAGE_LIBSELINUX\n+\tselect BR2_PACKAGE_SQLITE\n+\tselect BR2_PACKAGE_LIBXML2\n+\tselect BR2_PACKAGE_BZIP2\n+\tdepends on BR2_TOOLCHAIN_HAS_THREADS\n+\tdepends on BR2_LARGEFILE\n+\thelp\n+\t SETools is an open source project designed to facilitate\n+\t SELinux policy analysis. The primary tools are:\n+\t * apol - analyze a SELinux policy.\n+\t * seaudit - analyze audit messages from SELinux.\n+\t * seaudit-report - generate highly-customized audit log\n+\t reports.\n+\t * sechecker - command line tool for performing modular\n+\t checks on an SELinux policy.\n+\t * sediff - semantic policy difference tool for SELinux.\n+\t * secmds - command-line tools to analyze and search SELinux\n+ policy.\n+\n+comment \"setools needs a toolchain w/ largefile, threads\"\n+\tdepends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_LARGEFILE\n+\n+if BR2_PACKAGE_SETOOLS\n+\n+config BR2_PACKAGE_SETOOLS_PYTHON_BINDINGS\n+\tbool \"python bindings\"\n+\tselect BR2_PACKAGE_PYTHON\n+\thelp\n+\t enable building python bindings\n+\n+endif\ndiff --git a/package/setools/setools-0001-cross-compile-fixes.patch b/package/setools/setools-0001-cross-compile-fixes.patch\nnew file mode 100644\nindex 0000000..c931039\n--- /dev/null\n+++ b/package/setools/setools-0001-cross-compile-fixes.patch\n@@ -0,0 +1,121 @@\n+Correct build issues to enable cross compiling. These rechanges require the\n+package to be auto reconfigured. \n+\n+Signed-off-by Clayton Shotwell <clshotwe@rockwellcollins.com>\n+\n+diff -urN a/configure.ac b/configure.ac\n+--- a/configure.ac\t2013-01-16 10:36:24.000000000 -0600\n++++ b/configure.ac\t2013-07-12 08:22:10.380255248 -0500\n+@@ -448,8 +448,9 @@\n+ sepol_srcdir=\"\")\n+ if test \"x${sepol_srcdir}\" = \"x\"; then\n+ sepol_srcdir=${sepol_devel_libdir}\n+- AC_CHECK_FILE([${sepol_srcdir}/libsepol.a],,\n+- AC_MSG_ERROR([make sure libsepol-static is installed]))\n++ if test ! -f ${sepol_srcdir}/libsepol.a; then\n++ AC_MSG_ERROR([could not find precompiled libsepol.a])\n++ fi\n+ else\n+ AC_MSG_CHECKING([for compatible sepol source tree])\n+ sepol_version=${sepol_srcdir}/VERSION\n+@@ -484,8 +485,9 @@\n+ AC_CHECK_HEADER([sepol/policydb/policydb.h], , AC_MSG_ERROR([could not find sepol source tree]))\n+ CFLAGS=\"${sepol_src_save_CFLAGS}\"\n+ CPPFLAGS=\"${sepol_src_save_CPPFLAGS}\"\n+- AC_CHECK_FILE([${sepol_srcdir}/libsepol.a],,\n+- AC_MSG_ERROR([could not find precompiled libsepol.a]))\n++ if test ! -f ${sepol_srcdir}/libsepol.a; then\n++ AC_MSG_ERROR([could not find precompiled libsepol.a])\n++ fi\n+ sepol_devel_incdir=\"${sepol_srcdir}/../include\"\n+ fi\n+ SELINUX_CFLAGS=\"-I${sepol_devel_incdir} -I${selinux_devel_incdir}\"\n+@@ -578,12 +580,13 @@\n+ [AC_LANG_SOURCE([\n+ #include <sepol/policydb/expand.h>\n+ int main () {\n+- return expand_module_avrules(NULL, NULL, NULL, NULL, NULL, 0, 0);\n++ return expand_module_avrules(NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0);\n+ }])],\n+ AC_MSG_RESULT([yes]),\n+ AC_MSG_ERROR([this version of libsepol is incompatible with SETools]))\n+ fi\n+ sepol_new_expand_boolmap=\"yes\"\n++ sepol_new_user_role_mapping=\"yes\"\n+ else\n+ sepol_new_expand_boolmap=\"no\"\n+ fi\n+@@ -607,7 +610,8 @@\n+ exit(EXIT_FAILURE);\n+ }])],\n+ sepol_policy_version_max=`cat conftest.data`,\n+- AC_MSG_FAILURE([could not determine maximum libsepol policy version]))\n++ AC_MSG_FAILURE([could not determine maximum libsepol policy version]),\n++ sepol_policy_version_max=\"26\")\n+ AC_DEFINE_UNQUOTED(SEPOL_POLICY_VERSION_MAX, ${sepol_policy_version_max}, [maximum policy version supported by libsepol])\n+ CFLAGS=\"${sepol_save_CFLAGS}\"\n+ CPPFLAGS=\"${sepol_save_CPPFLAGS}\"\n+@@ -631,7 +635,7 @@\n+ changequote([,])dnl\n+ selinux_save_CFLAGS=\"${CFLAGS}\"\n+ CFLAGS=\"${SELINUX_CFLAGS} ${SELINUX_LIB_FLAG} -lselinux -lsepol ${CFLAGS}\"\n+- gcc ${CFLAGS} -o conftest conftest.c >&5\n++ ${CC} ${CFLAGS} -o conftest conftest.c >&5\n+ selinux_policy_dir=`./conftest`\n+ AC_MSG_RESULT(${selinux_policy_dir})\n+ CFLAGS=\"${selinux_save_CFLAGS}\"\n+diff -urN a/libqpol/src/policy_define.c b/libqpol/src/policy_define.c\n+--- a/libqpol/src/policy_define.c\t2013-01-16 10:36:24.000000000 -0600\n++++ b/libqpol/src/policy_define.c\t2013-07-12 08:22:10.380255248 -0500\n+@@ -2135,7 +2135,7 @@\n+ #ifdef HAVE_SEPOL_ROLE_ATTRS\n+ \tif (role_set_expand(&roles, &e_roles, policydbp, NULL, NULL))\n+ #elif HAVE_SEPOL_USER_ROLE_MAPPING\n+-\tif (role_set_expand(&roles, &e_roles, policydbp, NULL))\n++\tif (role_set_expand(&roles, &e_roles, policydbp, NULL, NULL))\n+ #else\n+ \tif (role_set_expand(&roles, &e_roles, policydbp))\n+ #endif\n+diff -urN a/m4/ac_python_devel.m4 b/m4/ac_python_devel.m4\n+--- a/m4/ac_python_devel.m4\t2013-01-16 10:36:22.000000000 -0600\n++++ b/m4/ac_python_devel.m4\t2013-07-12 08:22:10.380255248 -0500\n+@@ -234,7 +234,7 @@\n+ \tAC_MSG_CHECKING([consistency of all components of python development environment])\n+ \tAC_LANG_PUSH([C])\n+ \t# save current global flags\n+-\tLIBS=\"$ac_save_LIBS $PYTHON_LDFLAGS\"\n++\tLIBS=\"$ac_save_LIBS $PYTHON_EXTRA_LIBS $PYTHON_LDFLAGS\"\n+ \tCPPFLAGS=\"$ac_save_CPPFLAGS $PYTHON_CPPFLAGS\"\n+ \tAC_TRY_LINK([\n+ \t\t#include <Python.h>\n+diff -urN a/python/setools/Makefile.am b/python/setools/Makefile.am\n+--- a/python/setools/Makefile.am\t2013-01-16 10:36:22.000000000 -0600\n++++ b/python/setools/Makefile.am\t2013-07-12 08:22:19.200251011 -0500\n+@@ -22,13 +22,13 @@\n+ python-build: sesearch.c seinfo.c\n+ \t@mkdir -p setools\n+ \t@cp __init__.py setools\n+-\tLIBS=\"$(QPOL_LIB_FLAG) $(APOL_LIB_FLAG)\" INCLUDES=\"$(QPOL_CFLAGS) $(APOL_CFLAGS)\" $(PYTHON) setup.py build\n++\tLIBS=\"$(QPOL_LIB_FLAG) $(APOL_LIB_FLAG)\" LIBDIRS=\"$(PYTHON_LDFLAGS)\" INCLUDES=\"$(PYTHON_CPPFLAGS) $(QPOL_CFLAGS) $(APOL_CFLAGS)\" CC=\"$(CC)\" CFLAGS=\"$(CFLAGS)\" LDSHARED=\"$(CC) -shared\" LDFLAGS=\"$(LDFLAGS)\" $(PYTHON) setup.py build_ext\n+ \n+ install-exec-hook:\n+-\t$(PYTHON) setup.py install `test -n \"$(DESTDIR)\" && echo --root $(DESTDIR)`\n++\t$(PYTHON) setup.py install `test -n \"$(DESTDIR)\" && echo --prefix=$(DESTDIR)/usr`\n+ \n+ uninstall-hook: \n+-\t$(PYTHON) setup.py uninstall `test -n \"$(DESTDIR)\" && echo --root $(DESTDIR)`\n++\t$(PYTHON) setup.py uninstall `test -n \"$(DESTDIR)\" && echo --prefix=$(DESTDIR)/usr`\n+ \n+ clean-local:\n+ \t$(PYTHON) setup.py clean -a \n+--- a/python/setools/setup.py\t2013-01-16 10:36:22.000000000 -0600\n++++ b/python/setools/setup.py\t2013-09-04 09:17:48.452916991 -0500\n+@@ -8,7 +8,7 @@\n+ try:\n+ inc=os.getenv(\"INCLUDES\").split(\" \") \n+ INCLUDES=map(lambda x: x[2:], inc)\n+- LIBDIRS=map(lambda x: \"/\".join(x.split(\"/\")[:-1]), os.getenv(\"LIBS\").split())\n++ LIBDIRS=map(lambda x: \"/\".join(x.split(\"/\")[:-1]), os.getenv(\"LIBS\").split()) + map(lambda x: x[2:], os.getenv(\"LIBDIRS\").split())\n+ except:\n+ INCLUDES=\"\"\n+ LIBDIRS=\"\"\ndiff --git a/package/setools/setools-0002-swig-typedef-python-fixes.patch b/package/setools/setools-0002-swig-typedef-python-fixes.patch\nnew file mode 100644\nindex 0000000..999fed4\n--- /dev/null\n+++ b/package/setools/setools-0002-swig-typedef-python-fixes.patch\n@@ -0,0 +1,1014 @@\n+Correct swig typdef naming convention errors that cause the build to break. \n+\n+Signed-off-by Clayton Shotwell <clshotwe@rockwellcollins.com>\n+\n+--- a/libapol/swig/apol.i\t2010-04-23 11:22:08.000000000 -0500\n++++ b/libapol/swig/apol.i\t2012-08-29 08:04:29.000000000 -0500\n+@@ -232,7 +232,7 @@\n+ %newobject wrap_apol_str_to_internal_ip(char*);\n+ %rename(apol_str_to_internal_ip) wrap_apol_str_to_internal_ip;\n+ %inline %{\n+-\ttypedef struct apol_ip {\n++\ttypedef struct {\n+ \t\tuint32_t ip[4];\n+ \t\tint proto;\n+ \t} apol_ip_t;\n+@@ -301,7 +301,7 @@\n+ %inline %{\n+ \ttypedef struct apol_string_vector apol_string_vector_t;\n+ %}\n+-typedef struct apol_vector {} apol_vector_t;\n++typedef struct {} apol_vector_t;\n+ %extend apol_vector_t {\n+ \tapol_vector_t() {\n+ \t\treturn apol_vector_create(NULL);\n+@@ -377,7 +377,7 @@\n+ \t\treturn apol_vector_compare(a, b, NULL, NULL, &idx);\n+ \t}\n+ %}\n+-typedef struct apol_string_vector {} apol_string_vector_t;\n++typedef struct {} apol_string_vector_t;\n+ %extend apol_string_vector_t {\n+ \tapol_string_vector_t() {\n+ \t\treturn (apol_string_vector_t*)apol_vector_create(free);\n+@@ -460,7 +460,7 @@\n+ \tAPOL_POLICY_PATH_TYPE_MONOLITHIC = 0,\n+ \tAPOL_POLICY_PATH_TYPE_MODULAR\n+ } apol_policy_path_type_e;\n+-typedef struct apol_policy_path {} apol_policy_path_t;\n++typedef struct {} apol_policy_path_t;\n+ %extend apol_policy_path_t {\n+ \tapol_policy_path_t(apol_policy_path_type_e type, char * primary, apol_string_vector_t *modules = NULL) {\n+ \t\tapol_policy_path_t *p;\n+@@ -540,7 +540,7 @@\n+ int apol_file_is_policy_path_list(const char *filename);\n+ \n+ /* apol policy */\n+-typedef struct apol_policy {} apol_policy_t;\n++typedef struct {} apol_policy_t;\n+ #define APOL_PERMMAP_MAX_WEIGHT 10\n+ #define APOL_PERMMAP_MIN_WEIGHT 1\n+ #define APOL_PERMMAP_UNMAPPED\t0x00\n+@@ -650,7 +650,7 @@\n+ };\n+ \n+ /* apol type query */\n+-typedef struct apol_type_query {} apol_type_query_t;\n++typedef struct {} apol_type_query_t;\n+ %extend apol_type_query_t {\n+ \tapol_type_query_t() {\n+ \t\tapol_type_query_t *tq;\n+@@ -692,7 +692,7 @@\n+ };\n+ \n+ /* apol attribute query */\n+-typedef struct apol_attr_query {} apol_attr_query_t;\n++typedef struct {} apol_attr_query_t;\n+ %extend apol_attr_query_t {\n+ \tapol_attr_query_t() {\n+ \t\tapol_attr_query_t *aq;\n+@@ -734,7 +734,7 @@\n+ };\n+ \n+ /* apol role query */\n+-typedef struct apol_role_query {} apol_role_query_t;\n++typedef struct {} apol_role_query_t;\n+ %extend apol_role_query_t {\n+ \tapol_role_query_t() {\n+ \t\tapol_role_query_t *rq;\n+@@ -786,7 +786,7 @@\n+ int apol_role_has_type(apol_policy_t * p, qpol_role_t * r, qpol_type_t * t);\n+ \n+ /* apol class query */\n+-typedef struct apol_class_query {} apol_class_query_t;\n++typedef struct {} apol_class_query_t;\n+ %extend apol_class_query_t {\n+ \tapol_class_query_t() {\n+ \t\tapol_class_query_t *cq;\n+@@ -837,7 +837,7 @@\n+ };\n+ \n+ /* apol common query */\n+-typedef struct apol_common_query {} apol_common_query_t;\n++typedef struct {} apol_common_query_t;\n+ %extend apol_common_query_t {\n+ \tapol_common_query_t() {\n+ \t\tapol_common_query_t *cq;\n+@@ -879,7 +879,7 @@\n+ };\n+ \n+ /* apol perm query */\n+-typedef struct apol_perm_query {} apol_perm_query_t;\n++typedef struct {} apol_perm_query_t;\n+ %extend apol_perm_query_t {\n+ \tapol_perm_query_t() {\n+ \t\tapol_perm_query_t *pq;\n+@@ -921,7 +921,7 @@\n+ };\n+ \n+ /* apol bool query */\n+-typedef struct apol_bool_query {} apol_bool_query_t;\n++typedef struct {} apol_bool_query_t;\n+ %extend apol_bool_query_t {\n+ \tapol_bool_query_t() {\n+ \t\tapol_bool_query_t *bq;\n+@@ -963,7 +963,7 @@\n+ };\n+ \n+ /* apol mls level */\n+-typedef struct apol_mls_level {} apol_mls_level_t;\n++typedef struct {} apol_mls_level_t;\n+ %extend apol_mls_level_t {\n+ \tapol_mls_level_t() {\n+ \t\tapol_mls_level_t *aml;\n+@@ -1122,11 +1122,11 @@\n+ %typemap(in) apol_mls_level_t *lvl {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_mls_level, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_mls_level_t, 0 | 0 );\n+ \t$1 = (apol_mls_level_t*)x;\n+ }\n+ #endif\n+-typedef struct apol_mls_range {} apol_mls_range_t;\n++typedef struct {} apol_mls_range_t;\n+ %extend apol_mls_range_t {\n+ \tapol_mls_range_t() {\n+ \t\tapol_mls_range_t *amr;\n+@@ -1276,7 +1276,7 @@\n+ %}\n+ \n+ /* apol level query */\n+-typedef struct apol_level_query {} apol_level_query_t;\n++typedef struct {} apol_level_query_t;\n+ %extend apol_level_query_t {\n+ \tapol_level_query_t() {\n+ \t\tapol_level_query_t * alq;\n+@@ -1327,7 +1327,7 @@\n+ };\n+ \n+ /* apol cat query */\n+-typedef struct apol_cat_query {} apol_cat_query_t;\n++typedef struct {} apol_cat_query_t;\n+ %extend apol_cat_query_t {\n+ \tapol_cat_query_t() {\n+ \t\tapol_cat_query_t * acq;\n+@@ -1373,11 +1373,11 @@\n+ %typemap(in) apol_mls_range_t *rng {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_mls_range, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_mls_range_t, 0 | 0 );\n+ \t$1 = (apol_mls_range_t*)x;\n+ }\n+ #endif\n+-typedef struct apol_user_query {} apol_user_query_t;\n++typedef struct {} apol_user_query_t;\n+ %extend apol_user_query_t {\n+ \tapol_user_query_t() {\n+ \t\tapol_user_query_t *auq;\n+@@ -1446,7 +1446,7 @@\n+ };\n+ \n+ /* apol context */\n+-typedef struct apol_context {} apol_context_t;\n++typedef struct {} apol_context_t;\n+ %extend apol_context_t {\n+ \tapol_context_t() {\n+ \t\tapol_context_t *ctx;\n+@@ -1581,7 +1581,7 @@\n+ int apol_context_compare(apol_policy_t * p, apol_context_t * target, apol_context_t * search, unsigned int range_compare_type);\n+ \n+ /* apol constraint query */\n+-typedef struct apol_constraint_query {} apol_constraint_query_t;\n++typedef struct {} apol_constraint_query_t;\n+ %extend apol_constraint_query_t {\n+ \tapol_constraint_query_t() {\n+ \t\tapol_constraint_query_t *acq;\n+@@ -1632,7 +1632,7 @@\n+ };\n+ \n+ /* apol validatetrans query */\n+-typedef struct apol_validatetrans_query {} apol_validatetrans_query_t;\n++typedef struct {} apol_validatetrans_query_t;\n+ %extend apol_validatetrans_query_t {\n+ \tapol_validatetrans_query_t() {\n+ \t\tapol_validatetrans_query_t *avq;\n+@@ -1678,11 +1678,11 @@\n+ %typemap(in) apol_context_t *ctx {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_context, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_context_t, 0 | 0 );\n+ \t$1 = (apol_context_t*)x;\n+ }\n+ #endif\n+-typedef struct apol_genfscon_query {} apol_genfscon_query_t;\n++typedef struct {} apol_genfscon_query_t;\n+ %extend apol_genfscon_query_t {\n+ \tapol_genfscon_query_t() {\n+ \t\tapol_genfscon_query_t *agq;\n+@@ -1744,7 +1744,7 @@\n+ char *apol_genfscon_render(apol_policy_t * p, qpol_genfscon_t * genfscon);\n+ \n+ /* apol fs_use query */\n+-typedef struct apol_fs_use_query {} apol_fs_use_query_t;\n++typedef struct {} apol_fs_use_query_t;\n+ %extend apol_fs_use_query_t {\n+ \tapol_fs_use_query_t() {\n+ \t\tapol_fs_use_query_t *afq;\n+@@ -1797,7 +1797,7 @@\n+ char *apol_fs_use_render(apol_policy_t * p, qpol_fs_use_t * fsuse);\n+ \n+ /* apol initial sid query */\n+-typedef struct apol_isid_query {} apol_isid_query_t;\n++typedef struct {} apol_isid_query_t;\n+ %extend apol_isid_query_t {\n+ \tapol_isid_query_t() {\n+ \t\tapol_isid_query_t *aiq;\n+@@ -1839,7 +1839,7 @@\n+ };\n+ \n+ /* apol portcon query */\n+-typedef struct apol_portcon_query {} apol_portcon_query_t;\n++typedef struct {} apol_portcon_query_t;\n+ %extend apol_portcon_query_t {\n+ \tapol_portcon_query_t() {\n+ \t\tapol_portcon_query_t *apq;\n+@@ -1883,7 +1883,7 @@\n+ char *apol_portcon_render(apol_policy_t * p, qpol_portcon_t * portcon);\n+ \n+ /* apol netifcon query */\n+-typedef struct apol_netifcon_query {} apol_netifcon_query_t;\n++typedef struct {} apol_netifcon_query_t;\n+ %extend apol_netifcon_query_t {\n+ \tapol_netifcon_query_t() {\n+ \t\tapol_netifcon_query_t *anq;\n+@@ -1930,7 +1930,7 @@\n+ char *apol_netifcon_render(apol_policy_t * p, qpol_netifcon_t * netifcon);\n+ \n+ /* apol nodecon query */\n+-typedef struct apol_nodecon_query {} apol_nodecon_query_t;\n++typedef struct {} apol_nodecon_query_t;\n+ %extend apol_nodecon_query_t {\n+ \tapol_nodecon_query_t() {\n+ \t\tapol_nodecon_query_t *anq;\n+@@ -2010,7 +2010,7 @@\n+ char *apol_nodecon_render(apol_policy_t * p, qpol_nodecon_t * nodecon);\n+ \n+ /* apol avrule query */\n+-typedef struct apol_avrule_query {} apol_avrule_query_t;\n++typedef struct {} apol_avrule_query_t;\n+ %extend apol_avrule_query_t {\n+ \tapol_avrule_query_t() {\n+ \t\tapol_avrule_query_t *avq;\n+@@ -2161,7 +2161,7 @@\n+ %}\n+ \n+ /* apol terule query */\n+-typedef struct apol_terule_query {} apol_terule_query_t;\n++typedef struct {} apol_terule_query_t;\n+ %extend apol_terule_query_t {\n+ \tapol_terule_query_t() {\n+ \t\tapol_terule_query_t *atq;\n+@@ -2285,7 +2285,7 @@\n+ apol_vector_t *apol_terule_list_to_syn_terules(apol_policy_t * p, apol_vector_t * rules);\n+ \n+ /* apol cond rule query */\n+-typedef struct apol_cond_query {} apol_cond_query_t;\n++typedef struct {} apol_cond_query_t;\n+ %extend apol_cond_query_t {\n+ \tapol_cond_query_t() {\n+ \t\tapol_cond_query_t *acq;\n+@@ -2329,7 +2329,7 @@\n+ char *apol_cond_expr_render(apol_policy_t * p, qpol_cond_t * cond);\n+ \n+ /* apol role allow query */\n+-typedef struct apol_role_allow_query {} apol_role_allow_query_t;\n++typedef struct {} apol_role_allow_query_t;\n+ %extend apol_role_allow_query_t {\n+ \tapol_role_allow_query_t() {\n+ \t\tapol_role_allow_query_t *arq;\n+@@ -2385,7 +2385,7 @@\n+ char *apol_role_allow_render(apol_policy_t * policy, qpol_role_allow_t * rule);\n+ \n+ /* apol role transition rule query */\n+-typedef struct apol_role_trans_query {} apol_role_trans_query_t;\n++typedef struct {} apol_role_trans_query_t;\n+ %extend apol_role_trans_query_t {\n+ \tapol_role_trans_query_t() {\n+ \t\tapol_role_trans_query_t *arq;\n+@@ -2450,7 +2450,7 @@\n+ char *apol_role_trans_render(apol_policy_t * policy, qpol_role_trans_t * rule);\n+ \n+ /* apol range transition rule query */\n+-typedef struct apol_range_trans_query {} apol_range_trans_query_t;\n++typedef struct {} apol_range_trans_query_t;\n+ %extend apol_range_trans_query_t {\n+ \tapol_range_trans_query_t() {\n+ \t\tapol_range_trans_query_t *arq;\n+@@ -2529,7 +2529,7 @@\n+ #define APOL_DOMAIN_TRANS_SEARCH_VALID\t\t0x01\n+ #define APOL_DOMAIN_TRANS_SEARCH_INVALID\t0x02\n+ #define APOL_DOMAIN_TRANS_SEARCH_BOTH\t\t(APOL_DOMAIN_TRANS_SEARCH_VALID|APOL_DOMAIN_TRANS_SEARCH_INVALID)\n+-typedef struct apol_domain_trans_analysis {} apol_domain_trans_analysis_t;\n++typedef struct {} apol_domain_trans_analysis_t;\n+ %extend apol_domain_trans_analysis_t {\n+ \tapol_domain_trans_analysis_t() {\n+ \t\tapol_domain_trans_analysis_t *dta;\n+@@ -2620,7 +2620,7 @@\n+ \t\treturn v;\n+ \t};\n+ };\n+-typedef struct apol_domain_trans_result {} apol_domain_trans_result_t;\n++typedef struct {} apol_domain_trans_result_t;\n+ %extend apol_domain_trans_result_t {\n+ \tapol_domain_trans_result_t(apol_domain_trans_result_t *in) {\n+ \t\tapol_domain_trans_result_t *dtr;\n+@@ -2703,7 +2703,7 @@\n+ \t\t*in = NULL;\n+ \t}\n+ %}\n+-typedef struct apol_infoflow {} apol_infoflow_t;\n++typedef struct {} apol_infoflow_t;\n+ %extend apol_infoflow_t {\n+ \tapol_infoflow_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2728,7 +2728,7 @@\n+ \t\treturn v;\n+ \t};\n+ };\n+-typedef struct apol_infoflow_analysis {} apol_infoflow_analysis_t;\n++typedef struct {} apol_infoflow_analysis_t;\n+ %extend apol_infoflow_analysis_t {\n+ \tapol_infoflow_analysis_t() {\n+ \t\tapol_infoflow_analysis_t *aia;\n+@@ -2821,7 +2821,7 @@\n+ \t\treturn;\n+ \t};\n+ };\n+-typedef struct apol_infoflow_graph {} apol_infoflow_graph_t;\n++typedef struct {} apol_infoflow_graph_t;\n+ %extend apol_infoflow_graph_t {\n+ \tapol_infoflow_graph_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2865,7 +2865,7 @@\n+ \t\treturn retval;\n+ \t};\n+ };\n+-typedef struct apol_infoflow_result {} apol_infoflow_result_t;\n++typedef struct {} apol_infoflow_result_t;\n+ %extend apol_infoflow_result_t {\n+ \tapol_infoflow_result_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2899,7 +2899,7 @@\n+ \t\treturn (apol_infoflow_result_t*)x;\n+ \t};\n+ %}\n+-typedef struct apol_infoflow_step {} apol_infoflow_step_t;\n++typedef struct {} apol_infoflow_step_t;\n+ %extend apol_infoflow_step_t {\n+ \tapol_infoflow_step_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2936,7 +2936,7 @@\n+ #define APOL_RELABEL_DIR_FROM 0x02\n+ #define APOL_RELABEL_DIR_BOTH (APOL_RELABEL_DIR_TO|APOL_RELABEL_DIR_FROM)\n+ #define APOL_RELABEL_DIR_SUBJECT 0x04\n+-typedef struct apol_relabel_analysis {} apol_relabel_analysis_t;\n++typedef struct {} apol_relabel_analysis_t;\n+ %extend apol_relabel_analysis_t {\n+ \tapol_relabel_analysis_t() {\n+ \t\tapol_relabel_analysis_t *ara;\n+@@ -3009,7 +3009,7 @@\n+ \t\treturn;\n+ \t};\n+ };\n+-typedef struct apol_relabel_result {} apol_relabel_result_t;\n++typedef struct {} apol_relabel_result_t;\n+ %extend apol_relabel_result_t {\n+ \tapol_relabel_result_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -3040,7 +3040,7 @@\n+ \t\treturn (apol_relabel_result_t*)x;\n+ \t};\n+ %}\n+-typedef struct apol_relabel_result_pair {} apol_relabel_result_pair_t;\n++typedef struct {} apol_relabel_result_pair_t;\n+ %extend apol_relabel_result_pair_t {\n+ \tapol_relabel_result_pair_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -3082,7 +3082,7 @@\n+ #define APOL_TYPES_RELATION_DIRECT_FLOW 0x1000\n+ #define APOL_TYPES_RELATION_TRANS_FLOW_AB 0x4000\n+ #define APOL_TYPES_RELATION_TRANS_FLOW_BA 0x8000\n+-typedef struct apol_types_relation_analysis {} apol_types_relation_analysis_t;\n++typedef struct {} apol_types_relation_analysis_t;\n+ %extend apol_types_relation_analysis_t {\n+ \tapol_types_relation_analysis_t() {\n+ \t\tapol_types_relation_analysis_t *atr;\n+@@ -3137,7 +3137,7 @@\n+ \t\treturn;\n+ \t};\n+ };\n+-typedef struct apol_types_relation_result {} apol_types_relation_result_t;\n++typedef struct {} apol_types_relation_result_t;\n+ %extend apol_types_relation_result_t {\n+ \tapol_types_relation_result_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -3192,7 +3192,7 @@\n+ \t\treturn apol_types_relation_result_get_domainsBA(self);\n+ \t};\n+ };\n+-typedef struct apol_types_relation_access {} apol_types_relation_access_t;\n++typedef struct {} apol_types_relation_access_t;\n+ %extend apol_types_relation_access_t {\n+ \tapol_types_relation_access_t() {\n+ \t\tBEGIN_EXCEPTION\n+--- a/libqpol/swig/qpol.i\t2010-04-30 11:23:28.000000000 -0500\n++++ b/libqpol/swig/qpol.i\t2012-08-29 07:52:17.000000000 -0500\n+@@ -226,7 +226,7 @@\n+ #define QPOL_MODULE_UNKNOWN 0\n+ #define QPOL_MODULE_BASE 1\n+ #define QPOL_MODULE_OTHER 2\n+-typedef struct qpol_module {} qpol_module_t;\n++typedef struct {} qpol_module_t;\n+ %extend qpol_module_t {\n+ \tqpol_module_t(const char *path) {\n+ \t\tqpol_module_t *m;\n+@@ -310,7 +310,7 @@\n+ #define QPOL_POLICY_OPTION_NO_NEVERALLOWS 0x00000001\n+ #define QPOL_POLICY_OPTION_NO_RULES 0x00000002\n+ #define QPOL_POLICY_OPTION_MATCH_SYSTEM 0x00000004\n+-typedef struct qpol_policy {} qpol_policy_t;\n++typedef struct {} qpol_policy_t;\n+ typedef void (*qpol_callback_fn_t) (void *varg, struct qpol_policy * policy, int level, const char *fmt, va_list va_args);\n+ #define QPOL_POLICY_UNKNOWN -1\n+ #define QPOL_POLICY_KERNEL_SOURCE 0\n+@@ -684,7 +684,7 @@\n+ };\n+ \n+ /* qpol iterator */\n+-typedef struct qpol_iterator {} qpol_iterator_t;\n++typedef struct {} qpol_iterator_t;\n+ %extend qpol_iterator_t {\n+ \t/* user never directly creates, but SWIG expects a constructor */\n+ \tqpol_iterator_t() {\n+@@ -734,7 +734,7 @@\n+ };\n+ \n+ /* qpol type */\n+-typedef struct qpol_type {} qpol_type_t;\n++typedef struct {} qpol_type_t;\n+ %extend qpol_type_t {\n+ \tqpol_type_t(qpol_policy_t *p, const char *name) {\n+ \t\tBEGIN_EXCEPTION\n+@@ -849,7 +849,7 @@\n+ %}\n+ \n+ /* qpol role */\n+-typedef struct qpol_role {} qpol_role_t;\n++typedef struct {} qpol_role_t;\n+ %extend qpol_role_t {\n+ \tqpol_role_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_role_t *r;\n+@@ -917,7 +917,7 @@\n+ %}\n+ \n+ /* qpol level */\n+-typedef struct qpol_level {} qpol_level_t;\n++typedef struct {} qpol_level_t;\n+ %extend qpol_level_t {\n+ \tqpol_level_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_level_t *l;\n+@@ -995,7 +995,7 @@\n+ %}\n+ \n+ /* qpol cat */\n+-typedef struct qpol_cat {} qpol_cat_t;\n++typedef struct {} qpol_cat_t;\n+ %extend qpol_cat_t {\n+ \tqpol_cat_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_cat_t *c;\n+@@ -1062,7 +1062,7 @@\n+ %}\n+ \n+ /* qpol mls range */\n+-typedef struct qpol_mls_range {} qpol_mls_range_t;\n++typedef struct {} qpol_mls_range_t;\n+ %extend qpol_mls_range_t {\n+ \tqpol_mls_range_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -1103,7 +1103,7 @@\n+ %}\n+ \n+ /* qpol mls level */\n+-typedef struct qpol_mls_level {} qpol_mls_level_t;\n++typedef struct {} qpol_mls_level_t;\n+ %extend qpol_mls_level_t {\n+ \tqpol_mls_level_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -1145,7 +1145,7 @@\n+ %}\n+ \n+ /* qpol user */\n+-typedef struct qpol_user {} qpol_user_t;\n++typedef struct {} qpol_user_t;\n+ %extend qpol_user_t {\n+ \tqpol_user_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_user_t *u;\n+@@ -1221,7 +1221,7 @@\n+ %}\n+ \n+ /* qpol bool */\n+-typedef struct qpol_bool {} qpol_bool_t;\n++typedef struct {} qpol_bool_t;\n+ %extend qpol_bool_t {\n+ \tqpol_bool_t(qpol_policy_t *p, const char *name) {\n+ \t\tqpol_bool_t *b;\n+@@ -1293,7 +1293,7 @@\n+ %}\n+ \n+ /* qpol context */\n+-typedef struct qpol_context {} qpol_context_t;\n++typedef struct {} qpol_context_t;\n+ %extend qpol_context_t {\n+ \tqpol_context_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -1354,7 +1354,7 @@\n+ %}\n+ \n+ /* qpol class */\n+-typedef struct qpol_class {} qpol_class_t;\n++typedef struct {} qpol_class_t;\n+ %extend qpol_class_t {\n+ \tqpol_class_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_class_t *c;\n+@@ -1441,7 +1441,7 @@\n+ %}\n+ \n+ /* qpol common */\n+-typedef struct qpol_common {} qpol_common_t;\n++typedef struct {} qpol_common_t;\n+ %extend qpol_common_t {\n+ \tqpol_common_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_common_t *c;\n+@@ -1514,7 +1514,7 @@\n+ #define QPOL_FS_USE_NONE 5U\n+ #define QPOL_FS_USE_PSID 6U\n+ #endif\n+-typedef struct qpol_fs_use {} qpol_fs_use_t;\n++typedef struct {} qpol_fs_use_t;\n+ %extend qpol_fs_use_t {\n+ \tqpol_fs_use_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_fs_use_t *f;\n+@@ -1592,7 +1592,7 @@\n+ #define QPOL_CLASS_LNK_FILE 9U\n+ #define QPOL_CLASS_SOCK_FILE 12U\n+ #endif\n+-typedef struct qpol_genfscon {} qpol_genfscon_t;\n++typedef struct {} qpol_genfscon_t;\n+ %extend qpol_genfscon_t {\n+ \tqpol_genfscon_t(qpol_policy_t *p, const char *name, const char *path) {\n+ \t\tqpol_genfscon_t *g;\n+@@ -1655,7 +1655,7 @@\n+ %}\n+ \n+ /* qpol isid */\n+-typedef struct qpol_isid {} qpol_isid_t;\n++typedef struct {} qpol_isid_t;\n+ %extend qpol_isid_t {\n+ \tqpol_isid_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_isid_t *i;\n+@@ -1699,7 +1699,7 @@\n+ %}\n+ \n+ /* qpol netifcon */\n+-typedef struct qpol_netifcon {} qpol_netifcon_t;\n++typedef struct {} qpol_netifcon_t;\n+ %extend qpol_netifcon_t {\n+ \tqpol_netifcon_t(qpol_policy_t *p, const char *name) {\n+ \t\tconst qpol_netifcon_t *n;\n+@@ -1755,7 +1755,7 @@\n+ /* qpol nodecon */\n+ #define QPOL_IPV4 0\n+ #define QPOL_IPV6 1\n+-typedef struct qpol_nodecon {} qpol_nodecon_t;\n++typedef struct {} qpol_nodecon_t;\n+ %extend qpol_nodecon_t {\n+ \tqpol_nodecon_t(qpol_policy_t *p, int addr[4], int mask[4], int protocol) {\n+ \t\tuint32_t a[4], m[4];\n+@@ -1828,7 +1828,7 @@\n+ /* from netinet/in.h */\n+ #define IPPROTO_TCP 6\n+ #define IPPROTO_UDP 17\n+-typedef struct qpol_portcon {} qpol_portcon_t;\n++typedef struct {} qpol_portcon_t;\n+ %extend qpol_portcon_t {\n+ \tqpol_portcon_t(qpol_policy_t *p, uint16_t low, uint16_t high, uint8_t protocol) {\n+ \t\tconst qpol_portcon_t *qp;\n+@@ -1892,7 +1892,7 @@\n+ %}\n+ \n+ /* qpol constraint */\n+-typedef struct qpol_constraint {} qpol_constraint_t;\n++typedef struct {} qpol_constraint_t;\n+ %extend qpol_constraint_t {\n+ \tqpol_constraint_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -1944,7 +1944,7 @@\n+ %}\n+ \n+ /* qpol validatetrans */\n+-typedef struct qpol_validatetrans {} qpol_validatetrans_t;\n++typedef struct {} qpol_validatetrans_t;\n+ %extend qpol_validatetrans_t {\n+ \tqpol_validatetrans_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2009,7 +2009,7 @@\n+ #define QPOL_CEXPR_OP_DOM 3\n+ #define QPOL_CEXPR_OP_DOMBY 4\n+ #define QPOL_CEXPR_OP_INCOMP 5\n+-typedef struct qpol_constraint_expr_node {} qpol_constraint_expr_node_t;\n++typedef struct {} qpol_constraint_expr_node_t;\n+ %extend qpol_constraint_expr_node_t {\n+ \tqpol_constraint_expr_node_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2071,7 +2071,7 @@\n+ %}\n+ \n+ /* qpol role allow */\n+-typedef struct qpol_role_allow {} qpol_role_allow_t;\n++typedef struct {} qpol_role_allow_t;\n+ %extend qpol_role_allow_t {\n+ \tqpol_role_allow_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2112,7 +2112,7 @@\n+ %}\n+ \n+ /* qpol role trans */\n+-typedef struct qpol_role_trans {} qpol_role_trans_t;\n++typedef struct {} qpol_role_trans_t;\n+ %extend qpol_role_trans_t {\n+ \tqpol_role_trans_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2163,7 +2163,7 @@\n+ %}\n+ \n+ /* qpol range trans */\n+-typedef struct qpol_range_trans {} qpol_range_trans_t;\n++typedef struct {} qpol_range_trans_t;\n+ %extend qpol_range_trans_t {\n+ \tqpol_range_trans_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2226,7 +2226,7 @@\n+ #define QPOL_RULE_NEVERALLOW 128\n+ #define QPOL_RULE_AUDITALLOW 2\n+ #define QPOL_RULE_DONTAUDIT 4\n+-typedef struct qpol_avrule {} qpol_avrule_t;\n++typedef struct {} qpol_avrule_t;\n+ %extend qpol_avrule_t {\n+ \tqpol_avrule_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2346,7 +2346,7 @@\n+ #define QPOL_RULE_TYPE_TRANS 16\n+ #define QPOL_RULE_TYPE_CHANGE 64\n+ #define QPOL_RULE_TYPE_MEMBER 32\n+-typedef struct qpol_terule {} qpol_terule_t;\n++typedef struct {} qpol_terule_t;\n+ %extend qpol_terule_t {\n+ \tqpol_terule_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2462,7 +2462,7 @@\n+ %}\n+ \n+ /* qpol conditional */\n+-typedef struct qpol_cond {} qpol_cond_t;\n++typedef struct {} qpol_cond_t;\n+ %extend qpol_cond_t {\n+ \tqpol_cond_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2555,7 +2555,7 @@\n+ #define QPOL_COND_EXPR_XOR 5 /* bool ^ bool */\n+ #define QPOL_COND_EXPR_EQ 6 /* bool == bool */\n+ #define QPOL_COND_EXPR_NEQ 7 /* bool != bool */\n+-typedef struct qpol_cond_expr_node {} qpol_cond_expr_node_t;\n++typedef struct {} qpol_cond_expr_node_t;\n+ %extend qpol_cond_expr_node_t {\n+ \tqpol_cond_expr_node_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2600,7 +2600,7 @@\n+ %}\n+ \n+ /* qpol type set */\n+-typedef struct qpol_type_set {} qpol_type_set_t;\n++typedef struct {} qpol_type_set_t;\n+ %extend qpol_type_set_t {\n+ \tqpol_type_set_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2663,7 +2663,7 @@\n+ %}\n+ \n+ /* qpol syn av rule */\n+-typedef struct qpol_syn_avrule {} qpol_syn_avrule_t;\n++typedef struct {} qpol_syn_avrule_t;\n+ %extend qpol_syn_avrule_t {\n+ \tqpol_syn_avrule_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -2776,7 +2776,7 @@\n+ %}\n+ \n+ /* qpol syn te rule */\n+-typedef struct qpol_syn_terule {} qpol_syn_terule_t;\n++typedef struct {} qpol_syn_terule_t;\n+ %extend qpol_syn_terule_t {\n+ \tqpol_syn_terule_t() {\n+ \t\tBEGIN_EXCEPTION\n+--- a/libpoldiff/swig/poldiff.i\t2007-10-31 16:03:33.000000000 -0500\n++++ b/libpoldiff/swig/poldiff.i\t2012-08-29 08:08:02.000000000 -0500\n+@@ -258,7 +258,7 @@\n+ \n+ /* for handling the get_stats function */\n+ %{\n+-\ttypedef struct poldiff_stats {\n++\ttypedef struct {\n+ \t\tsize_t stats[5];\n+ \t} poldiff_stats_t;\n+ \tpoldiff_stats_t *poldiff_stats_create() {\n+@@ -271,7 +271,7 @@\n+ \t\t*x = NULL;\n+ \t}\n+ %}\n+-typedef struct poldiff_stats {} poldiff_stats_t;\n++typedef struct {} poldiff_stats_t;\n+ %extend poldiff_stats_t {\n+ \tpoldiff_stats_t() {\n+ \t\tpoldiff_stats_t *s;\n+@@ -336,17 +336,17 @@\n+ %typemap(in) apol_policy_t *op {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_policy, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_policy_t, 0 | 0 );\n+ \t$1 = (apol_policy_t*)x;\n+ }\n+ %typemap(in) apol_policy_t *mp {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_policy, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_apol_policy_t, 0 | 0 );\n+ \t$1 = (apol_policy_t*)x;\n+ }\n+ #endif\n+-typedef struct poldiff {} poldiff_t;\n++typedef struct {} poldiff_t;\n+ %extend poldiff_t {\n+ \tpoldiff_t(apol_policy_t *op, apol_policy_t *mp) {\n+ \t\tpoldiff_t *p;\n+@@ -476,7 +476,7 @@\n+ };\n+ \n+ /* attribute diff */\n+-typedef struct poldiff_attrib {} poldiff_attrib_t;\n++typedef struct {} poldiff_attrib_t;\n+ %extend poldiff_attrib_t {\n+ poldiff_attrib_t () {\n+ BEGIN_EXCEPTION\n+@@ -521,7 +521,7 @@\n+ %}\n+ \n+ /* av rule diff */\n+-typedef struct poldiff_avrule {} poldiff_avrule_t;\n++typedef struct {} poldiff_avrule_t;\n+ %extend poldiff_avrule_t {\n+ poldiff_avrule_t() {\n+ BEGIN_EXCEPTION\n+@@ -629,7 +629,7 @@\n+ %}\n+ \n+ /* boolean diff */\n+-typedef struct poldiff_bool {} poldiff_bool_t;\n++typedef struct {} poldiff_bool_t;\n+ %extend poldiff_bool_t {\n+ \tpoldiff_bool_t() {\n+ BEGIN_EXCEPTION\n+@@ -668,7 +668,7 @@\n+ %}\n+ \n+ /* category diff */\n+-typedef struct poldiff_cat {} poldiff_cat_t;\n++typedef struct {} poldiff_cat_t;\n+ %extend poldiff_cat_t {\n+ \tpoldiff_cat_t() {\n+ BEGIN_EXCEPTION\n+@@ -707,7 +707,7 @@\n+ %}\n+ \n+ /* class diff */\n+-typedef struct poldiff_class {} poldiff_class_t;\n++typedef struct {} poldiff_class_t;\n+ %extend poldiff_class_t {\n+ \tpoldiff_class_t() {\n+ BEGIN_EXCEPTION\n+@@ -752,7 +752,7 @@\n+ %}\n+ \n+ /* common diff */\n+-typedef struct poldiff_common {} poldiff_common_t;\n++typedef struct {} poldiff_common_t;\n+ %extend poldiff_common_t {\n+ \tpoldiff_common_t() {\n+ BEGIN_EXCEPTION\n+@@ -797,7 +797,7 @@\n+ %}\n+ \n+ /* level diff */\n+-typedef struct poldiff_level {} poldiff_level_t;\n++typedef struct {} poldiff_level_t;\n+ %extend poldiff_level_t {\n+ \tpoldiff_level_t() {\n+ BEGIN_EXCEPTION\n+@@ -857,7 +857,7 @@\n+ %}\n+ \n+ /* range diff */\n+-typedef struct poldiff_range {} poldiff_range_t;\n++typedef struct {} poldiff_range_t;\n+ %extend poldiff_range_t {\n+ \tpoldiff_range_t() {\n+ BEGIN_EXCEPTION\n+@@ -908,7 +908,7 @@\n+ %}\n+ \n+ /* range_transition rule diff */\n+-typedef struct poldiff_range_trans {} poldiff_range_trans_t;\n++typedef struct {} poldiff_range_trans_t;\n+ %extend poldiff_range_trans_t {\n+ \tpoldiff_range_trans_t() {\n+ BEGIN_EXCEPTION\n+@@ -956,7 +956,7 @@\n+ %}\n+ \n+ /* role allow rule diff */\n+-typedef struct poldiff_role_allow {} poldiff_role_allow_t;\n++typedef struct {} poldiff_role_allow_t;\n+ %extend poldiff_role_allow_t {\n+ \tpoldiff_role_allow_t() {\n+ BEGIN_EXCEPTION\n+@@ -1004,7 +1004,7 @@\n+ %}\n+ \n+ /* role_transition rule diff */\n+-typedef struct poldiff_role_trans {} poldiff_role_trans_t;\n++typedef struct {} poldiff_role_trans_t;\n+ %extend poldiff_role_trans_t {\n+ \tpoldiff_role_trans_t() {\n+ BEGIN_EXCEPTION\n+@@ -1052,7 +1052,7 @@\n+ %}\n+ \n+ /* role diff */\n+-typedef struct poldiff_role {} poldiff_role_t;\n++typedef struct {} poldiff_role_t;\n+ %extend poldiff_role_t {\n+ \tpoldiff_role_t() {\n+ BEGIN_EXCEPTION\n+@@ -1097,7 +1097,7 @@\n+ %}\n+ \n+ /* te rule diff */\n+-typedef struct poldiff_terule {} poldiff_terule_t;\n++typedef struct {} poldiff_terule_t;\n+ %extend poldiff_terule_t {\n+ \tpoldiff_terule_t() {\n+ BEGIN_EXCEPTION\n+@@ -1178,7 +1178,7 @@\n+ %}\n+ \n+ /* type diff */\n+-typedef struct poldiff_type {} poldiff_type_t;\n++typedef struct {} poldiff_type_t;\n+ %extend poldiff_type_t {\n+ \tpoldiff_type_t() {\n+ BEGIN_EXCEPTION\n+@@ -1223,7 +1223,7 @@\n+ %}\n+ \n+ /* user diff */\n+-typedef struct poldiff_user {} poldiff_user_t;\n++typedef struct {} poldiff_user_t;\n+ %extend poldiff_user_t {\n+ \tpoldiff_user_t() {\n+ BEGIN_EXCEPTION\n+@@ -1280,7 +1280,7 @@\n+ %}\n+ \n+ /* type remap */\n+-typedef struct poldiff_type_remap_entry {} poldiff_type_remap_entry_t;\n++typedef struct {} poldiff_type_remap_entry_t;\n+ %extend poldiff_type_remap_entry_t {\n+ \tpoldiff_type_remap_entry_t() {\n+ BEGIN_EXCEPTION\n+--- a/libseaudit/swig/seaudit.i\t2007-10-31 16:03:33.000000000 -0500\n++++ b/libseaudit/swig/seaudit.i\t2012-08-29 08:11:39.000000000 -0500\n+@@ -240,7 +240,7 @@\n+ %{\n+ \ttypedef struct tm tm_t;\n+ %}\n+-typedef struct tm {\n++typedef struct {\n+ \tint tm_sec; /* seconds */\n+ \tint tm_min; /* minutes */\n+ \tint tm_hour; /* hours */\n+@@ -278,7 +278,7 @@\n+ \tSEAUDIT_LOG_TYPE_SYSLOG,\n+ \tSEAUDIT_LOG_TYPE_AUDITD\n+ } seaudit_log_type_e;\n+-typedef struct seaudit_log {} seaudit_log_t;\n++typedef struct {} seaudit_log_t;\n+ %extend seaudit_log_t {\n+ \tseaudit_log_t() {\n+ \t\tseaudit_log_t *slog;\n+@@ -355,7 +355,7 @@\n+ \tSEAUDIT_MESSAGE_TYPE_AVC,\n+ \tSEAUDIT_MESSAGE_TYPE_LOAD\n+ } seaudit_message_type_e;\n+-typedef struct seaudit_message {} seaudit_message_t;\n++typedef struct {} seaudit_message_t;\n+ %extend seaudit_message_t {\n+ \tseaudit_message_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -427,7 +427,7 @@\n+ %}\n+ \n+ /* seaudit load message */\n+-typedef struct seaudit_load_message {} seaudit_load_message_t;\n++typedef struct {} seaudit_load_message_t;\n+ %extend seaudit_load_message_t {\n+ \tseaudit_load_message_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -448,7 +448,7 @@\n+ %}\n+ \n+ /* seaudit bool message */\n+-typedef struct seaudit_bool_message {} seaudit_bool_message_t;\n++typedef struct {} seaudit_bool_message_t;\n+ %extend seaudit_bool_message_t {\n+ \tseaudit_bool_message_t(void *msg) {\n+ \t\tBEGIN_EXCEPTION\n+@@ -475,7 +475,7 @@\n+ \tSEAUDIT_AVC_DENIED,\n+ \tSEAUDIT_AVC_GRANTED\n+ } seaudit_avc_message_type_e;\n+-typedef struct seaudit_avc_message {} seaudit_avc_message_t;\n++typedef struct {} seaudit_avc_message_t;\n+ %extend seaudit_avc_message_t {\n+ \tseaudit_avc_message_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -606,7 +606,7 @@\n+ \tSEAUDIT_FILTER_DATE_MATCH_AFTER,\n+ \tSEAUDIT_FILTER_DATE_MATCH_BETWEEN\n+ } seaudit_filter_date_match_e;\n+-typedef struct seaudit_filter {} seaudit_filter_t;\n++typedef struct {} seaudit_filter_t;\n+ %extend seaudit_filter_t {\n+ \tseaudit_filter_t(char *name = NULL) {\n+ \t\tseaudit_filter_t *sf = NULL;\n+@@ -1012,7 +1012,7 @@\n+ %}\n+ \n+ /* seaudit sort */\n+-typedef struct seaudit_sort {} seaudit_sort_t;\n++typedef struct {} seaudit_sort_t;\n+ %extend seaudit_sort_t {\n+ \tseaudit_sort_t() {\n+ \t\tBEGIN_EXCEPTION\n+@@ -1101,17 +1101,17 @@\n+ %typemap(in) seaudit_filter_t *filter {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_seaudit_filter, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_seaudit_filter_t, 0 | 0 );\n+ \t$1 = (seaudit_filter_t*)x;\n+ }\n+ %typemap(in) seaudit_sort_t *ssort {\n+ \tvoid *x = NULL;\n+ \tPy_IncRef($input);\n+-\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_seaudit_sort, 0 | 0 );\n++\tSWIG_ConvertPtr($input, &x,SWIGTYPE_p_seaudit_sort_t, 0 | 0 );\n+ \t$1 = (seaudit_sort_t*)x;\n+ }\n+ #endif\n+-typedef struct seaudit_model {} seaudit_model_t;\n++typedef struct {} seaudit_model_t;\n+ %extend seaudit_model_t {\n+ \tseaudit_model_t(char *name = NULL, seaudit_log_t *slog = NULL) {\n+ \t\tseaudit_model_t *smod;\n+@@ -1309,7 +1309,7 @@\n+ \tSEAUDIT_REPORT_FORMAT_TEXT,\n+ \tSEAUDIT_REPORT_FORMAT_HTML\n+ } seaudit_report_format_e;\n+-typedef struct seaudit_report {} seaudit_report_t;\n++typedef struct {} seaudit_report_t;\n+ %extend seaudit_report_t {\n+ \tseaudit_report_t(seaudit_model_t *m) {\n+ \t\tseaudit_report_t *sr;\ndiff --git a/package/setools/setools.mk b/package/setools/setools.mk\nnew file mode 100644\nindex 0000000..c99cdeb\n--- /dev/null\n+++ b/package/setools/setools.mk\n@@ -0,0 +1,85 @@\n+################################################################################\n+#\n+# setools\n+#\n+################################################################################\n+\n+SETOOLS_VERSION = 3.3.8\n+SETOOLS_SOURCE = setools-$(SETOOLS_VERSION).tar.bz2\n+SETOOLS_SITE = http://oss.tresys.com/projects/setools/chrome/site/dists/setools-$(SETOOLS_VERSION)/\n+SETOOLS_DEPENDENCIES = libselinux sqlite libxml2 bzip2\n+\n+SETOOLS_INSTALL_STAGING = YES\n+\n+SETOOLS_AUTORECONF = YES\n+SETOOLS_AUTORECONF_OPT = -i -s\n+\n+# Notes: Need \"disable-selinux-check\" so the configure does not check to see if host has\n+# selinux enabled.\n+SETOOLS_CONF_OPT = \\\n+\t--disable-debug \\\n+\t--disable-gui \\\n+\t--disable-bwidget-check \\\n+\t--disable-selinux-check \\\n+\t--disable-swig-java \\\n+\t--disable-swig-python \\\n+\t--disable-swig-tcl \\\n+\t--with-sepol-devel=\"$(STAGING_DIR)/usr\" \\\n+\t--with-selinux-devel=\"$(STAGING_DIR)/usr\" \\\n+\n+ifeq ($(BR2_PACKAGE_SETOOLS_PYTHON_BINDINGS),y)\n+\tSETOOLS_DEPENDENCIES += python host-python host-swig \n+\tSETOOLS_CONF_ENV += am_cv_pathless_PYTHON=python \\\n+\t\tac_cv_path_PYTHON=$(HOST_DIR)/usr/bin/python \\\n+\t\tam_cv_python_version=$(PYTHON_VERSION) \\\n+\t\tam_cv_python_platform=linux2 \\\n+\t\tam_cv_python_pythondir=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \\\n+\t\tam_cv_python_pyexecdir=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \\\n+\t\tam_cv_python_includes=-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\n+\tSETOOLS_CONF_OPT += \\\n+\t\t--enable-swig-python \\\n+\t\tPYTHON_CPPFLAGS=\"-I$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\" \\\n+\t\tPYTHON_LDFLAGS=\"-L$(STAGING_DIR)/usr/lib/\" \\\n+\t\tPYTHON_SITE_PKG=\"$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\" \\\n+\t\tPYTHON_EXTRA_LIBS=\"-lpthread -ldl -lutil -lpython$(PYTHON_VERSION_MAJOR)\"\n+endif\n+\n+HOST_SETOOLS_DEPENDENCIES = host-libselinux host-libsepol host-sqlite \\\n+\thost-libxml2 host-bzip2\n+\n+HOST_SETOOLS_AUTORECONF = YES\n+HOST_SETOOLS_AUTORECONF_OPT = -i -s\n+\n+# Notes: Need \"disable-selinux-check\" so the configure does not check to see if host has\n+# selinux enabled.\n+HOST_SETOOLS_CONF_OPT = \\\n+\t--disable-debug \\\n+\t--disable-gui \\\n+\t--disable-bwidget-check \\\n+\t--disable-selinux-check \\\n+\t--disable-swig-java \\\n+\t--disable-swig-python \\\n+\t--disable-swig-tcl \\\n+\t--with-sepol-devel=\"$(HOST_DIR)/usr\" \\\n+\t--with-selinux-devel=\"$(HOST_DIR)/usr\" \\\n+\n+ifeq ($(BR2_PACKAGE_SETOOLS_PYTHON_BINDINGS),y)\n+\tHOST_SETOOLS_DEPENDENCIES += host-python host-swig \n+\tHOST_SETOOLS_CONF_ENV += \\\n+\t\tam_cv_pathless_PYTHON=python \\\n+\t\tac_cv_path_PYTHON=$(HOST_DIR)/usr/bin/python \\\n+\t\tam_cv_python_version=$(PYTHON_VERSION) \\\n+\t\tam_cv_python_platform=linux2 \\\n+\t\tam_cv_python_pythondir=$(HOST_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \\\n+\t\tam_cv_python_pyexecdir=$(HOST_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages \\\n+\t\tam_cv_python_includes=-I$(HOST_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\n+\tHOST_SETOOLS_CONF_OPT += \\\n+\t\t--enable-swig-python \\\n+\t\tPYTHON_CPPFLAGS=\"-I$(HOST_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR)\" \\\n+\t\tPYTHON_LDFLAGS=\"-L$(HOST_DIR)/usr/lib/\" \\\n+\t\tPYTHON_SITE_PKG=\"$(HOST_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages\" \\\n+\t\tPYTHON_EXTRA_LIBS=\"-lpthread -ldl -lutil -lpython$(PYTHON_VERSION_MAJOR)\"\n+endif\n+\n+$(eval $(autotools-package))\n+$(eval $(host-autotools-package))\n", "prefixes": [ "v5", "09/20" ] }