From c843c435c9e3f290f6711386d64b0b63f20d79e6 Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Thu, 5 Oct 2023 11:51:44 +0300 Subject: [PATCH 1/2] wireshark: refactor --- .../networking/sniffers/wireshark/default.nix | 164 ++++++++++-------- 1 file changed, 95 insertions(+), 69 deletions(-) diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix index 99839d9c99d20..60a8596850f6f 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"; From baf1b6b8681745a0cd98f44747b91ddb1fc5858e Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Thu, 5 Oct 2023 12:02:06 +0300 Subject: [PATCH 2/2] wireshark: 4.0.8 -> 4.0.10 --- pkgs/applications/networking/sniffers/wireshark/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix index 60a8596850f6f..fb3399ee569b5 100644 --- a/pkgs/applications/networking/sniffers/wireshark/default.nix +++ b/pkgs/applications/networking/sniffers/wireshark/default.nix @@ -52,7 +52,7 @@ assert withQt -> qt6 != null; stdenv.mkDerivation rec { pname = "wireshark-${if withQt then "qt" else "cli"}"; - version = "4.0.8"; + version = "4.0.10"; outputs = [ "out" "dev" ]; @@ -60,7 +60,7 @@ stdenv.mkDerivation rec { repo = "wireshark"; owner = "wireshark"; rev = "v${version}"; - hash = "sha256-bNg0yhNb1GRsTclNWWO+Bamm2wOnUjVKU+JftJu+LTo="; + hash = "sha256-R8CoatIZC7vkKn4UZ3G7h5qBexfKMdJJ0swi+IxAjG0="; }; patches = [