aboutsummaryrefslogtreecommitdiffstats
path: root/packaging/rpm
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2018-03-20 23:15:33 +0000
committerAnders Broman <a.broman58@gmail.com>2018-03-26 14:00:35 +0000
commit1cd92c496102a7cd0d396ad94da767287a1c990c (patch)
tree8acc1fbbc77432e60b155edd1f9115420a18cc98 /packaging/rpm
parenta0fd52dcae8d365b68dfdf2d7f99ddf79d6e49bc (diff)
CMake: Add an rpm-package target.
Copy the current wireshark.spec.in and update it for use with CMake. Remove the Qt4, GTK+2, and GTK+3 options. Add Ninja and mmdbresolve options. The rpm-package target builds a tarball using git-export-release.sh and therefore must be run from a git checkout. The RPM _prefix macro is set to CMAKE_INSTALL_PREFIX, so you'll probably want to run cmake -DCMAKE_INSTALL_PREFIX=/usr ... Change-Id: Ib014494d8858a0059126404cd91528ded5d8a9f6 Reviewed-on: https://code.wireshark.org/review/26579 Reviewed-by: Gerald Combs <gerald@wireshark.org> Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Jaap Keuter <jaap.keuter@xs4all.nl> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'packaging/rpm')
-rw-r--r--packaging/rpm/Makefile.am2
-rw-r--r--packaging/rpm/wireshark.spec.in549
2 files changed, 551 insertions, 0 deletions
diff --git a/packaging/rpm/Makefile.am b/packaging/rpm/Makefile.am
index a8fcf76cca..229f766a04 100644
--- a/packaging/rpm/Makefile.am
+++ b/packaging/rpm/Makefile.am
@@ -1,6 +1,8 @@
DIST_SUBDIRS = SPECS
+EXTRA_DIST = wireshark.spec.in
+
clean-local:
rm -rf BUILD RPMS SOURCES SRPMS
diff --git a/packaging/rpm/wireshark.spec.in b/packaging/rpm/wireshark.spec.in
new file mode 100644
index 0000000000..de4c346eb5
--- /dev/null
+++ b/packaging/rpm/wireshark.spec.in
@@ -0,0 +1,549 @@
+# Note that this is NOT a relocatable package
+# XXX is this still true? https://fedoraproject.org/wiki/Packaging:Cmake
+# says that recent CMake versions take care of rpathification.
+#
+# BUILD_wireshark: @BUILD_wireshark@
+# CMAKE_INSTALL_PREFIX: @CMAKE_INSTALL_PREFIX@
+
+# To do:
+# - Find a better way to sync with git-export-release.sh.
+# - We currently install into /usr/local.
+
+%bcond_without qt5
+%bcond_with lua
+%bcond_with mmdbresolve
+%bcond_with ninja
+# To do: Add bcond_with clang
+
+# Set these to 1 if you want to ensure your package includes support for them:
+# Should we use bcond_with and bcond_without here?
+%global with_lz4_and_snappy 1
+%global with_c_ares 1
+%global with_spandsp 0
+%global with_bcg729 0
+%global with_libxml2 1
+%global with_nghttp2 1
+
+# Set at most one of these two:
+# Note that setcap requires rpmbuild 4.7.0 or later.
+%global setuid_dumpcap 0
+%global setcap_dumpcap 1
+
+# Set to 1 if you want a group called 'wireshark' which users must be a member
+# of in order to run dumpcap. Only used if setuid_dumpcap or setcap_dumpcap
+# are set.
+%global use_wireshark_group 1
+
+%global package_version @RPM_TARBALL_VERSION@
+
+
+Summary: Wireshark is the world's foremost protocol analyzer
+Name: wireshark
+Version: @RPM_VERSION@
+Release: 1
+License: GPLv2+
+Group: Applications/Internet
+Source: https://www.wireshark.org/download/src/%{name}-%{package_version}.tar.xz
+# Or this URL for automated builds:
+#Source: https://www.wireshark.org/download/automated/src/%%{name}-%%{package_version}.tar.xz
+URL: https://www.wireshark.org/
+Packager: Gerald Combs <gerald[AT]wireshark.org>
+# Some distributions create a wireshark-devel package; get rid of it
+Obsoletes: wireshark-devel
+
+BuildRoot: /tmp/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+BuildRequires: cmake
+BuildRequires: gcc
+BuildRequires: python
+BuildRequires: perl
+BuildRequires: flex
+BuildRequires: bison
+# HTML guides
+BuildRequires: asciidoctor
+
+BuildRequires: glib2-devel >= @GLIB2_MIN_VERSION@
+Requires: glib2 >= @GLIB2_MIN_VERSION@
+BuildRequires: libpcap-devel
+Requires: libpcap
+BuildRequires: zlib-devel
+Requires: zlib
+BuildRequires: libgcrypt-devel
+Requires: libgcrypt
+
+%if %{with_lz4_and_snappy}
+%if 0%{?suse_version}
+BuildRequires: liblz4-devel
+BuildRequires: snappy-devel
+Requires: libsnappy1
+Requires: liblz4-1
+%else
+BuildRequires: lz4-devel
+BuildRequires: snappy-devel
+Requires: snappy
+Requires: lz4
+%endif
+%endif
+
+%if %{with_c_ares}
+%if 0%{?suse_version}
+# SuSE uses these package names (yes 2!):
+BuildRequires: libcares-devel
+Requires: libcares2
+%else
+# ... while Red Hat uses this one:
+# (What other RPM-based distros do will have to be determined...)
+BuildRequires: c-ares-devel
+Requires: c-ares
+%endif
+%endif
+
+%if %{with lua}
+BuildRequires: lua-devel < 5.3
+Requires: lua < 5.3
+%endif
+
+%if %{with_nghttp2}
+BuildRequires: libnghttp2-devel
+Requires: libnghttp2
+%endif
+
+# Uncomment these if you want to be sure you get them...
+#BuildRequires: krb5-devel
+#BuildRequires: libsmi-devel
+#BuildRequires: pcre-devel
+#BuildRequires: libselinux
+#BuildRequires: gnutls-devel
+#BuildRequires: libcap-devel
+
+%if %{use_wireshark_group}
+%if 0%{?suse_version}
+# SuSE's groupadd is in this package:
+Requires(pre): pwdutils
+%else
+# ... while Red Hat's is in this one:
+Requires(pre): shadow-utils
+%endif
+%endif
+
+%if %{setcap_dumpcap}
+# Actually we require rpmbuild (the program) >= 4.7.0 but the package name
+# where we can find it varies. So we check the 'rpm' version because either
+# rpmbuild is in that package (e.g., in older distros) or it's in the
+# 'rpm-build' package which generally requires a matching version of 'rpm'.
+#
+# All of this is to save users the trouble of getting through an full compile
+# only to have rpmbuild barf because it doesn't understand capabilities.
+BuildRequires: rpm >= 4.7.0
+%endif
+
+# NOTE: the below description has been copied to wireshark.appdata.xml (in the
+# top-level directory).
+%description
+Wireshark allows you to examine protocol data stored in files or as it is
+captured from wired or wireless (WiFi or Bluetooth) networks, USB devices,
+and many other sources. It supports dozens of protocol capture file formats
+and understands more than a thousand protocols.
+
+It has many powerful features including a rich display filter language
+and the ability to reassemble multiple protocol packets in order to, for
+example, view a complete TCP stream, save the contents of a file which was
+transferred over HTTP or CIFS, or play back an RTP audio stream.
+
+This package contains command-line utilities, plugins, and documentation for
+Wireshark. A Qt graphical user interface is packaged separately.
+
+%if %{with qt5}
+%package qt
+Summary: Wireshark's Qt-based GUI
+Group: Applications/Internet
+%if 0%{?suse_version}
+Requires: libQt5Core5
+Requires: libQt5Gui5
+Requires: libQt5Widgets5
+Requires: libQt5PrintSupport5
+Requires: libQt5Multimedia5
+BuildRequires: libQt5Core-devel
+BuildRequires: libQt5Gui-devel
+BuildRequires: libQt5Widgets-devel
+BuildRequires: libQt5PrintSupport-devel
+BuildRequires: libqt5-qtmultimedia-devel
+%else
+Requires: qt5-qtbase
+Requires: qt5-qtbase-gui
+Requires: qt5-qtmultimedia
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtmultimedia-devel
+%endif
+Requires: %{name} = %{version}-%{release}
+Requires: xdg-utils
+Requires: hicolor-icon-theme
+BuildRequires: desktop-file-utils
+Requires(post): desktop-file-utils
+BuildRequires: gcc-c++
+%if 0%{?suse_version}
+# Need this for SuSE's suse_update_desktop_file macro
+BuildRequires: update-desktop-files
+%endif
+
+%description qt
+This package contains the Qt Wireshark GUI and desktop integration files.
+%endif
+
+
+%if %{with mmdbresolve}
+BuildRequires: libmaxminddb-devel
+Requires: libmaxminddb
+%endif
+
+# Uncomment these if you want to be sure you get them...
+# Add this for more readable fonts on some distributions/versions
+#Requires: dejavu-sans-mono-fonts
+
+
+%prep
+%setup -q -n %{name}-%{package_version}
+
+# Don't specify the prefix here: configure is a macro which expands to set
+# the prefix and everything else too. If you need to change the prefix
+# set _prefix (note the underscore) either in this file or on rpmbuild's
+# command-line.
+%cmake \
+%if %{with qt5}
+ -DBUILD_wireshark=ON \
+%else
+ -DBUILD_wireshark=OFF \
+%endif
+%if %{with lua}
+ -DENABLE_LUA=ON \
+%else
+ -DENABLE_LUA=OFF \
+%endif
+%if %{with mmdbresolve}
+ -DBUILD_mmdbresolve=ON \
+%else
+ -DBUILD_mmdbresolve=OFF \
+%endif
+%if %{with_lz4_and_snappy}
+ -DENABLE_LZ4=ON \
+ -DENABLE_SNAPPY=ON \
+%else
+ -DENABLE_LZ4=OFF \
+ -DENABLE_SNAPPY=OFF \
+%endif
+%if %{with_c_ares}
+ -DENABLE_CARES=ON \
+%else
+ -DENABLE_CARES=OFF \
+%endif
+%if %{with_spandsp}
+ -DENABLE_SPANDSP=ON \
+%else
+ -DENABLE_SPANDSP=OFF \
+%endif
+%if %{with_bcg729}
+ -DENABLE_BCG729=ON \
+%else
+ -DENABLE_BCG729=OFF \
+%endif
+%if %{with_libxml2}
+ -DENABLE_LIBXML2=ON \
+%else
+ -ENABLE_LIBXML2=OFF \
+%endif
+%if %{with_nghttp2}
+ -DENABLE_NGHTTP2=ON \
+%else
+ -DENABLE_NGHTTP2=OFF \
+%endif
+ -DDISABLE_WERROR=ON \
+%if %{with ninja}
+ -G Ninja \
+%endif
+ .
+
+%if %{with ninja}
+ninja
+%else
+# Suggestion: put this in your ~/.rpmmacros (without the hash sign, of course):
+# %_smp_mflags -j %(grep -c processor /proc/cpuinfo)
+make %{?_smp_mflags}
+%endif
+
+%install
+rm -rf $RPM_BUILD_ROOT
+%if %{with ninja}
+DESTDIR=$RPM_BUILD_ROOT ninja install
+DESTDIR=$RPM_BUILD_ROOT ninja install_guides
+%else
+make DESTDIR=$RPM_BUILD_ROOT install
+%endif
+
+# If we're being installed in an unusual prefix tell the loader where
+# to find our libraries.
+%if "%{_prefix}" != "/usr"
+ %define install_ld_so_conf 1
+ mkdir -p $RPM_BUILD_ROOT/etc/ld.so.conf.d
+ echo %{_libdir} > $RPM_BUILD_ROOT/etc/ld.so.conf.d/wireshark.conf
+%endif
+
+%if %{with qt5}
+%if 0%{?suse_version}
+# SuSE's packaging conventions
+# (http://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros#.25suse_update_desktop_file)
+# require this:
+%suse_update_desktop_file %{name}
+%else
+# Fedora's packaging guidelines (https://fedoraproject.org/wiki/Packaging:Guidelines)
+# require this (at least if desktop-file-install was not used to install it).
+desktop-file-validate %{buildroot}%{_datadir}/applications/wireshark.desktop
+%endif
+%endif
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%pre
+%if %{use_wireshark_group}
+getent group wireshark >/dev/null || groupadd -r wireshark
+%endif
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%if %{with qt5}
+%post qt
+update-desktop-database %{_datadir}/applications &> /dev/null || :
+update-mime-database %{_datadir}/mime &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun qt
+update-desktop-database %{_datadir}/applications &> /dev/null ||:
+update-mime-database %{_datadir}/mime &> /dev/null || :
+%endif
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS COPYING ChangeLog INSTALL NEWS README*
+
+# Include the User Guide:
+%if %{with ninja}
+%docdir %{_datadir}/doc/Wireshark/
+%{_datadir}/doc/Wireshark/
+%else
+%docdir %{_datadir}/doc/wireshark/guides/
+%{_datadir}/doc/wireshark/guides/
+%else
+%endif
+
+# Don't pick up any of the wireshark (GUI) binaries here
+%exclude %{_bindir}/wireshark*
+%{_bindir}/*
+
+# This generates a warning because dumpcap is listed twice. That's
+# probably preferable to listing each program (and keeping the list up to
+# date)... Maybe if we can find a way to get the toplevel Makefile.am's
+# bin_PROGRAMS in here?
+%if %{use_wireshark_group} && %{setuid_dumpcap}
+# Setuid but only executable by members of the 'wireshark' group
+%attr(4750, root, wireshark) %{_bindir}/dumpcap
+%else
+%if %{use_wireshark_group} && %{setcap_dumpcap}
+# Setcap but only executable by members of the 'wireshark' group
+%attr(0750, root, wireshark) %caps(cap_net_raw,cap_net_admin=ep) %{_bindir}/dumpcap
+%else
+%if %{setuid_dumpcap}
+# Setuid and executable by all
+%attr(4755, root, root) %{_bindir}/dumpcap
+%else
+%if %{setcap_dumpcap}
+# Setcap and executable by all
+%attr(0755, root, root) %caps(cap_net_raw,cap_net_admin=ep) %{_bindir}/dumpcap
+%else
+# Executable by all but with no special permissions
+%attr(0755, root, root) %{_bindir}/dumpcap
+%endif
+%endif
+%endif
+%endif
+
+%{_libdir}/lib*.so*
+%{_libdir}/wireshark
+%{_libdir}/pkgconfig/wireshark.pc
+# Don't pick up the wireshark (GUI) man page
+%exclude %{_mandir}/man1/wireshark.*
+%{_mandir}/man1/*
+%{_mandir}/man4/*
+%{_datadir}/wireshark
+%{_includedir}/wireshark
+%if 0%{?install_ld_so_conf}
+/etc/ld.so.conf.d/wireshark.conf
+%endif
+
+%if %{with qt5}
+%files qt
+%defattr(-,root,root)
+%{_datadir}/applications/wireshark.desktop
+%{_datadir}/appdata/wireshark.appdata.xml
+%{_datadir}/icons/hicolor/*/apps/*
+%{_datadir}/icons/hicolor/*/mimetypes/*
+%{_datadir}/mime/packages/wireshark.xml
+%{_bindir}/wireshark
+%{_mandir}/man1/wireshark.*
+%endif
+
+%changelog
+* Tue Mar 20 2018 Gerald Combs
+- Migrate from Autotools to CMake.
+- Remove Qt4, GTK+ 2, and GTK+ 3 sections.
+- Require flex, bison, and libgcrypt.
+- Optionally build with Ninja.
+
+* Sat Dec 2 2017 Jeff Morriss
+- Include the User Guide (now installed by default by autotools).
+
+* Wed Jul 26 2017 Pascal Quantin
+- Added bcg729 (as an option, defaulting to not required).
+
+* Tue Apr 4 2017 Ahmad Fatoum
+- Added libxml2 (as an option, defaulting to required).
+
+* Tue Dec 20 2016 Anders Broman
+- Add with extcap (as an option, defaulting to yes).
+
+* Mon Dec 5 2016 Jeff Morriss
+- Add spandsp (as an option, defaulting to not required).
+
+* Tue Oct 18 2016 Benoit Canet
+- Add LZ4 and snappy compression support.
+
+* Mon Aug 29 2016 Jeff Morriss
+- Add libnghttp2 (as an option, defaulting to required).
+
+* Wed Aug 17 2016 Jeff Morriss
+- wireshark.pc is now installed with Wireshark, include it in the RPM.
+
+* Mon May 9 2016 Jeff Morriss
+- Make autoconf, automake, flex, and bison optional: most users (who aren't
+ patching Wireshark) don't need them to build an RPM.
+
+* Tue Nov 10 2015 Jeff Morriss
+- Rename the gnome package to gtk: Wireshark uses Gtk+ but isn't part of GNOME.
+
+* Mon Sep 14 2015 Jeff Morriss
+- Follow ./configure's decision on whether to configure Lua or not rather than
+ forcing it to be enabled (and thus failing on some distros which don't ship
+ a compatible version of Lua any more).
+
+* Sat Sep 12 2015 Jeffrey Smith
+- Begin support for Qt5
+
+* Thu Jan 22 2015 Jeff Morriss
+- Add appdata file.
+
+* Tue Jan 20 2015 Jeff Morriss
+- Make the license tag more specific: Wireshark is GPLv2+.
+
+* Mon Jan 12 2015 Jeff Morriss
+- Modernize the (base package) %description.
+
+* Wed Dec 3 2014 Jeff Morriss
+- Don't run gtk-update-icon-cache when uninstalling the Qt package. But do run
+ it when installing the gnome package.
+- Tell the loader where to find our libraries if we're being installed
+ someplace other than /usr .
+- Attempt to get RPMs working with a prefix other than /usr (now that the
+ (free)desktop files are no longer always installed /usr). Desktop
+ integration doesn't work for prefixes other than "/usr" or "/usr/local".
+
+* Fri Aug 29 2014 Gerald Combs
+- The Qt UI is now the default. Update logic and prioritization to
+ reflect this.
+
+* Mon Aug 4 2014 Jeff Morriss
+- Fix RPM builds with a prefix other than /usr: The location of
+ update-alternatives does not depend on Wireshark's installation prefix:
+ it's always in /usr/sbin/.
+
+* Fri Aug 1 2014 Jeff Morriss
+- Remove the old wireshark binary during RPM upgrades: this is needed because
+ we now declare wireshark to be %ghost so it doesn't get overwritten during an
+ upgrade (but in older RPMs it was the real program).
+
+* Tue Jul 1 2014 Jeff Morriss
+- Get rid of rpath when we're building RPMs: Fedora prohibits it, we don't
+ need it, and it gets in the way some times.
+
+* Tue Nov 26 2013 Jeff Morriss
+- Overhaul options handling to pull in the UI choice from ./configure.
+- Make it possible to not build the GNOME package.
+
+* Tue Nov 12 2013 Jeff Morriss
+- Add a qt package using 'alternatives' to allow the administrator to choose
+ which one they actually use.
+
+* Fri Sep 20 2013 Jeff Morriss
+- If we're not using gtk3 add --with-gtk2 (since Wireshark now defaults to gtk3)
+
+* Thu Mar 28 2013 Jeff Morriss
+- Simplify check for rpmbuild's version.
+
+* Fri Mar 8 2013 Jeff Morriss
+- Put all icons in hicolor
+- Use SuSE's desktop-update macro.
+- Actually update MIME database when Wireshark's prefix is not /usr .
+
+* Thu Mar 7 2013 Jeff Morriss
+- List more build dependencies.
+- Update to work on SuSE too: some of their package names are different.
+
+* Wed Mar 6 2013 Gerald Combs
+- Enable c-ares by default
+
+* Thu Feb 7 2013 Jeff Morriss
+- Overhaul to make this file more useful/up to date. Many changes are based
+ on Fedora's .spec file. Changes include:
+ - Create a separate wireshark-gnome package (like Red Hat).
+ - Control some things with variables set at the top of the file.
+ - Allow the user to configure how dumpcap is installed.
+ - Allow the user to choose some options including GTK2 or GTK3.
+ - Greatly expand the BuildRequires entries; get the minimum versions of some
+ things from 'configure'.
+ - Install freedesktop files for better (free)desktop integration.
+
+* Thu Aug 10 2006 Joerg Mayer
+- Starting with X.org 7.x X11R6 is being phased out. Install wireshark
+ and manpage into the standard path.
+
+* Mon Aug 01 2005 Gerald Combs
+- Add a desktop file and icon for future use
+
+- Take over the role of packager
+
+- Update descriptions and source locations
+
+* Thu Oct 28 2004 Joerg Mayer
+- Add openssl requirement (heimdal and net-snmp are still automatic)
+
+* Tue Jul 20 2004 Joerg Mayer
+- Redo install and files section to actually work with normal builds
+
+* Sat Feb 07 2004 Joerg Mayer
+- in case there are shared libs: include them
+
+* Tue Aug 24 1999 Gilbert Ramirez
+- changed to ethereal.spec.in so that 'configure' can update
+ the version automatically
+
+* Tue Aug 03 1999 Gilbert Ramirez <gram@xiexie.org>
+- updated to 0.7.0 and changed gtk+ requirement
+
+* Sun Jan 03 1999 Gerald Combs <gerald@zing.org>
+- updated to 0.5.1
+
+* Fri Nov 20 1998 FastJack <fastjack@i-s-o.net>
+- updated to 0.5.0
+
+* Sun Nov 15 1998 FastJack <fastjack@i-s-o.net>
+- created .spec file