Go to file
Thomas Petazzoni 97b3e2be0c package/keepalived: ipset support only makes sense when iptables is enabled
In keepalived, ipset is only used when iptables support is
enabled. The configure.ac script is quite convoluted, but one can
clearly see:

AS_IF([test .$enable_iptables != .no],
  [
   ... testing for iptables ...
    if test $USE_IPTABLES = Yes; then
      dnl ----[Check for ipset libraries]----
      SAV_CPPFLAGS="$CPPFLAGS"
      CPPFLAGS="$CPPFLAGS $kernelinc"
      if test "${enable_libipset}" != no; then
      ... testing for libipset ...
    fi
  ]

So, the libipset library is only tested and used if iptables is
enabled. This is also visible by the code that shows at the end of the
configure script which features are enabled:

echo "Use iptables             : ${USE_IPTABLES}"
if test .$USE_IPTABLES = .Yes; then
  echo "Use libipset             : ${USE_LIBIPSET}"
fi

Once again, the libipset support only makes sense when iptables is
enabled.

However, the configure.ac script also has some logic to detect if a
--<something>-libipset option is passed while iptables is enabled:

AS_IF([test .$enable_iptables = .no],
    AS_IF([test .$enable_libipset != .], [AC_MSG_ERROR([disable-libipset requires vrrp and iptables])])
  )

The error message is quite misleading because it is in fact displayed
as soon as a --<something>-libipset is passed not just
--disable-libipset.

In the context of Buildroot, we are always passing a
--<something>-libipset, regardless of whether iptables support is
enabled or not, which makes the build error out:

configure: error: disable-libipset requires vrrp and iptables

This commit fixes that by enclosing the libipset logic inside the
iptables condition. When iptables is not available, we pass
--disable-iptables and that's it, nothing else is needed. When
iptables is available, we pass --enable-iptables *and*
--enable-libipset or --disable-libipset depending on the availability
of libipset.

This has been tested successfully with the following combinations:

 - keepalived, without iptables or libipset
 - keepalived, with iptables, but without libipset
 - keepalived, without iptables, but with libipset. In this case
   libipset is obviously not used.
 - keepalived, with iptables and with libipset. Both are used. Note
   that you will not see the keepalived binary linked with libipset.so
   in "readelf -d" because keepalived dlopen()s the libipset.so
   library by default.

Fixes:

  http://autobuild.buildroot.org/results/a1712b2cc3ad878e6876325ec7d4c434d0d9d11b/
  (case with --disable-libipset --disable-iptables)

  http://autobuild.buildroot.net/results/4567e3b0a0510e8a615781178ff5bbbd835a92c3/
  (case with --enable-libipset --disable-iptables)

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
2020-08-15 22:39:37 +02:00
arch arch/Config.in: add BR2_ARCH_NEEDS_GCC_AT_LEAST_10 2020-06-24 21:57:43 +02:00
board configs/arcturus_ucls1012a: bump kernel to 4.14.140 and u-boot version to 2019.10 2020-08-12 16:41:06 +02:00
boot boot/optee-os: depend on host-python3 2020-08-09 00:13:41 +02:00
configs configs/qemu_*: bump kernel version to 5.4.58 2020-08-14 23:01:49 +02:00
docs Update for 2020.08-rc1 2020-08-06 23:07:30 +02:00
fs fs/cpio: generate reproducible archives 2020-06-29 17:57:12 +02:00
linux {linux, linux-headers}: bump 4.{4, 9, 14, 19}.x / 5.{4, 7}.x series 2020-07-31 09:06:47 +02:00
package package/keepalived: ipset support only makes sense when iptables is enabled 2020-08-15 22:39:37 +02:00
support gitlab-ci: update the image version 2020-08-15 09:47:00 +02:00
system system: replace nogroup with nobody 2020-07-18 14:18:33 +02:00
toolchain Revert "toolchain/toolchain-buildroot: enable uclibc for riscv64" 2020-08-15 22:20:39 +02:00
utils utils/scanpypi: use raw strings in re.compile/re.sub 2020-08-14 21:56:17 +02:00
.defconfig arch: remove support for sh64 2016-09-08 22:15:15 +02:00
.flake8 .flake8: fix check for 80/132 columns 2019-04-10 12:31:33 +02:00
.gitignore
.gitlab-ci.yml gitlab-ci: update the image version 2020-08-15 09:47:00 +02:00
CHANGES CHANGES: update for 2020.08-rc1 2020-08-06 22:36:12 +02:00
Config.in Config.in: update BR2_OPTIMIZE_FAST prompt and help text 2020-07-18 16:05:01 +02:00
Config.in.legacy package/efl: bump to version 1.23.2 2020-08-05 15:27:15 +02:00
COPYING COPYING: add exception about patch licensing 2016-02-26 19:50:13 +01:00
DEVELOPERS DEVELOPERS: drop Maxime Ripard from kmsxx maintainers 2020-08-15 10:08:07 +02:00
Makefile Update for 2020.08-rc1 2020-08-06 23:07:30 +02:00
Makefile.legacy Remove BR2_DEPRECATED 2016-10-15 23:14:45 +02:00
README README: add reference to submitting-patches 2016-02-01 19:16:08 +01:00

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with 'make manual-text' and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run 'make menuconfig'
2) select the target architecture and the packages you wish to compile
3) run 'make'
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot.  Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
'make list-defconfigs' to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on Freenode IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches