Skip to content

Commit

Permalink
wireshark: use cmake and move to gtk3/qt5
Browse files Browse the repository at this point in the history
wireshark used to use autotools, but instead we now use cmake. The
change alone brought to light a few missing required dependencies.

Additionally, wireshark was using gtk2 and qt4, so that has changed to
gtk3 and qt5.
  • Loading branch information
Peter Hoeg authored and bjornfor committed Jan 31, 2017
1 parent 551c52f commit 887590e
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 37 deletions.
63 changes: 26 additions & 37 deletions pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -1,22 +1,21 @@
{ stdenv, fetchurl, pkgconfig, perl, flex, bison, libpcap, libnl, c-ares
, gnutls, libgcrypt, geoip, openssl, lua5, makeDesktopItem, python, libcap, glib
, zlib
, withGtk ? false, gtk2 ? null, pango ? null, cairo ? null, gdk_pixbuf ? null
, withQt ? false, qt4 ? null
{ stdenv, lib, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, makeDesktopItem, python, libcap, glib
, libssh, zlib, cmake, ecm
, withGtk ? false, gtk3 ? null, pango ? null, cairo ? null, gdk_pixbuf ? null
, withQt ? false, qt5 ? null
, ApplicationServices, SystemConfiguration, gmp
}:

assert withGtk -> !withQt && gtk2 != null;
assert withQt -> !withGtk && qt4 != null;
assert withGtk -> !withQt && gtk3 != null;
assert withQt -> !withGtk && qt5 != null;

with stdenv.lib;

let
version = "2.2.4";
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
in

stdenv.mkDerivation {
in stdenv.mkDerivation {
name = "wireshark-${variant}-${version}";

src = fetchurl {
Expand All @@ -25,53 +24,43 @@ stdenv.mkDerivation {
};

buildInputs = [
bison flex perl pkgconfig libpcap lua5 openssl libgcrypt gnutls
bison cmake ecm flex gettext pcre perl pkgconfig libpcap lua5 libssh openssl libgcrypt libgpgerror gnutls
geoip c-ares python glib zlib
] ++ optional withQt qt4
++ (optionals withGtk [gtk2 pango cairo gdk_pixbuf])
++ optionals stdenv.isLinux [ libcap libnl ]
] ++ (optionals withQt (with qt5; [ qtbase qtmultimedia qtsvg qttools ]))
++ (optionals withGtk [ gtk3 pango cairo gdk_pixbuf ])
++ optionals stdenv.isLinux [ libcap libnl ]
++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ];

patches = [ ./wireshark-lookup-dumpcap-in-path.patch ];

configureFlags = "--disable-usr-local --disable-silent-rules --with-ssl"
+ (if withGtk then
" --with-gtk2 --without-gtk3 --without-qt"
else if withQt then
" --without-gtk2 --without-gtk3 --with-qt"
else " --disable-wireshark");
postInstall = optionalString (withQt || withGtk) ''
${optionalString withGtk ''
install -Dm644 -t $out/share/applications ../wireshark-gtk.desktop
''}
${optionalString withQt ''
install -Dm644 -t $out/share/applications ../wireshark.desktop
''}
desktopItem = makeDesktopItem {
name = "Wireshark";
exec = "wireshark";
icon = "wireshark";
comment = "Powerful network protocol analysis suite";
desktopName = "Wireshark";
genericName = "Network packet analyzer";
categories = "Network;System";
};
substituteInPlace $out/share/applications/*.desktop \
--replace "Exec=wireshark" "Exec=$out/bin/wireshark"
postInstall = optionalString (withQt || withGtk) ''
mkdir -p "$out"/share/applications/
mkdir -p "$out"/share/icons/
cp "$desktopItem/share/applications/"* "$out/share/applications/"
cp image/wsicon.svg "$out"/share/icons/wireshark.svg
install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
'';

enableParallelBuilding = true;

meta = {
meta = with stdenv.lib; {
homepage = http://www.wireshark.org/;
description = "Powerful network protocol analyzer";
license = stdenv.lib.licenses.gpl2;
license = licenses.gpl2;

longDescription = ''
Wireshark (formerly known as "Ethereal") is a powerful network
protocol analyzer developed by an international team of networking
experts. It runs on UNIX, OS X and Windows.
'';

platforms = stdenv.lib.platforms.unix;
maintainers = with stdenv.lib.maintainers; [ bjornfor fpletz ];
platforms = platforms.unix;
maintainers = with maintainers; [ bjornfor fpletz ];
};
}
1 change: 1 addition & 0 deletions pkgs/top-level/all-packages.nix
Expand Up @@ -13273,6 +13273,7 @@ with pkgs;
withGtk = false;
inherit (darwin.apple_sdk.frameworks) ApplicationServices SystemConfiguration;
};
# The GTK UI is deprecated by upstream. You probably want the QT version.
wireshark-gtk = wireshark-cli.override { withGtk = true; };
wireshark-qt = wireshark-cli.override { withQt = true; };
wireshark = wireshark-qt;
Expand Down

0 comments on commit 887590e

Please sign in to comment.