From c843c435c9e3f290f6711386d64b0b63f20d79e6 Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Thu, 5 Oct 2023 11:51:44 +0300 Subject: wireshark: refactor --- .../networking/sniffers/wireshark/default.nix | 164 ++++++++++++--------- 1 file changed, 95 insertions(+), 69 deletions(-) (limited to 'pkgs/applications/networking/sniffers') diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix index 99839d9c99d2..60a8596850f6 100644 --- a/pkgs/applications/networking/sniffers/wireshark/default.nix +++ b/pkgs/applications/networking/sniffers/wireshark/default.nix @@ -1,60 +1,59 @@ { lib , stdenv -, buildPackages , fetchFromGitLab -, pkg-config -, pcre2 -, perl -, flex + +, ApplicationServices +, asciidoctor +, bcg729 , bison -, gettext -, libpcap -, libnl +, buildPackages , c-ares +, cmake +, flex +, gettext +, glib +, gmp , gnutls +, libcap , libgcrypt , libgpg-error +, libkrb5 , libmaxminddb +, libnl , libopus -, bcg729 -, spandsp3 -, libkrb5 -, speexdsp +, libpcap , libsmi +, libssh +, lua5 , lz4 -, snappy -, zstd +, makeWrapper , minizip -, sbc -, openssl -, lua5 -, python3 -, libcap -, glib -, libssh , nghttp2 -, zlib -, cmake , ninja -, makeWrapper +, openssl +, pcre2 +, perl +, pkg-config +, python3 +, sbc +, snappy +, spandsp3 +, speexdsp +, SystemConfiguration , wrapGAppsHook +, zlib +, zstd + , withQt ? true , qt6 ? null -, ApplicationServices -, SystemConfiguration -, gmp -, asciidoctor }: assert withQt -> qt6 != null; -let +stdenv.mkDerivation rec { + pname = "wireshark-${if withQt then "qt" else "cli"}"; version = "4.0.8"; - variant = if withQt then "qt" else "cli"; -in -stdenv.mkDerivation { - pname = "wireshark-${variant}"; - inherit version; + outputs = [ "out" "dev" ]; src = fetchFromGitLab { @@ -64,25 +63,28 @@ stdenv.mkDerivation { hash = "sha256-bNg0yhNb1GRsTclNWWO+Bamm2wOnUjVKU+JftJu+LTo="; }; - cmakeFlags = [ - "-DBUILD_wireshark=${if withQt then "ON" else "OFF"}" - "-DENABLE_APPLICATION_BUNDLE=${if withQt && stdenv.isDarwin then "ON" else "OFF"}" - # Fix `extcap` and `plugins` paths. See https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=16444 - "-DCMAKE_INSTALL_LIBDIR=lib" - "-DLEMON_C_COMPILER=cc" - "-DUSE_qt6=ON" - ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ - "-DHAVE_C99_VSNPRINTF_EXITCODE=0" - "-DHAVE_C99_VSNPRINTF_EXITCODE__TRYRUN_OUTPUT=" + patches = [ + ./wireshark-lookup-dumpcap-in-path.patch ]; - # Avoid referencing -dev paths because of debug assertions. - env.NIX_CFLAGS_COMPILE = toString [ "-DQT_NO_DEBUG" ]; - - nativeBuildInputs = [ asciidoctor bison cmake ninja flex makeWrapper pkg-config python3 perl ] - ++ lib.optionals withQt [ qt6.wrapQtAppsHook wrapGAppsHook ]; + depsBuildBuild = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + buildPackages.stdenv.cc + ]; - depsBuildBuild = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ buildPackages.stdenv.cc ]; + nativeBuildInputs = [ + asciidoctor + bison + cmake + flex + makeWrapper + ninja + perl + pkg-config + python3 + ] ++ lib.optionals withQt [ + qt6.wrapQtAppsHook + wrapGAppsHook + ]; buildInputs = [ gettext @@ -109,14 +111,49 @@ stdenv.mkDerivation { c-ares glib zlib - ] ++ lib.optionals withQt (with qt6; [ qtbase qtmultimedia qtsvg qttools qt5compat ]) - ++ lib.optionals (withQt && stdenv.isLinux) [ qt6.qtwayland ] - ++ lib.optionals stdenv.isLinux [ libcap libnl sbc ] - ++ lib.optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ]; + ] ++ lib.optionals withQt (with qt6; [ + qt5compat + qtbase + qtmultimedia + qtsvg + qttools + ]) ++ lib.optionals (withQt && stdenv.isLinux) [ + qt6.qtwayland + ] ++ lib.optionals stdenv.isLinux [ + libcap + libnl + sbc + ] ++ lib.optionals stdenv.isDarwin [ + ApplicationServices + gmp + SystemConfiguration + ]; strictDeps = true; - patches = [ ./wireshark-lookup-dumpcap-in-path.patch ]; + cmakeFlags = [ + "-DBUILD_wireshark=${if withQt then "ON" else "OFF"}" + "-DENABLE_APPLICATION_BUNDLE=${if withQt && stdenv.isDarwin then "ON" else "OFF"}" + # Fix `extcap` and `plugins` paths. See https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=16444 + "-DCMAKE_INSTALL_LIBDIR=lib" + "-DLEMON_C_COMPILER=cc" + "-DUSE_qt6=ON" + ] ++ lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [ + "-DHAVE_C99_VSNPRINTF_EXITCODE=0" + "-DHAVE_C99_VSNPRINTF_EXITCODE__TRYRUN_OUTPUT=" + ]; + + # Avoid referencing -dev paths because of debug assertions. + env.NIX_CFLAGS_COMPILE = toString [ "-DQT_NO_DEBUG" ]; + + dontFixCmake = true; + # Prevent double-wrapping, inject wrapper args manually instead. + dontWrapGApps = true; + + shellHook = '' + # to be able to run the resulting binary + export WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 + ''; postPatch = '' sed -i -e '1i cmake_policy(SET CMP0025 NEW)' CMakeLists.txt @@ -151,31 +188,20 @@ stdenv.mkDerivation { cp ../wsutil/wmem/*.h $dev/include/wsutil/wmem/ ''); - dontFixCmake = true; - - # Prevent double-wrapping, inject wrapper args manually instead. - dontWrapGApps = true; preFixup = '' qtWrapperArgs+=("''${gappsWrapperArgs[@]}") ''; - shellHook = '' - # to be able to run the resulting binary - export WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1 - ''; - meta = with lib; { - homepage = "https://www.wireshark.org/"; - changelog = "https://www.wireshark.org/docs/relnotes/wireshark-${version}.html"; description = "Powerful network protocol analyzer"; - license = licenses.gpl2Plus; - longDescription = '' Wireshark (formerly known as "Ethereal") is a powerful network protocol analyzer developed by an international team of networking experts. It runs on UNIX, macOS and Windows. ''; - + homepage = "https://www.wireshark.org"; + changelog = "https://www.wireshark.org/docs/relnotes/wireshark-${version}.html"; + license = licenses.gpl2Plus; platforms = platforms.linux ++ platforms.darwin; maintainers = with maintainers; [ bjornfor fpletz paveloom ]; mainProgram = if withQt then "wireshark" else "tshark"; -- cgit 1.4.1