CMake,WSDG: Remove Cygwin support

Declare Cygwin as unsupported and remove all supporting code. Simplify
some Chocolatey notes in the WSDG.

Remove FindPerl.cmake as it only existed to force use of Wireshark's
bundled FindCygwin.cmake (bug 13922). FindXSLTPROC.cmake special
handling for Cygwin was also removed, in theory this could cause issues
when the PATH contains a Cygwin xsltproc, but it's unsupported anyway.

Change-Id: Iabfac2b4a9fd930530505d27bdba618bdb8f7f34
Reviewed-on: https://code.wireshark.org/review/31452
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Peter Wu 2019-01-08 19:12:43 +01:00 committed by Anders Broman
parent 796007e0e0
commit aac30ba2d1
10 changed files with 20 additions and 299 deletions

View File

@ -1865,7 +1865,6 @@ if(WIN32)
# We have a lot of choices for creating zip archives:
# - 7z, WinZip, etc., which require a separate download+install.
# - Cygwin's zip, which requires Cygwin.
# - "CMake -E tar cz", which creates a tar file.
# - CPack, which requires a CPack configuration.
# - PowerShell via PSCX or System.IO.Compression.FileSystem.

View File

@ -3,40 +3,20 @@
#
# This module looks for Chocolatey
# This code was copied from
# http://cmake.org/gitweb?p=cmake.git;a=blob_plain;f=Modules/FindCygwin.cmake;hb=HEAD
# and modified.
#
# Its toplevel COPYING file starts with:
#=============================================================================
# Copyright 2001-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
# License text for the above reference.)
if (WIN32)
if (ENV{ChocolateyInstall})
if(WIN32)
if(ENV{ChocolateyInstall})
set(_chocolateyinstall_bin "$ENV{ChocolateyInstall}/bin")
endif()
find_path(CHOCOLATEY_BIN_PATH
choco.exe
PATHS
$_chocolateyinstall_bin
${_chocolateyinstall_bin}
"$ENV{ProgramData}/chocolatey/bin"
C:/Chocolatey/bin
DOC "Chocolatey binary path"
NO_DEFAULT_PATH
)
mark_as_advanced(
CHOCOLATEY_BIN_PATH
)
endif ()
mark_as_advanced(CHOCOLATEY_BIN_PATH)
endif()

View File

@ -1,43 +0,0 @@
#.rst:
# FindCygwin
# ----------
#
# this module looks for Cygwin
# This code was copied from
# http://cmake.org/gitweb?p=cmake.git;a=blob_plain;f=Modules/FindCygwin.cmake;hb=HEAD
# and modified so as to check C:\Cygwin64 and the WIRESHARK_CYGWIN_INSTALL_PATH
# environment variable
#=============================================================================
#CMake - Cross Platform Makefile Generator
#Copyright 2000-2015 Kitware, Inc.
#Copyright 2000-2011 Insight Software Consortium
#All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#=============================================================================
if (WIN32)
find_path(CYGWIN_INSTALL_PATH
NAMES cygwin.bat
PATHS
ENV WIRESHARK_CYGWIN_INSTALL_PATH
"C:/Cygwin"
"C:/Cygwin64"
"C:/tools/cygwin"
"C:/tools/cygwin64"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygwin\\setup;rootdir]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/;native]"
)
if(NOT CYGWIN_INSTALL_PATH)
if(WIRESHARK_CYGWIN_INSTALL_PATH)
message(FATAL_ERROR "WIRESHARK_CYGWIN_INSTALL_PATH was specified, but Cygwin was not found.")
endif()
endif()
mark_as_advanced(
CYGWIN_INSTALL_PATH
)
endif ()

View File

@ -2,17 +2,15 @@
# - Find flex/lex executable
#
INCLUDE(FindCygwin)
INCLUDE(FindChocolatey)
include(FindChocolatey)
FIND_PROGRAM(LEX_EXECUTABLE
find_program(LEX_EXECUTABLE
NAMES
win_flex
flex
lex
PATHS
${CHOCOLATEY_BIN_PATH}
${CYGWIN_INSTALL_PATH}/bin
/bin
/usr/bin
/usr/local/bin

View File

@ -1,16 +1,12 @@
#
# - Find unix commands from cygwin
# This module looks for some usual Unix commands.
# - Find pod2man and pod2html.
#
include(FindCygwin)
find_program(POD2MAN_EXECUTABLE
NAMES
pod2man
pod2man.bat
PATHS
${CYGWIN_INSTALL_PATH}/bin
/bin
/usr/bin
/usr/local/bin
@ -22,7 +18,6 @@ find_program(POD2HTML_EXECUTABLE
pod2html
pod2html.bat
PATHS
${CYGWIN_INSTALL_PATH}/bin
/bin
/usr/bin
/usr/local/bin

View File

@ -1,81 +0,0 @@
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file Copyright.txt or https://cmake.org/licensing for details.
# This code was copied from
# http://cmake.org/gitweb?p=cmake.git;a=blob_plain;f=Modules/FindPerl.cmake;hb=HEAD
# and modified so as to be compatible with our packaged FindCygwin.cmake
#.rst:
# FindPerl
# --------
#
# Find perl
#
# this module looks for Perl
#
# ::
#
# PERL_EXECUTABLE - the full path to perl
# PERL_FOUND - If false, don't attempt to use perl.
# PERL_VERSION_STRING - version of perl found (since CMake 2.8.8)
include(${CMAKE_CURRENT_LIST_DIR}/FindCygwin.cmake)
set(PERL_POSSIBLE_BIN_PATHS
${CYGWIN_INSTALL_PATH}/bin
)
if(WIN32)
get_filename_component(
ActivePerl_CurrentVersion
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl;CurrentVersion]"
NAME)
set(PERL_POSSIBLE_BIN_PATHS ${PERL_POSSIBLE_BIN_PATHS}
"C:/Perl/bin"
[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActivePerl\\${ActivePerl_CurrentVersion}]/bin
)
endif()
find_program(PERL_EXECUTABLE
NAMES perl
PATHS ${PERL_POSSIBLE_BIN_PATHS}
)
if(PERL_EXECUTABLE)
### PERL_VERSION
execute_process(
COMMAND
${PERL_EXECUTABLE} -V:version
OUTPUT_VARIABLE
PERL_VERSION_OUTPUT_VARIABLE
RESULT_VARIABLE
PERL_VERSION_RESULT_VARIABLE
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT PERL_VERSION_RESULT_VARIABLE AND NOT PERL_VERSION_OUTPUT_VARIABLE MATCHES "^version='UNKNOWN'")
string(REGEX REPLACE "version='([^']+)'.*" "\\1" PERL_VERSION_STRING ${PERL_VERSION_OUTPUT_VARIABLE})
else()
execute_process(
COMMAND ${PERL_EXECUTABLE} -v
OUTPUT_VARIABLE PERL_VERSION_OUTPUT_VARIABLE
RESULT_VARIABLE PERL_VERSION_RESULT_VARIABLE
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl.*[ \\(]v([0-9\\._]+)[ \\)]")
set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
elseif(NOT PERL_VERSION_RESULT_VARIABLE AND PERL_VERSION_OUTPUT_VARIABLE MATCHES "This is perl, version ([0-9\\._]+) +")
set(PERL_VERSION_STRING "${CMAKE_MATCH_1}")
endif()
endif()
endif()
# Deprecated settings for compatibility with CMake1.4
set(PERL ${PERL_EXECUTABLE})
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl
REQUIRED_VARS PERL_EXECUTABLE
VERSION_VAR PERL_VERSION_STRING)
mark_as_advanced(PERL_EXECUTABLE)

View File

@ -1,20 +1,18 @@
#
# - Find unix commands from cygwin
# - Find XSLTPROC
# This module looks for some usual Unix commands.
#
include(FindChocolatey)
include(FindCygwin)
# Strawberry Perl ships with xsltproc but no DocBook XML files, which
# is detrimental to our interests. Search for the Chocolatey and Cygwin
# is detrimental to our interests. Search for the Chocolatey
# versions first, and un-find xsltproc if needed.
find_program(XSLTPROC_EXECUTABLE
NAMES
xsltproc
HINTS
${CHOCOLATEY_BIN_PATH}
${CYGWIN_INSTALL_PATH}/bin
PATHS
/usr/local/bin
/sbin
@ -43,29 +41,7 @@ set (_common_xsltproc_args
--stringparam html.stylesheet ws.css
)
if (WIN32 AND NOT "${CYGWIN_INSTALL_PATH}" STREQUAL "" AND ${XSLTPROC_EXECUTABLE} MATCHES "${CYGWIN_INSTALL_PATH}")
FIND_PROGRAM(CYGPATH_EXECUTABLE
NAMES cygpath
PATHS ${CYGWIN_INSTALL_PATH}/bin
)
MACRO( TO_XSLTPROC_COMPATIBLE_PATH _cmake_path _result )
execute_process(
COMMAND ${CYGPATH_EXECUTABLE} -u ${_cmake_path}
OUTPUT_VARIABLE _cygwin_path
)
# cygpath adds a linefeed.
string(STRIP "${_cygwin_path}" _cygwin_path)
set( ${_result} ${_cygwin_path} )
ENDMACRO()
TO_XSLTPROC_COMPATIBLE_PATH( ${CMAKE_CURRENT_SOURCE_DIR} _xsltproc_current_source_dir )
TO_XSLTPROC_COMPATIBLE_PATH( ${CMAKE_CURRENT_BINARY_DIR} _xsltproc_current_binary_dir )
set ( _xsltproc_path "${_xsltproc_current_source_dir}:${_xsltproc_current_binary_dir}:${_xsltproc_current_binary_dir}/wsluarm_src")
else()
set ( _xsltproc_path "${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/wsluarm_src")
endif()
set(_xsltproc_path "${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/wsluarm_src")
# Workaround for parallel build issue with msbuild.
# https://gitlab.kitware.com/cmake/cmake/issues/16767

View File

@ -2,7 +2,6 @@
# - Find bison/yacc executable
#
INCLUDE(FindCygwin)
INCLUDE(FindChocolatey)
FIND_PROGRAM(YACC_EXECUTABLE
@ -12,7 +11,6 @@ FIND_PROGRAM(YACC_EXECUTABLE
yacc
PATHS
${CHOCOLATEY_BIN_PATH}
${CYGWIN_INSTALL_PATH}/bin
/bin
/usr/bin
/usr/local/bin

View File

@ -117,12 +117,12 @@ upgrade Qt to newer versions.
https://chocolatey.org/[Chocolatey] is a native package manager for
Windows. There are https://chocolatey.org/packages[packages] for most of
the software listed below. Along with traditional Windows packages it
supports the Python Package Index and Cygwin.
supports the Python Package Index.
Chocolatey tends to install packages into its own path (%ChocolateyInstall%).
In most cases this is OK, but in some instances (Python in particular)
this might not be what you want. You can install Chocolatey packages
using the command `choco install`.
Chocolatey tends to install packages into its own path (%ChocolateyInstall%),
although packages are free to use their own preferences (Python for example is
installed to `C:\Python37`). You can install Chocolatey packages using the
command `choco install` (or its shorthand, `cinst`).
[source,cmd]
----
@ -130,70 +130,7 @@ using the command `choco install`.
> choco install -y winflexbison
> rem Git, CMake, Perl, Python, etc are also required, but can be installed
> rem via their respective installation packages.
> choco install -y git cmake
> rem Choose one of Strawberry...
> choco install -y strawberryperl
> rem ...or ActiveState Perl
> choco install -y activeperl
> rem This will likely install Python in a non-standard location, but
> rem should otherwise work.
> choco install -y python3
----
[[ChSetupCygwin]]
==== Optional: Install Cygwin
On 32-bit Windows, http://www.cygwin.com/setup-x86.exe[download the
32-bit Cygwin installer] and start it. On 64-bit Windows,
http://www.cygwin.com/setup-x86_64.exe[download the 64-bit Cygwin
installer] and start it.
[NOTE]
.Cygwin is no longer required
====
In the past the Wireshark development toolchain depended on Cygwin, but
it it no longer required. Although you can often use the Cygwin version
of a particular tool for Wireshark development that's not always the
case.
====
At the "Select Packages" page, you'll need to select
some additional packages which are not installed by default.
Navigate to the required Category/Package row and, if the package
has a "Skip" item in the "New" column, click on the "Skip" item
so it shows a version number for:
* Devel/bison (or install Win flex-bison -- see Chocolatey above)
* Devel/flex (or install Win flex-bison -- see Chocolatey above)
* Devel/git (recommended, but it's also available via Chocolatey -- see the Git discussion below)
* Interpreters/perl
* Utils/patch (only if needed) (may be Devel/patch instead)
* Text/docbook-xml45 (only needed if you're building the documenation)
After clicking the btn:[Next] button several times, the setup
will then download and install the selected packages (this
may take a while).
Alternatively you can install Cygwin and its packages using Chocolatey:
----
PS$>choco install -y cygwin
PS$>choco install -y cyg-get
----
//PS$>choco install sed [...] -source cygwin
Chocolatey installs Cygwin in _C:\tools\cygwin_ by default.
You can directly download packages via `cyg-get`
----
PS$>cyg-get docbook-xml45 [...]
> choco install -y git cmake strawberryperl python3
----
[[ChSetupPython]]
@ -203,10 +140,6 @@ PS$>cyg-get docbook-xml45 [...]
Get a Python 3.x installer from https://python.org/download/[] and
install Python into the default location (_C:\Python37_).
Why is this recommended? Cygwins _/usr/bin/python_ is a Cygwin-specific
symbolic link which cannot be run from Windows. The native package is faster
as well.
Alternatively you can install Python using Chocolatey:
----
@ -384,14 +317,6 @@ Set the following environment variables, using paths and values suitable for you
> set WIRESHARK_VERSION_EXTRA=-YourExtraVersionInfo
----
If your Cygwin installation path is not automatically detected by CMake,
you can explicitly specify it with the following environment variable:
----
> rem Chocolatey installs Cygwin in an odd location
> set WIRESHARK_CYGWIN_INSTALL_PATH=C:\ProgramData\chocolatey\lib\Cygwin\tools\cygwin
----
If you are using a version of Visual Studio earlier than VS2017 then you must set an additional env var,
e.g. for VS2019 set the following:
----

View File

@ -17,8 +17,7 @@ as Linux, but Windows ports are also available. Therefore the tools are
available in different "flavours":
* UNIX and UNIX-like platforms: The tools should be commonly available
on the supported UNIX and UNIX-like platforms and for Windows
platforms by using an emulation layer such as Cygwin.
on the supported UNIX and UNIX-like platforms. Cygwin is unsupported.
* Windows native: Some tools are available as native Windows tools, no
special emulation is required. Many of these tools can be installed
(and updated) using http://chocolatey.org[Chocolatey], a Windows
@ -70,29 +69,6 @@ _C:\ProgramData\chocolatey_ or _C:\Tools_. If you want to avoid this
behavior you'll probabaly want to install Python using the packages from
python.org.
[[ChToolsCygwin]]
=== Windows: Cygwin
Cygwin provides a lot of UNIX based tools on the Windows platform. It
uses a UNIX emulation layer which might be a bit slower compared to the
native Windows tools, but at an acceptable level. The installation and
update is pretty easy and done through a single utility, _setup-x86.exe_
for 32-bit Windows and _setup-x86_64.exe_ for 64-bit Windows. However,
it can also be problematic. Cygwin utilities have a non-standard view of
the filesystem, and sometimes things don't work as expected. For
example, many files in _/usr/bin_ are symlinks which can't be run
directly from Windows.
[NOTE]
.Cygwin is no longer required
====
In the past the Wireshark development toolchain depended on Cygwin, but
it it no longer required. Although you can often use the Cygwin version
of a particular tool for Wireshark development that's not always the
case.
====
[[ChToolsCMake]]
=== CMake
@ -142,7 +118,7 @@ optional libraries have xxx_INCLUDE_DIR and xxx_LIB flags that let you
control their discovery.
-DPYTHON_EXECUTABLE=c:/Python36/python:: Force the Python path. Useful on Windows since Cygwins _/usr/bin/python_ is a symlink.
-DPYTHON_EXECUTABLE=c:/Python36/python:: Force the Python path.
-DENABLE_APPLICATION_BUNDLE=OFF:: Disable building an application bundle (Wireshark.app) on macOS
@ -666,8 +642,6 @@ Python 3.4 and later is required. Python 2.7 is no longer supported.
Python is either included or available as a package on most UNIX-like platforms.
Windows packages and source are available at https://python.org/download/[].
The Cygwin Python package is *not* recommended since _/usr/bin/python_ is
a symbolic link, which causes confusion outside Cygwin.
You can also use Chocolatey to install Python:
@ -843,7 +817,7 @@ https://chocolatey.org/[Chocolatey] package. Note that the executable is named
_win_bison_.
Native packages are available from other sources such as
http://gnuwin32.sourceforge.net/packages/bison.htm[GnuWin] and Cygwin.
http://gnuwin32.sourceforge.net/packages/bison.htm[GnuWin].
They aren't officially supported but _should_ work.
[[ChToolsFlex]]