selinux/libsepol/configure.ac

81 lines
1.8 KiB
Plaintext
Raw Permalink Normal View History

mbrose wrote: > Attached to this email is a tarball snapshot of a new build system > for the SELinux toolchain that I have been working on for the last > couple of months. > > This autoconf/automake build system has many advantages over the > current Makefiles. > > 1) It is capable of correctly cross compiling all libraries and > tools, including the python wrappers. > 2) It allows the distro maintainer to set sysconfdir, prefix, > pamdir, startupdir etc.. > 3) It employs no "hacks", it is to-the-book, clean, GNU Automake, > Autoconf code, formatted to ~80 char line length. > 4) It lets RPM spec and .deb control take advantage of the autoconf > infrastructure already built into these package formats, allowing > distro maintainers to quickly and effortlessly build distro > packages. > 5) It is completely self dependent, ie. one can build the complete > toolchain now resolving dependencies within the build, without > needing to link against a system wide library. > > Due to an incompatibility with libtool, related to the current > naming convention of the python wrappers and classes, a patch is > supplied to rename: > *) _selinux.so to libpyselinux.so > *) _semanage.so to libpysemanage.so > *) _audit2why.so to libpyaudit2why.so > > Similarily, the update also renames: > *) selinux.py to __init__.py > *) semanage.py to __init__.py > and installs these plugins into their own sub site-packages folder. > > For Example: libselinux/src/Makefile.am > line 35 # When the upstream tree is patched this should be removed > line 36 # and selinux.py must be renamed to __init__.py > line 37 __init__.py : selinux.py > line 38 cp selinux.py $@ > > A similar measure is taken in libsemanage/src/Makefile.am for semanage.py. > > On a similar note, the code currently uses a macro called SHARED, > which is currently being wrapped with a forced -include libtool_compat.h > using -DPIC (a libtool defined macro). This too can be removed if the code > can be reformatted. > > This build system has been thoroughly tested to function correctly. > Compiling natively for localhost, as well as cross compiling for > the following platforms: > *) PPC32 > *) PPC64 > *) ARM (Versatile family) > *) Common PC X86_64 > > It has also been tested on mainstream Linux distributions such > as Ubuntu 8.04 and Fedora 9. > > This new build system is a replacement for the existing build system. > They cannot be used concurrently. I leave no guarantee on backward > compatibility after applying this update. > > Recently a Ruby wrapper was added to the SELinux trunk, this build > system does not build it. Though with the current infrastructure in > place, it is a very simple procedure for anyone familiar with ruby > to include it. > > This contribution comes out of the integration efforts WindRiver has > recently taken to add a SELinux feature to WindRiver Linux. It comes > with no obligation or indemnity from WindRiver or myself. Distributed > as not copyrighted, public domain software, in accordance with > libselinux. > > I ask if this update can be merged into the main SELinux trunk. > I will help coordinate the merge if necessary. > >
2008-08-19 20:04:11 +00:00
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
Author: Vikram Noel Ambrose Email: noel.ambrose@gmail.com Subject: AC_INIT VERSION info fix + checkpolicy test Date: Fri, 03 Oct 2008 19:42:04 -0400 Jason Tang wrote: > Subject: [autotools][patch] AC_INIT VERSION info fix + checkpolicy test > Date: Tue, 30 Sep 2008 13:17:55 -0400 > From: Vikram Noel Ambrose <noel.ambrose@gmail.com> > To: owner-selinux@tycho.nsa.gov > CC: Joshua Brindle <method@manicmethod.com> > > >> Changelog. >> 1. AC_INIT gets version string from $srcdir/VERSION file >> 2. checkpolicy tests are now being built with --enable-tests >> > > With this patch applied against the current autotools branch on git, the following issues seem to exist: > > libsepol: > 1. Version information is in both configure.ac as well as the VERSION file. Consider having configure.ac generate the VERSION file via a @VERSION@ substitution in AC_CONFIG_FILE. > 2. Default behavior of libsepol should be to enable_tests. > 3. Syntax of subsequent AM_CONDITIONAL is incorrect; there is a stray right bracket. > 4. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > 5. No Makefile.am for tests subdirectory. > > 1,2,3 -> Fixed with attached libsepol-fixes.patch -1- The VERSION file is deleted, it is redundant. From now on the only file that will track the version string will be configure.ac for all packages 4. -> This is an issue for the distro maintainer, not the package maintainer. 5 -> I dont understand how to build the tests for libsepol. Can someone explain the libsepol/tests/Makefile from the master branch to me? I have just stubbed it out for now // make distcheck OK after patch > libselinux: > 1. No Ruby support in configure.ac. > 2. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"), but then it does not actually guess the Python site folder despite what the help message claims. > 3. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 4. In utils/Makefile.am, instead of $(builddir)/.., this should simply be $(top_builddir). Likewise, consider $(top_srcdir) instead of $(srcdir)/... > 5. In src/Makefile.am, private header files are not included. > 6. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > 1 -> I'm not going to address this one. If someone knows how to use ruby, go ahead and add it. 2 -> You seem to be mixing 2 very different things here. -1- $with_python refers to building code that needs python support and yes, by default, it is set to no. Python is extra functionality, it is not a mandatory dependency, use --with-python=/path/to/include/python2.4 if you want these python features from libselinux -2- The python site-packages folder is indeed guessed if one is not specified, why do you say differently? Did you look at the resulting/guessed site-packages folder after running configure without specifying --with-python-site? libselinux-fixes.patch stops the WARNING message from being displayed if the libpy* cannot be built 3 -> Like I said previously, can you give me the logs from the machine you claim fails the swig checks? 4 -> Fixed with attached libselinux-fixes.patch 5 -> Not sure what you mean 6 -> As in libsepol, this is a distro maintainer policy, not one to be enforced by the build system. // make distcheck OK after patch > libsemanage: > 1. Instead of using AC_SEARCH_LIBS in configure.ac, why not use AC_CHECK_LIB? There are no alternatives to libselinux, libsepol, and libustr, respectively, AC_CHECK_LIB would be simpler. > 2. Defining HAVE_SELINUX_SELINUX_H and its kin are unnecessary. In no case would it be possible to compile libsemanage without having these defines be false. > 3. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"). > 4. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 5. No Makefile.am for tests subdirectory. > 6. In src/Makefile.am, private header files are not included. > 7. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > > 1,2 -> Fixed with attached libsemanage-fixes.patch 3 -> Yup, that's true. Python is not needed for libsemanage. If you need this extra functionality (ie, libpysemanage), then specify the headers you want to build with. ./configure --with-python=/these/guys/include/python2.4 4 -> Why? Whats wrong with the current test? 5 -> Fixed with attached libsemanage-fixes.patch -1- I have not tested the tests. CUnit header checks may also be needed in configure.ac 6 -> Not sure what you mean 7 -> Again this is a site policy and no concern of the package maintainer. The distro maintainer adjusts these sort of things according to the policies of the distro. // make distcheck OK after patch phew....that was some work... I've attached my quilt series file along with the patches. So that you can apply them in stack, as i had them. Thanks again Jason for taking such a close look at the autotools branch. 5 patches! have fun Josh. Vikram
2008-11-09 16:35:11 +00:00
AC_INIT([libsepol], 2.0.33, selinux@tycho.nsa.gov)
mbrose wrote: > Attached to this email is a tarball snapshot of a new build system > for the SELinux toolchain that I have been working on for the last > couple of months. > > This autoconf/automake build system has many advantages over the > current Makefiles. > > 1) It is capable of correctly cross compiling all libraries and > tools, including the python wrappers. > 2) It allows the distro maintainer to set sysconfdir, prefix, > pamdir, startupdir etc.. > 3) It employs no "hacks", it is to-the-book, clean, GNU Automake, > Autoconf code, formatted to ~80 char line length. > 4) It lets RPM spec and .deb control take advantage of the autoconf > infrastructure already built into these package formats, allowing > distro maintainers to quickly and effortlessly build distro > packages. > 5) It is completely self dependent, ie. one can build the complete > toolchain now resolving dependencies within the build, without > needing to link against a system wide library. > > Due to an incompatibility with libtool, related to the current > naming convention of the python wrappers and classes, a patch is > supplied to rename: > *) _selinux.so to libpyselinux.so > *) _semanage.so to libpysemanage.so > *) _audit2why.so to libpyaudit2why.so > > Similarily, the update also renames: > *) selinux.py to __init__.py > *) semanage.py to __init__.py > and installs these plugins into their own sub site-packages folder. > > For Example: libselinux/src/Makefile.am > line 35 # When the upstream tree is patched this should be removed > line 36 # and selinux.py must be renamed to __init__.py > line 37 __init__.py : selinux.py > line 38 cp selinux.py $@ > > A similar measure is taken in libsemanage/src/Makefile.am for semanage.py. > > On a similar note, the code currently uses a macro called SHARED, > which is currently being wrapped with a forced -include libtool_compat.h > using -DPIC (a libtool defined macro). This too can be removed if the code > can be reformatted. > > This build system has been thoroughly tested to function correctly. > Compiling natively for localhost, as well as cross compiling for > the following platforms: > *) PPC32 > *) PPC64 > *) ARM (Versatile family) > *) Common PC X86_64 > > It has also been tested on mainstream Linux distributions such > as Ubuntu 8.04 and Fedora 9. > > This new build system is a replacement for the existing build system. > They cannot be used concurrently. I leave no guarantee on backward > compatibility after applying this update. > > Recently a Ruby wrapper was added to the SELinux trunk, this build > system does not build it. Though with the current infrastructure in > place, it is a very simple procedure for anyone familiar with ruby > to include it. > > This contribution comes out of the integration efforts WindRiver has > recently taken to add a SELinux feature to WindRiver Linux. It comes > with no obligation or indemnity from WindRiver or myself. Distributed > as not copyrighted, public domain software, in accordance with > libselinux. > > I ask if this update can be merged into the main SELinux trunk. > I will help coordinate the merge if necessary. > >
2008-08-19 20:04:11 +00:00
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([utils/chkcon.c])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
# semodule_deps in policycoreutils builds against libsepol.a
# Uncomment to change default behavior
#AC_DISABLE_STATIC
mbrose wrote: > Attached to this email is a tarball snapshot of a new build system > for the SELinux toolchain that I have been working on for the last > couple of months. > > This autoconf/automake build system has many advantages over the > current Makefiles. > > 1) It is capable of correctly cross compiling all libraries and > tools, including the python wrappers. > 2) It allows the distro maintainer to set sysconfdir, prefix, > pamdir, startupdir etc.. > 3) It employs no "hacks", it is to-the-book, clean, GNU Automake, > Autoconf code, formatted to ~80 char line length. > 4) It lets RPM spec and .deb control take advantage of the autoconf > infrastructure already built into these package formats, allowing > distro maintainers to quickly and effortlessly build distro > packages. > 5) It is completely self dependent, ie. one can build the complete > toolchain now resolving dependencies within the build, without > needing to link against a system wide library. > > Due to an incompatibility with libtool, related to the current > naming convention of the python wrappers and classes, a patch is > supplied to rename: > *) _selinux.so to libpyselinux.so > *) _semanage.so to libpysemanage.so > *) _audit2why.so to libpyaudit2why.so > > Similarily, the update also renames: > *) selinux.py to __init__.py > *) semanage.py to __init__.py > and installs these plugins into their own sub site-packages folder. > > For Example: libselinux/src/Makefile.am > line 35 # When the upstream tree is patched this should be removed > line 36 # and selinux.py must be renamed to __init__.py > line 37 __init__.py : selinux.py > line 38 cp selinux.py $@ > > A similar measure is taken in libsemanage/src/Makefile.am for semanage.py. > > On a similar note, the code currently uses a macro called SHARED, > which is currently being wrapped with a forced -include libtool_compat.h > using -DPIC (a libtool defined macro). This too can be removed if the code > can be reformatted. > > This build system has been thoroughly tested to function correctly. > Compiling natively for localhost, as well as cross compiling for > the following platforms: > *) PPC32 > *) PPC64 > *) ARM (Versatile family) > *) Common PC X86_64 > > It has also been tested on mainstream Linux distributions such > as Ubuntu 8.04 and Fedora 9. > > This new build system is a replacement for the existing build system. > They cannot be used concurrently. I leave no guarantee on backward > compatibility after applying this update. > > Recently a Ruby wrapper was added to the SELinux trunk, this build > system does not build it. Though with the current infrastructure in > place, it is a very simple procedure for anyone familiar with ruby > to include it. > > This contribution comes out of the integration efforts WindRiver has > recently taken to add a SELinux feature to WindRiver Linux. It comes > with no obligation or indemnity from WindRiver or myself. Distributed > as not copyrighted, public domain software, in accordance with > libselinux. > > I ask if this update can be merged into the main SELinux trunk. > I will help coordinate the merge if necessary. > >
2008-08-19 20:04:11 +00:00
AC_PROG_LIBTOOL
AM_PROG_CC_C_O
# Checks for libraries.
AC_CHECK_LIB([fl], [yywrap])
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([arpa/inet.h \
limits.h \
netinet/in.h \
stddef.h \
stdint.h \
stdio_ext.h \
stdlib.h \
string.h \
sys/socket.h \
unistd.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_REALLOC
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([memset strcasecmp strchr strdup strerror strncasecmp strrchr])
AC_ARG_ENABLE([tests],
Author: Vikram Noel Ambrose Email: noel.ambrose@gmail.com Subject: AC_INIT VERSION info fix + checkpolicy test Date: Fri, 03 Oct 2008 19:42:04 -0400 Jason Tang wrote: > Subject: [autotools][patch] AC_INIT VERSION info fix + checkpolicy test > Date: Tue, 30 Sep 2008 13:17:55 -0400 > From: Vikram Noel Ambrose <noel.ambrose@gmail.com> > To: owner-selinux@tycho.nsa.gov > CC: Joshua Brindle <method@manicmethod.com> > > >> Changelog. >> 1. AC_INIT gets version string from $srcdir/VERSION file >> 2. checkpolicy tests are now being built with --enable-tests >> > > With this patch applied against the current autotools branch on git, the following issues seem to exist: > > libsepol: > 1. Version information is in both configure.ac as well as the VERSION file. Consider having configure.ac generate the VERSION file via a @VERSION@ substitution in AC_CONFIG_FILE. > 2. Default behavior of libsepol should be to enable_tests. > 3. Syntax of subsequent AM_CONDITIONAL is incorrect; there is a stray right bracket. > 4. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > 5. No Makefile.am for tests subdirectory. > > 1,2,3 -> Fixed with attached libsepol-fixes.patch -1- The VERSION file is deleted, it is redundant. From now on the only file that will track the version string will be configure.ac for all packages 4. -> This is an issue for the distro maintainer, not the package maintainer. 5 -> I dont understand how to build the tests for libsepol. Can someone explain the libsepol/tests/Makefile from the master branch to me? I have just stubbed it out for now // make distcheck OK after patch > libselinux: > 1. No Ruby support in configure.ac. > 2. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"), but then it does not actually guess the Python site folder despite what the help message claims. > 3. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 4. In utils/Makefile.am, instead of $(builddir)/.., this should simply be $(top_builddir). Likewise, consider $(top_srcdir) instead of $(srcdir)/... > 5. In src/Makefile.am, private header files are not included. > 6. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > 1 -> I'm not going to address this one. If someone knows how to use ruby, go ahead and add it. 2 -> You seem to be mixing 2 very different things here. -1- $with_python refers to building code that needs python support and yes, by default, it is set to no. Python is extra functionality, it is not a mandatory dependency, use --with-python=/path/to/include/python2.4 if you want these python features from libselinux -2- The python site-packages folder is indeed guessed if one is not specified, why do you say differently? Did you look at the resulting/guessed site-packages folder after running configure without specifying --with-python-site? libselinux-fixes.patch stops the WARNING message from being displayed if the libpy* cannot be built 3 -> Like I said previously, can you give me the logs from the machine you claim fails the swig checks? 4 -> Fixed with attached libselinux-fixes.patch 5 -> Not sure what you mean 6 -> As in libsepol, this is a distro maintainer policy, not one to be enforced by the build system. // make distcheck OK after patch > libsemanage: > 1. Instead of using AC_SEARCH_LIBS in configure.ac, why not use AC_CHECK_LIB? There are no alternatives to libselinux, libsepol, and libustr, respectively, AC_CHECK_LIB would be simpler. > 2. Defining HAVE_SELINUX_SELINUX_H and its kin are unnecessary. In no case would it be possible to compile libsemanage without having these defines be false. > 3. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"). > 4. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 5. No Makefile.am for tests subdirectory. > 6. In src/Makefile.am, private header files are not included. > 7. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > > 1,2 -> Fixed with attached libsemanage-fixes.patch 3 -> Yup, that's true. Python is not needed for libsemanage. If you need this extra functionality (ie, libpysemanage), then specify the headers you want to build with. ./configure --with-python=/these/guys/include/python2.4 4 -> Why? Whats wrong with the current test? 5 -> Fixed with attached libsemanage-fixes.patch -1- I have not tested the tests. CUnit header checks may also be needed in configure.ac 6 -> Not sure what you mean 7 -> Again this is a site policy and no concern of the package maintainer. The distro maintainer adjusts these sort of things according to the policies of the distro. // make distcheck OK after patch phew....that was some work... I've attached my quilt series file along with the patches. So that you can apply them in stack, as i had them. Thanks again Jason for taking such a close look at the autotools branch. 5 patches! have fun Josh. Vikram
2008-11-09 16:35:11 +00:00
[AC_HELP_STRING([--disable-tests],[Disable building tests])],
[enable_tests=$enableval],
Author: Vikram Noel Ambrose Email: noel.ambrose@gmail.com Subject: AC_INIT VERSION info fix + checkpolicy test Date: Fri, 03 Oct 2008 19:42:04 -0400 Jason Tang wrote: > Subject: [autotools][patch] AC_INIT VERSION info fix + checkpolicy test > Date: Tue, 30 Sep 2008 13:17:55 -0400 > From: Vikram Noel Ambrose <noel.ambrose@gmail.com> > To: owner-selinux@tycho.nsa.gov > CC: Joshua Brindle <method@manicmethod.com> > > >> Changelog. >> 1. AC_INIT gets version string from $srcdir/VERSION file >> 2. checkpolicy tests are now being built with --enable-tests >> > > With this patch applied against the current autotools branch on git, the following issues seem to exist: > > libsepol: > 1. Version information is in both configure.ac as well as the VERSION file. Consider having configure.ac generate the VERSION file via a @VERSION@ substitution in AC_CONFIG_FILE. > 2. Default behavior of libsepol should be to enable_tests. > 3. Syntax of subsequent AM_CONDITIONAL is incorrect; there is a stray right bracket. > 4. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > 5. No Makefile.am for tests subdirectory. > > 1,2,3 -> Fixed with attached libsepol-fixes.patch -1- The VERSION file is deleted, it is redundant. From now on the only file that will track the version string will be configure.ac for all packages 4. -> This is an issue for the distro maintainer, not the package maintainer. 5 -> I dont understand how to build the tests for libsepol. Can someone explain the libsepol/tests/Makefile from the master branch to me? I have just stubbed it out for now // make distcheck OK after patch > libselinux: > 1. No Ruby support in configure.ac. > 2. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"), but then it does not actually guess the Python site folder despite what the help message claims. > 3. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 4. In utils/Makefile.am, instead of $(builddir)/.., this should simply be $(top_builddir). Likewise, consider $(top_srcdir) instead of $(srcdir)/... > 5. In src/Makefile.am, private header files are not included. > 6. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > 1 -> I'm not going to address this one. If someone knows how to use ruby, go ahead and add it. 2 -> You seem to be mixing 2 very different things here. -1- $with_python refers to building code that needs python support and yes, by default, it is set to no. Python is extra functionality, it is not a mandatory dependency, use --with-python=/path/to/include/python2.4 if you want these python features from libselinux -2- The python site-packages folder is indeed guessed if one is not specified, why do you say differently? Did you look at the resulting/guessed site-packages folder after running configure without specifying --with-python-site? libselinux-fixes.patch stops the WARNING message from being displayed if the libpy* cannot be built 3 -> Like I said previously, can you give me the logs from the machine you claim fails the swig checks? 4 -> Fixed with attached libselinux-fixes.patch 5 -> Not sure what you mean 6 -> As in libsepol, this is a distro maintainer policy, not one to be enforced by the build system. // make distcheck OK after patch > libsemanage: > 1. Instead of using AC_SEARCH_LIBS in configure.ac, why not use AC_CHECK_LIB? There are no alternatives to libselinux, libsepol, and libustr, respectively, AC_CHECK_LIB would be simpler. > 2. Defining HAVE_SELINUX_SELINUX_H and its kin are unnecessary. In no case would it be possible to compile libsemanage without having these defines be false. > 3. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"). > 4. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 5. No Makefile.am for tests subdirectory. > 6. In src/Makefile.am, private header files are not included. > 7. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > > 1,2 -> Fixed with attached libsemanage-fixes.patch 3 -> Yup, that's true. Python is not needed for libsemanage. If you need this extra functionality (ie, libpysemanage), then specify the headers you want to build with. ./configure --with-python=/these/guys/include/python2.4 4 -> Why? Whats wrong with the current test? 5 -> Fixed with attached libsemanage-fixes.patch -1- I have not tested the tests. CUnit header checks may also be needed in configure.ac 6 -> Not sure what you mean 7 -> Again this is a site policy and no concern of the package maintainer. The distro maintainer adjusts these sort of things according to the policies of the distro. // make distcheck OK after patch phew....that was some work... I've attached my quilt series file along with the patches. So that you can apply them in stack, as i had them. Thanks again Jason for taking such a close look at the autotools branch. 5 patches! have fun Josh. Vikram
2008-11-09 16:35:11 +00:00
[enable_tests=yes]
)
Author: Vikram Noel Ambrose Email: noel.ambrose@gmail.com Subject: AC_INIT VERSION info fix + checkpolicy test Date: Fri, 03 Oct 2008 19:42:04 -0400 Jason Tang wrote: > Subject: [autotools][patch] AC_INIT VERSION info fix + checkpolicy test > Date: Tue, 30 Sep 2008 13:17:55 -0400 > From: Vikram Noel Ambrose <noel.ambrose@gmail.com> > To: owner-selinux@tycho.nsa.gov > CC: Joshua Brindle <method@manicmethod.com> > > >> Changelog. >> 1. AC_INIT gets version string from $srcdir/VERSION file >> 2. checkpolicy tests are now being built with --enable-tests >> > > With this patch applied against the current autotools branch on git, the following issues seem to exist: > > libsepol: > 1. Version information is in both configure.ac as well as the VERSION file. Consider having configure.ac generate the VERSION file via a @VERSION@ substitution in AC_CONFIG_FILE. > 2. Default behavior of libsepol should be to enable_tests. > 3. Syntax of subsequent AM_CONDITIONAL is incorrect; there is a stray right bracket. > 4. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > 5. No Makefile.am for tests subdirectory. > > 1,2,3 -> Fixed with attached libsepol-fixes.patch -1- The VERSION file is deleted, it is redundant. From now on the only file that will track the version string will be configure.ac for all packages 4. -> This is an issue for the distro maintainer, not the package maintainer. 5 -> I dont understand how to build the tests for libsepol. Can someone explain the libsepol/tests/Makefile from the master branch to me? I have just stubbed it out for now // make distcheck OK after patch > libselinux: > 1. No Ruby support in configure.ac. > 2. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"), but then it does not actually guess the Python site folder despite what the help message claims. > 3. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 4. In utils/Makefile.am, instead of $(builddir)/.., this should simply be $(top_builddir). Likewise, consider $(top_srcdir) instead of $(srcdir)/... > 5. In src/Makefile.am, private header files are not included. > 6. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > 1 -> I'm not going to address this one. If someone knows how to use ruby, go ahead and add it. 2 -> You seem to be mixing 2 very different things here. -1- $with_python refers to building code that needs python support and yes, by default, it is set to no. Python is extra functionality, it is not a mandatory dependency, use --with-python=/path/to/include/python2.4 if you want these python features from libselinux -2- The python site-packages folder is indeed guessed if one is not specified, why do you say differently? Did you look at the resulting/guessed site-packages folder after running configure without specifying --with-python-site? libselinux-fixes.patch stops the WARNING message from being displayed if the libpy* cannot be built 3 -> Like I said previously, can you give me the logs from the machine you claim fails the swig checks? 4 -> Fixed with attached libselinux-fixes.patch 5 -> Not sure what you mean 6 -> As in libsepol, this is a distro maintainer policy, not one to be enforced by the build system. // make distcheck OK after patch > libsemanage: > 1. Instead of using AC_SEARCH_LIBS in configure.ac, why not use AC_CHECK_LIB? There are no alternatives to libselinux, libsepol, and libustr, respectively, AC_CHECK_LIB would be simpler. > 2. Defining HAVE_SELINUX_SELINUX_H and its kin are unnecessary. In no case would it be possible to compile libsemanage without having these defines be false. > 3. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"). > 4. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 5. No Makefile.am for tests subdirectory. > 6. In src/Makefile.am, private header files are not included. > 7. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > > 1,2 -> Fixed with attached libsemanage-fixes.patch 3 -> Yup, that's true. Python is not needed for libsemanage. If you need this extra functionality (ie, libpysemanage), then specify the headers you want to build with. ./configure --with-python=/these/guys/include/python2.4 4 -> Why? Whats wrong with the current test? 5 -> Fixed with attached libsemanage-fixes.patch -1- I have not tested the tests. CUnit header checks may also be needed in configure.ac 6 -> Not sure what you mean 7 -> Again this is a site policy and no concern of the package maintainer. The distro maintainer adjusts these sort of things according to the policies of the distro. // make distcheck OK after patch phew....that was some work... I've attached my quilt series file along with the patches. So that you can apply them in stack, as i had them. Thanks again Jason for taking such a close look at the autotools branch. 5 patches! have fun Josh. Vikram
2008-11-09 16:35:11 +00:00
AM_CONDITIONAL([BUILD_tests],[test "$enable_tests" = "yes"])
mbrose wrote: > Attached to this email is a tarball snapshot of a new build system > for the SELinux toolchain that I have been working on for the last > couple of months. > > This autoconf/automake build system has many advantages over the > current Makefiles. > > 1) It is capable of correctly cross compiling all libraries and > tools, including the python wrappers. > 2) It allows the distro maintainer to set sysconfdir, prefix, > pamdir, startupdir etc.. > 3) It employs no "hacks", it is to-the-book, clean, GNU Automake, > Autoconf code, formatted to ~80 char line length. > 4) It lets RPM spec and .deb control take advantage of the autoconf > infrastructure already built into these package formats, allowing > distro maintainers to quickly and effortlessly build distro > packages. > 5) It is completely self dependent, ie. one can build the complete > toolchain now resolving dependencies within the build, without > needing to link against a system wide library. > > Due to an incompatibility with libtool, related to the current > naming convention of the python wrappers and classes, a patch is > supplied to rename: > *) _selinux.so to libpyselinux.so > *) _semanage.so to libpysemanage.so > *) _audit2why.so to libpyaudit2why.so > > Similarily, the update also renames: > *) selinux.py to __init__.py > *) semanage.py to __init__.py > and installs these plugins into their own sub site-packages folder. > > For Example: libselinux/src/Makefile.am > line 35 # When the upstream tree is patched this should be removed > line 36 # and selinux.py must be renamed to __init__.py > line 37 __init__.py : selinux.py > line 38 cp selinux.py $@ > > A similar measure is taken in libsemanage/src/Makefile.am for semanage.py. > > On a similar note, the code currently uses a macro called SHARED, > which is currently being wrapped with a forced -include libtool_compat.h > using -DPIC (a libtool defined macro). This too can be removed if the code > can be reformatted. > > This build system has been thoroughly tested to function correctly. > Compiling natively for localhost, as well as cross compiling for > the following platforms: > *) PPC32 > *) PPC64 > *) ARM (Versatile family) > *) Common PC X86_64 > > It has also been tested on mainstream Linux distributions such > as Ubuntu 8.04 and Fedora 9. > > This new build system is a replacement for the existing build system. > They cannot be used concurrently. I leave no guarantee on backward > compatibility after applying this update. > > Recently a Ruby wrapper was added to the SELinux trunk, this build > system does not build it. Though with the current infrastructure in > place, it is a very simple procedure for anyone familiar with ruby > to include it. > > This contribution comes out of the integration efforts WindRiver has > recently taken to add a SELinux feature to WindRiver Linux. It comes > with no obligation or indemnity from WindRiver or myself. Distributed > as not copyrighted, public domain software, in accordance with > libselinux. > > I ask if this update can be merged into the main SELinux trunk. > I will help coordinate the merge if necessary. > >
2008-08-19 20:04:11 +00:00
AC_CONFIG_FILES([Makefile
include/Makefile
man/Makefile
src/Makefile
Author: Vikram Noel Ambrose Email: noel.ambrose@gmail.com Subject: AC_INIT VERSION info fix + checkpolicy test Date: Fri, 03 Oct 2008 19:42:04 -0400 Jason Tang wrote: > Subject: [autotools][patch] AC_INIT VERSION info fix + checkpolicy test > Date: Tue, 30 Sep 2008 13:17:55 -0400 > From: Vikram Noel Ambrose <noel.ambrose@gmail.com> > To: owner-selinux@tycho.nsa.gov > CC: Joshua Brindle <method@manicmethod.com> > > >> Changelog. >> 1. AC_INIT gets version string from $srcdir/VERSION file >> 2. checkpolicy tests are now being built with --enable-tests >> > > With this patch applied against the current autotools branch on git, the following issues seem to exist: > > libsepol: > 1. Version information is in both configure.ac as well as the VERSION file. Consider having configure.ac generate the VERSION file via a @VERSION@ substitution in AC_CONFIG_FILE. > 2. Default behavior of libsepol should be to enable_tests. > 3. Syntax of subsequent AM_CONDITIONAL is incorrect; there is a stray right bracket. > 4. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > 5. No Makefile.am for tests subdirectory. > > 1,2,3 -> Fixed with attached libsepol-fixes.patch -1- The VERSION file is deleted, it is redundant. From now on the only file that will track the version string will be configure.ac for all packages 4. -> This is an issue for the distro maintainer, not the package maintainer. 5 -> I dont understand how to build the tests for libsepol. Can someone explain the libsepol/tests/Makefile from the master branch to me? I have just stubbed it out for now // make distcheck OK after patch > libselinux: > 1. No Ruby support in configure.ac. > 2. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"), but then it does not actually guess the Python site folder despite what the help message claims. > 3. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 4. In utils/Makefile.am, instead of $(builddir)/.., this should simply be $(top_builddir). Likewise, consider $(top_srcdir) instead of $(srcdir)/... > 5. In src/Makefile.am, private header files are not included. > 6. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > 1 -> I'm not going to address this one. If someone knows how to use ruby, go ahead and add it. 2 -> You seem to be mixing 2 very different things here. -1- $with_python refers to building code that needs python support and yes, by default, it is set to no. Python is extra functionality, it is not a mandatory dependency, use --with-python=/path/to/include/python2.4 if you want these python features from libselinux -2- The python site-packages folder is indeed guessed if one is not specified, why do you say differently? Did you look at the resulting/guessed site-packages folder after running configure without specifying --with-python-site? libselinux-fixes.patch stops the WARNING message from being displayed if the libpy* cannot be built 3 -> Like I said previously, can you give me the logs from the machine you claim fails the swig checks? 4 -> Fixed with attached libselinux-fixes.patch 5 -> Not sure what you mean 6 -> As in libsepol, this is a distro maintainer policy, not one to be enforced by the build system. // make distcheck OK after patch > libsemanage: > 1. Instead of using AC_SEARCH_LIBS in configure.ac, why not use AC_CHECK_LIB? There are no alternatives to libselinux, libsepol, and libustr, respectively, AC_CHECK_LIB would be simpler. > 2. Defining HAVE_SELINUX_SELINUX_H and its kin are unnecessary. In no case would it be possible to compile libsemanage without having these defines be false. > 3. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"). > 4. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 5. No Makefile.am for tests subdirectory. > 6. In src/Makefile.am, private header files are not included. > 7. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > > 1,2 -> Fixed with attached libsemanage-fixes.patch 3 -> Yup, that's true. Python is not needed for libsemanage. If you need this extra functionality (ie, libpysemanage), then specify the headers you want to build with. ./configure --with-python=/these/guys/include/python2.4 4 -> Why? Whats wrong with the current test? 5 -> Fixed with attached libsemanage-fixes.patch -1- I have not tested the tests. CUnit header checks may also be needed in configure.ac 6 -> Not sure what you mean 7 -> Again this is a site policy and no concern of the package maintainer. The distro maintainer adjusts these sort of things according to the policies of the distro. // make distcheck OK after patch phew....that was some work... I've attached my quilt series file along with the patches. So that you can apply them in stack, as i had them. Thanks again Jason for taking such a close look at the autotools branch. 5 patches! have fun Josh. Vikram
2008-11-09 16:35:11 +00:00
utils/Makefile
tests/Makefile])
mbrose wrote: > Attached to this email is a tarball snapshot of a new build system > for the SELinux toolchain that I have been working on for the last > couple of months. > > This autoconf/automake build system has many advantages over the > current Makefiles. > > 1) It is capable of correctly cross compiling all libraries and > tools, including the python wrappers. > 2) It allows the distro maintainer to set sysconfdir, prefix, > pamdir, startupdir etc.. > 3) It employs no "hacks", it is to-the-book, clean, GNU Automake, > Autoconf code, formatted to ~80 char line length. > 4) It lets RPM spec and .deb control take advantage of the autoconf > infrastructure already built into these package formats, allowing > distro maintainers to quickly and effortlessly build distro > packages. > 5) It is completely self dependent, ie. one can build the complete > toolchain now resolving dependencies within the build, without > needing to link against a system wide library. > > Due to an incompatibility with libtool, related to the current > naming convention of the python wrappers and classes, a patch is > supplied to rename: > *) _selinux.so to libpyselinux.so > *) _semanage.so to libpysemanage.so > *) _audit2why.so to libpyaudit2why.so > > Similarily, the update also renames: > *) selinux.py to __init__.py > *) semanage.py to __init__.py > and installs these plugins into their own sub site-packages folder. > > For Example: libselinux/src/Makefile.am > line 35 # When the upstream tree is patched this should be removed > line 36 # and selinux.py must be renamed to __init__.py > line 37 __init__.py : selinux.py > line 38 cp selinux.py $@ > > A similar measure is taken in libsemanage/src/Makefile.am for semanage.py. > > On a similar note, the code currently uses a macro called SHARED, > which is currently being wrapped with a forced -include libtool_compat.h > using -DPIC (a libtool defined macro). This too can be removed if the code > can be reformatted. > > This build system has been thoroughly tested to function correctly. > Compiling natively for localhost, as well as cross compiling for > the following platforms: > *) PPC32 > *) PPC64 > *) ARM (Versatile family) > *) Common PC X86_64 > > It has also been tested on mainstream Linux distributions such > as Ubuntu 8.04 and Fedora 9. > > This new build system is a replacement for the existing build system. > They cannot be used concurrently. I leave no guarantee on backward > compatibility after applying this update. > > Recently a Ruby wrapper was added to the SELinux trunk, this build > system does not build it. Though with the current infrastructure in > place, it is a very simple procedure for anyone familiar with ruby > to include it. > > This contribution comes out of the integration efforts WindRiver has > recently taken to add a SELinux feature to WindRiver Linux. It comes > with no obligation or indemnity from WindRiver or myself. Distributed > as not copyrighted, public domain software, in accordance with > libselinux. > > I ask if this update can be merged into the main SELinux trunk. > I will help coordinate the merge if necessary. > >
2008-08-19 20:04:11 +00:00
AC_OUTPUT
PRINT='echo -n -e '
$PRINT "\n*** Libsepol Configuration Summary ***\n"
$PRINT "\tBuilding static lib\t= $enable_static\n"
$PRINT "\tBuilding shared object\t= $enable_shared\n"
Author: Vikram Noel Ambrose Email: noel.ambrose@gmail.com Subject: AC_INIT VERSION info fix + checkpolicy test Date: Fri, 03 Oct 2008 19:42:04 -0400 Jason Tang wrote: > Subject: [autotools][patch] AC_INIT VERSION info fix + checkpolicy test > Date: Tue, 30 Sep 2008 13:17:55 -0400 > From: Vikram Noel Ambrose <noel.ambrose@gmail.com> > To: owner-selinux@tycho.nsa.gov > CC: Joshua Brindle <method@manicmethod.com> > > >> Changelog. >> 1. AC_INIT gets version string from $srcdir/VERSION file >> 2. checkpolicy tests are now being built with --enable-tests >> > > With this patch applied against the current autotools branch on git, the following issues seem to exist: > > libsepol: > 1. Version information is in both configure.ac as well as the VERSION file. Consider having configure.ac generate the VERSION file via a @VERSION@ substitution in AC_CONFIG_FILE. > 2. Default behavior of libsepol should be to enable_tests. > 3. Syntax of subsequent AM_CONDITIONAL is incorrect; there is a stray right bracket. > 4. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > 5. No Makefile.am for tests subdirectory. > > 1,2,3 -> Fixed with attached libsepol-fixes.patch -1- The VERSION file is deleted, it is redundant. From now on the only file that will track the version string will be configure.ac for all packages 4. -> This is an issue for the distro maintainer, not the package maintainer. 5 -> I dont understand how to build the tests for libsepol. Can someone explain the libsepol/tests/Makefile from the master branch to me? I have just stubbed it out for now // make distcheck OK after patch > libselinux: > 1. No Ruby support in configure.ac. > 2. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"), but then it does not actually guess the Python site folder despite what the help message claims. > 3. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 4. In utils/Makefile.am, instead of $(builddir)/.., this should simply be $(top_builddir). Likewise, consider $(top_srcdir) instead of $(srcdir)/... > 5. In src/Makefile.am, private header files are not included. > 6. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > 1 -> I'm not going to address this one. If someone knows how to use ruby, go ahead and add it. 2 -> You seem to be mixing 2 very different things here. -1- $with_python refers to building code that needs python support and yes, by default, it is set to no. Python is extra functionality, it is not a mandatory dependency, use --with-python=/path/to/include/python2.4 if you want these python features from libselinux -2- The python site-packages folder is indeed guessed if one is not specified, why do you say differently? Did you look at the resulting/guessed site-packages folder after running configure without specifying --with-python-site? libselinux-fixes.patch stops the WARNING message from being displayed if the libpy* cannot be built 3 -> Like I said previously, can you give me the logs from the machine you claim fails the swig checks? 4 -> Fixed with attached libselinux-fixes.patch 5 -> Not sure what you mean 6 -> As in libsepol, this is a distro maintainer policy, not one to be enforced by the build system. // make distcheck OK after patch > libsemanage: > 1. Instead of using AC_SEARCH_LIBS in configure.ac, why not use AC_CHECK_LIB? There are no alternatives to libselinux, libsepol, and libustr, respectively, AC_CHECK_LIB would be simpler. > 2. Defining HAVE_SELINUX_SELINUX_H and its kin are unnecessary. In no case would it be possible to compile libsemanage without having these defines be false. > 3. By default, configure.ac will not enable Python. This is because $with_python is set to the default ("no"). > 4. Consider using the ac_pkg_swig package (http://autoconf-archive.cryp.to/ac_pkg_swig.html) to detect if SWIG and Python are installed. > 5. No Makefile.am for tests subdirectory. > 6. In src/Makefile.am, private header files are not included. > 7. Actual library and symlink will be installed to $(LIBDIR). The current model is to place library at /lib and symlink at /usr/lib. > > > 1,2 -> Fixed with attached libsemanage-fixes.patch 3 -> Yup, that's true. Python is not needed for libsemanage. If you need this extra functionality (ie, libpysemanage), then specify the headers you want to build with. ./configure --with-python=/these/guys/include/python2.4 4 -> Why? Whats wrong with the current test? 5 -> Fixed with attached libsemanage-fixes.patch -1- I have not tested the tests. CUnit header checks may also be needed in configure.ac 6 -> Not sure what you mean 7 -> Again this is a site policy and no concern of the package maintainer. The distro maintainer adjusts these sort of things according to the policies of the distro. // make distcheck OK after patch phew....that was some work... I've attached my quilt series file along with the patches. So that you can apply them in stack, as i had them. Thanks again Jason for taking such a close look at the autotools branch. 5 patches! have fun Josh. Vikram
2008-11-09 16:35:11 +00:00
$PRINT "\tBuilding tests\t\t= $enable_tests\n"
mbrose wrote: > Attached to this email is a tarball snapshot of a new build system > for the SELinux toolchain that I have been working on for the last > couple of months. > > This autoconf/automake build system has many advantages over the > current Makefiles. > > 1) It is capable of correctly cross compiling all libraries and > tools, including the python wrappers. > 2) It allows the distro maintainer to set sysconfdir, prefix, > pamdir, startupdir etc.. > 3) It employs no "hacks", it is to-the-book, clean, GNU Automake, > Autoconf code, formatted to ~80 char line length. > 4) It lets RPM spec and .deb control take advantage of the autoconf > infrastructure already built into these package formats, allowing > distro maintainers to quickly and effortlessly build distro > packages. > 5) It is completely self dependent, ie. one can build the complete > toolchain now resolving dependencies within the build, without > needing to link against a system wide library. > > Due to an incompatibility with libtool, related to the current > naming convention of the python wrappers and classes, a patch is > supplied to rename: > *) _selinux.so to libpyselinux.so > *) _semanage.so to libpysemanage.so > *) _audit2why.so to libpyaudit2why.so > > Similarily, the update also renames: > *) selinux.py to __init__.py > *) semanage.py to __init__.py > and installs these plugins into their own sub site-packages folder. > > For Example: libselinux/src/Makefile.am > line 35 # When the upstream tree is patched this should be removed > line 36 # and selinux.py must be renamed to __init__.py > line 37 __init__.py : selinux.py > line 38 cp selinux.py $@ > > A similar measure is taken in libsemanage/src/Makefile.am for semanage.py. > > On a similar note, the code currently uses a macro called SHARED, > which is currently being wrapped with a forced -include libtool_compat.h > using -DPIC (a libtool defined macro). This too can be removed if the code > can be reformatted. > > This build system has been thoroughly tested to function correctly. > Compiling natively for localhost, as well as cross compiling for > the following platforms: > *) PPC32 > *) PPC64 > *) ARM (Versatile family) > *) Common PC X86_64 > > It has also been tested on mainstream Linux distributions such > as Ubuntu 8.04 and Fedora 9. > > This new build system is a replacement for the existing build system. > They cannot be used concurrently. I leave no guarantee on backward > compatibility after applying this update. > > Recently a Ruby wrapper was added to the SELinux trunk, this build > system does not build it. Though with the current infrastructure in > place, it is a very simple procedure for anyone familiar with ruby > to include it. > > This contribution comes out of the integration efforts WindRiver has > recently taken to add a SELinux feature to WindRiver Linux. It comes > with no obligation or indemnity from WindRiver or myself. Distributed > as not copyrighted, public domain software, in accordance with > libselinux. > > I ask if this update can be merged into the main SELinux trunk. > I will help coordinate the merge if necessary. > >
2008-08-19 20:04:11 +00:00
$PRINT "------------------------------------------------------------\n"