Wireshark-dev: Re: [Wireshark-dev] Automated RPM-based-Linux build setup? (was Re: Automated Wi

From: Peter Wu <peter@xxxxxxxxxxxxx>
Date: Thu, 26 Nov 2015 12:17:52 +0100
On Wed, Nov 25, 2015 at 02:51:18PM -0800, Guy Harris wrote:
> 
> On Nov 25, 2015, at 2:44 PM, Guy Harris <guy@xxxxxxxxxxxx> wrote:
> 
> > On Nov 25, 2015, at 11:01 AM, Peter Wu <peter@xxxxxxxxxxxxx> wrote:
> > 
> >> Has there been any progress/work on an automated Windows environment
> >> setup? On Debian/Ubuntu it is as easy as "apt-get build-dep wireshark".
> > 
> > Speaking of automated build setups:
> > 
> > A quick look at the DNF man page on Fedora 23 doesn't seem to
> > indicate that there's any equivalent to build-dep, i.e. nothing to
> > find out what are the *source* packages for the dependencies of a
> > binary package, and installing *them*.
> > 
> > For RPM, is there not a way to say "what packages are required to
> > build this possibly-not-installed package?"
> > ("Possibly-not-installed" is significant here - somebody might not
> > have Wireshark installed from the repository, and might want to
> > build it from source without having to build and install all its
> > dependencies from source.)
> > 
> > I.e., for a package in the repository (whether it's installed or
> > not), what packages are mentioned in the BuildRequires entries for
> > that package?
> 
> Actually, that's *not* necessarily what we want; what we *really* want
> is probably "what packages are mentioned in the BuildRequires entries
> in the packaging/rpm/SPECS/wireshark.spec.in file in the Wireshark
> source directory?", as the packaged Wireshark for your OS might
> require different packages from what the Wireshark source you're
> trying to build does (for example, if the packaged Wireshark uses GTK+
> but you want to build a 2.x release).
> 
> That would require the ability to parse an RPM spec file - and to
> expand some or all of @AC_MIN_VERSION@, @GLIB_MIN_VERSION@,
> @QT_MIN_VERSION@, @GTK3_MIN_VERSION@, and @GTK2_MIN_VERSION@ without
> having the autotools installed, as the point of that setup is to
> install stuff automatically, including the autotools.

For a CentOS6 VM I used tools/install_rpms_for_devel.sh to find
dependencies, that was mostly sufficient for me. There are some other
deps that were not installed though, but cmake warned me about it. Those
extra packages (for GTK+ 2) are:

 portaudio-devel libnl3-devel krb5-devel geoip-devel libcap-devel
 gnutls-devel 

on top of:

 yum -y install autoconf automake libtool gcc flex bison python perl \
  glib2-devel libpcap-devel zlib-devel lua-devel c-ares-devel \
  gtk3-devel gtk2-devel qt-devel gcc-c++ fop asciidoc git

I also had to install epel-release for something (bash-completion),
maybe it was also needed for one of the above packages.

Usage of "apt-get build-dep" relied on the existing packaging of Debian.
That is a good start to discover most dependencies, if there is anything
missing (libssh), it is reported during the cmake/configure step. I
guess something like this also applies to RPM (though distro-supplied
RPM packages packages seem really ancient, at least for Cent OS).
-- 
Kind regards,
Peter Wu
https://lekensteyn.nl