Wireshark-dev: Re: [Wireshark-dev] Windows build setup - Concept required
From: Gerald Combs <gerald@xxxxxxxxxxxxx>
Date: Thu, 05 Dec 2013 11:59:56 -0800
On 12/4/13 12:27 PM, Joerg Mayer wrote: > Hello, > > as Graham and I are working on getting the Windows build process to > a) work at all and b) be on par with the current nmake build process > we currently rely on the setup infrastructure of the nmake build. I > really don't like porting the "nmake -f Makefile.nmake setup" to cmake. > Not because it is hard to do but because the current setup has various > shortcomings > 1) zlib is installed as source only > 2) portaudio is installed as source only I know there are historical reasons for this but are they still valid? Zlib packages are available from the OpenSUSE Build Service (linked against msvcrt.dll) and Nuget (linked against multiple runtimes). Portaudio is also available from OBS. > 3) Every package is installed into its own subdirectory, sometimes with > its own structure CoApp has a standardized directory layout for libraries and include files called "Pivots": http://coapp.org/reference/autopackage-ref.html#Pivots "Pivot" is a nicer name than "deep explodey directory tree" but it seems sensible and worth adopting IMHO. > 4) glib2 contains zlib headers that break windows builds > 5) glib3 contains zlib headers that break windows builds This should be reported as a bug at https://build.opensuse.org/package/show/windows:mingw:win64/mingw64-zlib I'm sure patches are welcome. > 6) krb5 contains includes that export krb5-build internal flags and > thus cause warnings during compiles Is there a better library we can use for Kerberos? MIT, Secure Endpoints, and Heimdal all seem to provide packages that almost-but-not-quite meet our needs. I tried cross-compiling MIT Kerberos and Heimdal using MingW in the past but didn't have much luck. > 6) Except for gtk3 no packages provide compile (includes, cflags) or > linking (libs, ldflags) information. > 7) glib3 contains pkg-config files, but they contain a wrong paths > and unuseable compiler (gcc) flags The existence of the .pc files depends on my packaging scripts and the OBS .spec files for OBS-sourced packages. Adding them shouldn't be too difficult. The tricky part is getting them to point to the correct location on Windows. I'm not sure if we can use or modify the stock .pc files or if we'd have to create our own. > 8) The current setup process does not install QT I've been hesitant to switch this on since it's such a large download and I'm not sure which "Qt" should be installed. The Qt project provides official 32- and 64-bit installers for VS 2012 and a 32-bit installer for VS 2010. We provide 32- and 64-bit packages for VS 2010. We sign the EXEs and DLLs in our packages but the Qt project doesn't. I don't know if anyone provides VS 2013 packages. > 9) To build qtshark without wireshark still requires the installation > of gtk2 or gtk3 for glib, gmodule, gthread I think we should switch from the separate wireshark-gtk2 and wireshark-qt-release directories to a common deployment directory, e.g. "wireshark-deploy" or "wireshark-stage". This would presumably help to unify our build targets. (I'd also like to get rid of ui/qt/QtShark.pro at some point in favor of CMake. Qt Creator supports CMake projects well enough, and having to maintain QtShark.pro for different platforms is a pain.) > 10) The setup process does not allow for the simultanous installation > of gtk2 and gtk3 Does GTK3 work well enough on Windows to drop GTK2? This would simplify things quite a bit. > 11) The installation of some build tools (python, cmake, cygwin-stuff like > cat, bash) might be automated - depending on the setup script language > maybe not all of them. > > So maybe something more similar to the macosx setup is wanted. Not maybe > the compile-it-yourself approach but an installation into a standard > directory structure. > > So what I'd like to have is a script (.bat or maybe Powershell) that works > similar to the macosx-setup.sh script: > > - Contain a list of packages and their versions > - Download missing packages > - Download missing tools > - Install not-yet-installed packages (includes, libs) into a standard > directory structure > > Feedback, ideas, details anyone? Sounds good to me. I like Graham's suggestion of using Chocolatey/Nuget since they're currently the best option for package management under Windows. I'd be willing to convert our current Windows libraries to Nuget packages, and have them conform to Coapp's directory layout[1]. If we could find or create Chocolatey packages for Bison and Flex that would go a long way toward dropping the requirement for Cygwin. [1] The end goal being that someone else take over maintenance of the packages. Some men dream of the heavens. I dream of no longer having to create third-party Windows development libraries.
- Follow-Ups:
- Re: [Wireshark-dev] Windows build setup - Concept required
- From: Pascal Quantin
- Re: [Wireshark-dev] Windows build setup - Concept required
- From: Graham Bloice
- Re: [Wireshark-dev] Windows build setup - Concept required
- References:
- [Wireshark-dev] Windows build setup - Concept required
- From: Joerg Mayer
- [Wireshark-dev] Windows build setup - Concept required
- Prev by Date: [Wireshark-dev] Error while installing wireshark 1.10.3
- Next by Date: Re: [Wireshark-dev] Windows build setup - Concept required
- Previous by thread: [Wireshark-dev] Windows build setup - Concept required
- Next by thread: Re: [Wireshark-dev] Windows build setup - Concept required
- Index(es):