about summary refs log tree commit diff
path: root/pkgs/applications/networking/sniffers/wireshark/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/sniffers/wireshark/default.nix')
-rw-r--r--pkgs/applications/networking/sniffers/wireshark/default.nix67
1 files changed, 31 insertions, 36 deletions
diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix
index db093310ca1ae..b9d973287d295 100644
--- a/pkgs/applications/networking/sniffers/wireshark/default.nix
+++ b/pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -1,45 +1,41 @@
 { stdenv, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
-, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python, libcap, glib
+, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python3, libcap, glib
 , libssh, zlib, cmake, extra-cmake-modules, fetchpatch, makeWrapper
-, withGtk ? false, gtk3 ? null, librsvg ? null, gsettings-desktop-schemas ? null, wrapGAppsHook ? null
 , withQt ? true, qt5 ? null
 , ApplicationServices, SystemConfiguration, gmp
 }:
 
-assert withGtk -> !withQt  && gtk3 != null;
-assert withQt  -> !withGtk && qt5  != null;
+assert withQt  -> qt5  != null;
 
 with stdenv.lib;
 
 let
-  version = "2.6.6";
-  variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
+  version = "3.0.1";
+  variant = if withQt then "qt" else "cli";
 
 in stdenv.mkDerivation {
-  name = "wireshark-${variant}-${version}";
+  pname = "wireshark-${variant}";
+  inherit version;
   outputs = [ "out" "dev" ];
 
   src = fetchurl {
     url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz";
-    sha256 = "0qz8a1ays63712pq1v7nnw7c57zlqkcifq7himfv5nsv0zm36ya8";
+    sha256 = "13605bpnnbqsdr8ybqnscbz9g422zmyymn4q5aci28vc1wylr1l6";
   };
 
   cmakeFlags = [
-    "-DBUILD_wireshark_gtk=${if withGtk then "ON" else "OFF"}"
     "-DBUILD_wireshark=${if withQt then "ON" else "OFF"}"
-    "-DENABLE_QT5=${if withQt then "ON" else "OFF"}"
     "-DENABLE_APPLICATION_BUNDLE=${if withQt && stdenv.isDarwin then "ON" else "OFF"}"
   ];
 
   nativeBuildInputs = [
     bison cmake extra-cmake-modules flex pkgconfig
-  ] ++ optional withGtk wrapGAppsHook;
+  ];
 
   buildInputs = [
     gettext pcre perl libpcap lua5 libssh openssl libgcrypt
-    libgpgerror gnutls geoip c-ares python glib zlib makeWrapper
+    libgpgerror gnutls geoip c-ares python3 glib zlib makeWrapper
   ] ++ optionals withQt  (with qt5; [ qtbase qtmultimedia qtsvg qttools ])
-    ++ optionals withGtk [ gtk3 librsvg gsettings-desktop-schemas ]
     ++ optionals stdenv.isLinux  [ libcap libnl ]
     ++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ]
     ++ optionals (withQt && stdenv.isDarwin) (with qt5; [ qtmacextras ]);
@@ -60,32 +56,29 @@ in stdenv.mkDerivation {
     export LD_LIBRARY_PATH="$PWD/run"
   '';
 
-  postInstall = if stdenv.isDarwin then ''
-    ${optionalString withQt ''
-      mkdir -p $out/Applications
-      mv $out/bin/Wireshark.app $out/Applications/Wireshark.app
-
-      for so in $out/Applications/Wireshark.app/Contents/PlugIns/wireshark/*.so; do
-        install_name_tool $so -change libwireshark.10.dylib $out/lib/libwireshark.10.dylib
-        install_name_tool $so -change libwiretap.7.dylib $out/lib/libwiretap.7.dylib
-        install_name_tool $so -change libwsutil.8.dylib $out/lib/libwsutil.8.dylib
-      done
-
-      wrapProgram $out/Applications/Wireshark.app/Contents/MacOS/Wireshark \
+  postInstall = ''
+    # to remove "cycle detected in the references"
+    mkdir -p $dev/lib/wireshark
+    mv $out/lib/wireshark/cmake $dev/lib/wireshark
+  '' + (if stdenv.isDarwin && withQt then ''
+    mkdir -p $out/Applications
+    mv $out/bin/Wireshark.app $out/Applications/Wireshark.app
+
+    for f in $(find $out/Applications/Wireshark.app/Contents/PlugIns -name "*.so"); do
+        for dylib in $(otool -L $f | awk '/^\t*lib/ {print $1}'); do
+            install_name_tool -change "$dylib" "$out/lib/$dylib" "$f"
+        done
+    done
+
+    wrapProgram $out/Applications/Wireshark.app/Contents/MacOS/Wireshark \
         --set QT_PLUGIN_PATH ${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}
-    ''}
-  '' else optionalString (withQt || withGtk) ''
-    ${optionalString withGtk ''
-      install -Dm644 -t $out/share/applications ../wireshark-gtk.desktop
-    ''}
-    ${optionalString withQt ''
-      install -Dm644 -t $out/share/applications ../wireshark.desktop
-      wrapProgram $out/bin/wireshark \
+  '' else optionalString withQt ''
+    install -Dm644 -t $out/share/applications ../wireshark.desktop
+    wrapProgram $out/bin/wireshark \
         --set QT_PLUGIN_PATH ${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}
-    ''}
 
     substituteInPlace $out/share/applications/*.desktop \
-      --replace "Exec=wireshark" "Exec=$out/bin/wireshark"
+        --replace "Exec=wireshark" "Exec=$out/bin/wireshark"
 
     install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
     mkdir $dev/include/{epan/{wmem,ftypes,dfilter},wsutil,wiretap} -pv
@@ -98,10 +91,12 @@ in stdenv.mkDerivation {
     cp ../epan/dfilter/*.h $dev/include/epan/dfilter/
     cp ../wsutil/*.h $dev/include/wsutil/
     cp ../wiretap/*.h $dev/include/wiretap
-  '';
+  '');
 
   enableParallelBuilding = true;
 
+  dontFixCmake = true;
+
   shellHook = ''
     # to be able to run the resulting binary
     export WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1