diff options
author | Eli Schwartz <eschwartz93@gmail.com> | 2024-04-05 02:17:29 -0400 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2024-04-07 07:16:13 +0100 |
commit | 55ba652f60fdd2504542f71b0b3ebcec3c8e0723 (patch) | |
tree | 9ea451664c6dce8697d6a3282b9073090d356b93 /net-wireless | |
parent | net-wireless/kismet: make acct-*/ dependencies runtime-only (diff) | |
download | gentoo-55ba652f60fdd2504542f71b0b3ebcec3c8e0723.tar.gz gentoo-55ba652f60fdd2504542f71b0b3ebcec3c8e0723.tar.bz2 gentoo-55ba652f60fdd2504542f71b0b3ebcec3c8e0723.zip |
net-wireless/kismet: Add patch to fix bashisms in configure
Submitted upstream. Not added to live ebuild because I hope it will soon
be integrated...
Closes: https://bugs.gentoo.org/890020
Signed-off-by: Eli Schwartz <eschwartz93@gmail.com>
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'net-wireless')
-rw-r--r-- | net-wireless/kismet/files/0001-configure.ac-bashism-fix-critical-existence-failure-.patch | 280 | ||||
-rw-r--r-- | net-wireless/kismet/kismet-2023.07.1.ebuild | 10 |
2 files changed, 286 insertions, 4 deletions
diff --git a/net-wireless/kismet/files/0001-configure.ac-bashism-fix-critical-existence-failure-.patch b/net-wireless/kismet/files/0001-configure.ac-bashism-fix-critical-existence-failure-.patch new file mode 100644 index 000000000000..3cf4ed8cff85 --- /dev/null +++ b/net-wireless/kismet/files/0001-configure.ac-bashism-fix-critical-existence-failure-.patch @@ -0,0 +1,280 @@ +From d3732f93cbdc9edf39d31c7c50b72cc6a79be0dc Mon Sep 17 00:00:00 2001 +From: Eli Schwartz <eschwartz93@gmail.com> +Date: Fri, 5 Apr 2024 00:42:29 -0400 +Subject: [PATCH] configure.ac: bashism: fix critical existence failure on + systems with dash + +Remove the consistent use of bashisms. An autoconf generated script is +designed to work with POSIX sh, and contains a /bin/sh shebang. As a +result, it *cannot* assume it will be run with bash, as it won't be. + +The bashism in question is the double equals (`==`) operator for the +test command. It is actually a bash-specific alias for the single equals +operator. It behaves exactly the same, except more confusing. It +contains no added functionality and no behavior changes, it is merely an +additional alternate spelling. In exchange for doing nothing whatsoever, +even in bash, it breaks muscle memory when writing POSIX sh scripts and +tricks developers into writing the wrong thing. + +It is terrible and should never be used under any circumstances. +Ideally it would be removed altogether from GNU bash. + +Fixes the following warnings when running configure: + +``` +./configure: 5011: test: x: unexpected operator +./configure: 5014: test: x: unexpected operator +./configure: 5017: test: x: unexpected operator +./configure: 8056: test: nox: unexpected operator +./configure: 8109: test: yesx: unexpected operator +./configure: 8120: test: 3: unexpected operator +./configure: 8144: test: unexpected operator +./configure: 9089: test: stdc++x: unexpected operator +./configure: 9937: test: 0: unexpected operator +./configure: 10084: test: 0: unexpected operator +./configure: 10207: test: 0: unexpected operator +./configure: 10283: test: 0: unexpected operator +./configure: 11363: test: x: unexpected operator +./configure: 11561: test: x: unexpected operator +./configure: 11634: test: xno: unexpected operator +./configure: 11663: test: xno: unexpected operator +./configure: 12490: test: 3: unexpected operator +./configure: 13150: test: no: unexpected operator +./configure: 13167: test: no: unexpected operator +``` + +And the following fatal errors when trying to compile, since the +resulting conditionals failed to define $(PROTOCBIN): + +``` +make -j8 +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/kismet.proto +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/http.proto +/bin/sh: 1: -I: not found +make: [Makefile:808: protobuf_cpp/kismet.pb.h] Error 127 (ignored) +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/datasource.proto +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/linuxbluetooth.proto +/bin/sh: 1: -I: not found +make: [Makefile:808: protobuf_cpp/http.pb.h] Error 127 (ignored) +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/eventbus.proto +/bin/sh: 1: -I: not found +make: [Makefile:808: protobuf_cpp/linuxbluetooth.pb.h] Error 127 (ignored) +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/kismet.proto +/bin/sh: 1: -I: not found +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/http.proto +/bin/sh: 1: -I: not found +/bin/sh: 1: -I: not found +make: [Makefile:808: protobuf_cpp/datasource.pb.h] Error 127 (ignored) +make: [Makefile:808: protobuf_cpp/eventbus.pb.h] Error 127 (ignored) +make: [Makefile:806: protobuf_cpp/kismet.pb.cc] Error 127 (ignored) +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/datasource.proto +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/linuxbluetooth.proto +cpp_out=./protobuf_cpp/ -I protobuf_definitions/ protobuf_definitions/eventbus.proto +/bin/sh: 1: -I: not found +``` + +For extra interest, the failing command begins with `--flag` i.e. a flag +passed to protoc, which Make then interprets as "ignore errors for this +command", which means output files are not created but the build then +continues and produces significantly more confusing errors such as: + +``` +kis_external.h:51:10: fatal error: protobuf_cpp/kismet.pb.h: No such file or directory +``` + +Signed-off-by: Eli Schwartz <eschwartz93@gmail.com> +--- + configure.ac | 46 +++++++++++++++++++++++----------------------- + 1 file changed, 23 insertions(+), 23 deletions(-) + +diff --git a/configure.ac b/configure.ac +index a967e3418..d3c961821 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -179,13 +179,13 @@ else + GCC_MINOR=$(echo $GCC_VERSION | cut -s -d'.' -f2) + GCC_PATCH=$(echo $GCC_VERSION | cut -s -d'.' -f3) + +- if test "$GCC_MAJOR"x == x; then ++ if test "$GCC_MAJOR"x = x; then + GCC_MAJOR=$GCC_VERSION + fi +- if test "$GCC_MINOR"x == x; then ++ if test "$GCC_MINOR"x = x; then + GCC_MINOR=0 + fi +- if test "$GCC_PATCH"x == x; then ++ if test "$GCC_PATCH"x = x; then + GCC_PATCH=0 + fi + +@@ -318,7 +318,7 @@ AC_ARG_ENABLE([element-typesafety], + esac], + [want_te_typesafety=no] + ) +-if test "$want_te_typesafety"x == "yes"x; then ++if test "$want_te_typesafety"x = "yes"x; then + AC_DEFINE(TE_TYPE_SAFETY, 1, Enforce runtime type safety) + else + AC_DEFINE(TE_TYPE_SAFETY, 0, Do not enforce runtime type safety) +@@ -357,7 +357,7 @@ AS_IF([test "x$with_python_interpreter" != "x"], + [] + ) + +-if test "$want_python"x == "no"x; then ++if test "$want_python"x = "no"x; then + BUILD_PYTHON_MODULES=0 + BUILD_CAPTURE_SDR_RTL433=0 + BUILD_CAPTURE_SDR_RTLAMR=0 +@@ -367,11 +367,11 @@ if test "$want_python"x == "no"x; then + BUILD_CAPTURE_PROXY_ADSB=0 + AC_MSG_WARN([Disabling Python and Python-related tools]) + else +- if test "$PYTHON_VERSION" == 3; then ++ if test "$PYTHON_VERSION" = 3; then + AC_PYTHON3_MODULE(setuptools) + fi + +- if test "$HAVE_PYMOD_SETUPTOOLS" == "no"; then ++ if test "$HAVE_PYMOD_SETUPTOOLS" = "no"; then + AC_MSG_ERROR([Missing python setuptools, if you would like to build without python entirely, use --disable-python-tools, otherwise install python setuptools for your python version]) + else + DATASOURCE_BINS="$DATASOURCE_BINS \$(CAPTURE_SDR_RTL433) \$(CAPTURE_SDR_RTLAMR) \$(CAPTURE_SDR_RTLADSB) \$(CAPTURE_FREAKLABS_ZIGBEE)" +@@ -675,7 +675,7 @@ CC="$CXX" + AC_CHECK_LIB([stdc++], [main], + foundcxxl="stdc++" CXXLIBS="$CXXLIBS -lstdc++") + +-if test "$foundcxxl"x == "x" -a "$caponly" != 1; then ++if test "$foundcxxl"x = "x" -a "$caponly" != 1; then + AC_MSG_ERROR(No standard stdc++ libraries found.) + fi + CC="$oCC" +@@ -939,7 +939,7 @@ if test "${wantpcre}x" = "nox" -a "${needpcre2}x" = "yesx"; then + AC_MSG_ERROR([Can not combine --disable-pcre and --enable-require-pcre2]) + fi + +-if test "$caponly" == 0; then ++if test "$caponly" = 0; then + if test "$HAVE_CXX17" = "1"; then + AC_MSG_CHECKING([Checking C++17 parallel functions]) + +@@ -1017,7 +1017,7 @@ if test "$caponly" == 0; then + fi + + # Dont' check pcre if we're only building datasources +-if test "$caponly" == 0; then ++if test "$caponly" = 0; then + if test "$wantpcre" = "yes"; then + # Check for pcre2 first + +@@ -1046,22 +1046,22 @@ if test "$caponly" == 0; then + LIBS="$OLIBS" + + if test "$pcre2" != "yes"; then +- if test "${needpcre2}x" == "yesx"; then ++ if test "${needpcre2}x" = "yesx"; then + AC_MSG_ERROR([Could not find libpcre2 and --enable-require-pcre2 selected]) + fi + + AC_CHECK_LIB([pcre], [pcre_compile], pcre1=yes, pcre1=no) + +- if test "$pcre1" == "yes"; then ++ if test "$pcre1" = "yes"; then + AC_CHECK_HEADER([pcre.h], pcre1=yes, pcre1=no) + fi + + fi + +- if test "$pcre2" == "yes"; then ++ if test "$pcre2" = "yes"; then + AC_DEFINE(HAVE_LIBPCRE2, 1, libpcre2 regex support) + LIBS="$LIBS -lpcre2-8" +- elif test "$pcre1" == "yes"; then ++ elif test "$pcre1" = "yes"; then + AC_DEFINE(HAVE_LIBPCRE, 1, libpcre1 regex support) + LIBS="$LIBS -lpcre" + else +@@ -1071,7 +1071,7 @@ if test "$caponly" == 0; then + fi + + # Don't check for sqlite3 if we're only building datasources +-if test "$caponly" == 0; then ++if test "$caponly" = 0; then + # Check for sqlite3 + sql3l=no + AC_CHECK_LIB([sqlite3], [sqlite3_libversion], sql3l=yes, sql3l=no) +@@ -1098,7 +1098,7 @@ if test "$caponly" == 0; then + fi # caponly + + # don't check for openssl if we're only building datasources +-if test "$caponly" == 0; then ++if test "$caponly" = 0; then + AX_CHECK_OPENSSL(AC_DEFINE(HAVE_OPENSSL, 1, openssl library present), + AC_MSG_ERROR(Failed to find OpenSSL library)) + fi # caponly +@@ -1212,7 +1212,7 @@ if test "$caponly" = 0 || test "$want_python" = "yes"; then + [ --with-protoc[=PATH] Custom location of the protoc protobuf compiler], + [ ]) + +- if test x"$with_protoc" == "x"; then ++ if test x"$with_protoc" = "x"; then + PROTOCBIN=protoc + AC_CHECK_PROG(protoc, [protoc], yes) + if test x"$protoc" != x"yes"; then +@@ -1254,7 +1254,7 @@ AC_ARG_WITH(protocc, + [ --with-protocc[=PATH] Custom location of the protoc protobuf compiler], + [ PROTOCCBIN=$withval ] + ) +-if test x"$with_protocc" == "x"; then ++if test x"$with_protocc" = "x"; then + PROTOCCBIN="protoc-c" + AC_CHECK_PROG(protocc, [protoc-c], yes) + if test x"$protocc" != x"yes"; then +@@ -1282,7 +1282,7 @@ AC_ARG_ENABLE(btgeiger, + [want_btgeiger=no] + ) + +-AS_IF([test "x$want_btgeiger" == "xyes"], [ ++AS_IF([test "x$want_btgeiger" = "xyes"], [ + AS_IF([test "x$want_python" != "xyes"], [ + AC_MSG_ERROR([Can not enable btgeiger without enabling python]) + ]) +@@ -1301,7 +1301,7 @@ AC_ARG_ENABLE(bladerf, + [want_bladerf=no] + ) + +-AS_IF([test "x$want_bladerf" == "xyes"], [ ++AS_IF([test "x$want_bladerf" = "xyes"], [ + PKG_CHECK_MODULES([libbladeRF], [libbladeRF], + [ + ], +@@ -1529,7 +1529,7 @@ if test "$havenetlink" = "yes"; then + fi + + if test "$nlname" != ""; then +- if test "$picked_nl" == "tiny"; then ++ if test "$picked_nl" = "tiny"; then + NLLIBS="-lnl-tiny" + else + NLLIBS=`pkg-config --libs $nlname` +@@ -1837,7 +1837,7 @@ AC_ARG_ENABLE(asan, + esac], + [want_asan=no] + ) +-if test "$want_asan" == "yes"; then ++if test "$want_asan" = "yes"; then + CPPFLAGS="$CPPFLAGS -fsanitize=address -fno-omit-frame-pointer" + LDFLAGS="$LDFLAGS -fsanitize=address" + fi +@@ -1850,7 +1850,7 @@ AC_ARG_ENABLE(tsan, + esac], + [want_tsan=no] + ) +-if test "$want_tsan" == "yes"; then ++if test "$want_tsan" = "yes"; then + CPPFLAGS="$CPPFLAGS -fsanitize=thread -fno-omit-frame-pointer" + LDFLAGS="$LDFLAGS -fsanitize=thread" + fi +-- +2.43.2 + diff --git a/net-wireless/kismet/kismet-2023.07.1.ebuild b/net-wireless/kismet/kismet-2023.07.1.ebuild index eef68f223f44..5e84c3b22723 100644 --- a/net-wireless/kismet/kismet-2023.07.1.ebuild +++ b/net-wireless/kismet/kismet-2023.07.1.ebuild @@ -26,7 +26,11 @@ else #SRC_URI="https://github.com/kismetwireless/kismet/archive/${COMMIT}.tar.gz -> ${P}.tar.gz" #S="${WORKDIR}/${PN}-${COMMIT}" - PATCHES=( "${DISTDIR}/${P}-stdint-fix.patch" ) + PATCHES=( + "${DISTDIR}/${P}-stdint-fix.patch" + # https://github.com/kismetwireless/kismet/pull/517 + "${FILESDIR}"/0001-configure.ac-bashism-fix-critical-existence-failure-.patch + ) KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" fi @@ -108,9 +112,7 @@ src_prepare() { default - if [ "${PV}" = "9999" ]; then - eautoreconf - fi + eautoreconf } src_configure() { |