summaryrefslogtreecommitdiffstats
path: root/tools/debian-setup.sh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /tools/debian-setup.sh
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tools/debian-setup.sh')
-rwxr-xr-xtools/debian-setup.sh300
1 files changed, 300 insertions, 0 deletions
diff --git a/tools/debian-setup.sh b/tools/debian-setup.sh
new file mode 100755
index 00000000..9b688794
--- /dev/null
+++ b/tools/debian-setup.sh
@@ -0,0 +1,300 @@
+#!/bin/bash
+# Setup development environment on Debian and derivatives such as Ubuntu
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# We drag in tools that might not be needed by all users; it's easier
+# that way.
+#
+
+set -e -u -o pipefail
+
+function print_usage() {
+ printf "\\nUtility to setup a debian-based system for Wireshark Development.\\n"
+ printf "The basic usage installs the needed software\\n\\n"
+ printf "Usage: %s [--install-optional] [--install-deb-deps] [...other options...]\\n" "$0"
+ printf "\\t--install-optional: install optional software as well\\n"
+ printf "\\t--install-deb-deps: install packages required to build the .deb file\\n"
+ printf "\\t--install-test-deps: install packages required to run all tests\\n"
+ printf "\\t--install-qt5-deps: force installation of packages required to use Qt5\\n"
+ printf "\\t--install-qt6-deps: force installation of packages required to use Qt6\\n"
+ printf "\\t--install-all: install everything\\n"
+ printf "\\t[other]: other options are passed as-is to apt\\n"
+}
+
+ADDITIONAL=0
+DEBDEPS=0
+TESTDEPS=0
+ADD_QT5=0
+ADD_QT6=0
+HAVE_ADD_QT=0
+OPTIONS=
+for arg; do
+ case $arg in
+ --help)
+ print_usage
+ exit 0
+ ;;
+ --install-optional)
+ ADDITIONAL=1
+ ;;
+ --install-deb-deps)
+ DEBDEPS=1
+ ;;
+ --install-test-deps)
+ TESTDEPS=1
+ ;;
+ --install-qt5-deps)
+ ADD_QT5=1
+ ;;
+ --install-qt6-deps)
+ ADD_QT6=1
+ ;;
+ --install-all)
+ ADDITIONAL=1
+ DEBDEPS=1
+ TESTDEPS=1
+ ADD_QT5=1
+ ADD_QT6=1
+ HAVE_ADD_QT=1
+ ;;
+ *)
+ OPTIONS="$OPTIONS $arg"
+ ;;
+ esac
+done
+
+# Check if the user is root
+if [ "$(id -u)" -ne 0 ]
+then
+ echo "You must be root."
+ exit 1
+fi
+
+BASIC_LIST="gcc \
+ g++\
+ libglib2.0-dev \
+ libc-ares-dev \
+ libpcap-dev \
+ libpcre2-dev \
+ flex \
+ make \
+ python3 \
+ libgcrypt-dev \
+ libspeexdsp-dev"
+
+QT5_LIST="qttools5-dev \
+ qttools5-dev-tools \
+ libqt5svg5-dev \
+ qtmultimedia5-dev \
+ qtbase5-dev \
+ qtchooser \
+ qt5-qmake \
+ qtbase5-dev-tools"
+
+QT6_LIST="qt6-base-dev \
+ qt6-multimedia-dev \
+ qt6-tools-dev \
+ qt6-tools-dev-tools \
+ qt6-l10n-tools \
+ libqt6core5compat6-dev \
+ freeglut3-dev \
+ libvulkan-dev \
+ libxkbcommon-dev"
+
+if [ $ADD_QT5 -ne 0 ]
+then
+ BASIC_LIST="$BASIC_LIST $QT5_LIST"
+ HAVE_ADD_QT=1
+fi
+
+if [ $ADD_QT6 -ne 0 ]
+then
+ BASIC_LIST="$BASIC_LIST $QT6_LIST"
+ HAVE_ADD_QT=1
+fi
+
+if [ $HAVE_ADD_QT -eq 0 ]
+then
+ # Try to select Qt version from distro
+ test -e /etc/os-release && os_release='/etc/os-release' || os_release='/usr/lib/os-release'
+ # shellcheck disable=SC1090
+ . "${os_release}"
+
+ # Ubuntu 22.04 (jammy) or later
+ MAJOR=$(echo "$VERSION_ID" | cut -f1 -d.)
+ if [ "${ID:-linux}" = "ubuntu" ] && [ "${MAJOR:-0}" -ge "22" ]; then
+ echo "Installing Qt6."
+ BASIC_LIST="$BASIC_LIST $QT6_LIST"
+ else
+ echo "Installing Qt5."
+ BASIC_LIST="$BASIC_LIST $QT5_LIST"
+ fi
+fi
+
+ADDITIONAL_LIST="libnl-3-dev \
+ libkrb5-dev \
+ libsmi2-dev \
+ libsbc-dev \
+ liblua5.2-dev \
+ libnl-cli-3-dev \
+ libparse-yapp-perl \
+ libcap-dev \
+ liblz4-dev \
+ libsnappy-dev \
+ libzstd-dev \
+ libspandsp-dev \
+ libxml2-dev \
+ libminizip-dev \
+ git \
+ ninja-build \
+ perl \
+ xsltproc \
+ ccache \
+ doxygen"
+
+# Uncomment to add PNG compression utilities used by compress-pngs:
+# ADDITIONAL_LIST="$ADDITIONAL_LIST \
+# advancecomp \
+# optipng \
+# pngcrush"
+
+DEBDEPS_LIST="debhelper \
+ dh-python \
+ asciidoctor \
+ docbook-xml \
+ docbook-xsl \
+ libxml2-utils \
+ lintian \
+ lsb-release \
+ po-debconf \
+ python3-ply \
+ quilt"
+
+TESTDEPS_LIST="python3-pytest \
+ python3-pytest-xdist"
+
+# Adds package $2 to list variable $1 if the package is found.
+# If $3 is given, then this version requirement must be satisfied.
+add_package() {
+ local list="$1" pkgname="$2" versionreq="${3:-}" version
+
+ version=$(apt-cache show "$pkgname" 2>/dev/null |
+ awk '/^Version:/{ print $2; exit}')
+ # fail if the package is not known
+ if [ -z "$version" ]; then
+ return 1
+ elif [ -n "$versionreq" ]; then
+ # Require minimum version or fail.
+ # shellcheck disable=SC2086
+ dpkg --compare-versions $version $versionreq || return 1
+ fi
+
+ # package is found, append it to list
+ eval "${list}=\"\${${list}} \${pkgname}\""
+}
+
+# apt-get update must be called before calling add_package
+# otherwise available packages appear as unavailable
+apt-get update || exit 2
+
+# cmake3 3.5.1: Ubuntu 14.04
+# cmake >= 3.5: Debian >= jessie-backports, Ubuntu >= 16.04
+add_package BASIC_LIST cmake3 ||
+BASIC_LIST="$BASIC_LIST cmake"
+
+# Debian >= wheezy-backports, Ubuntu >= 16.04
+add_package ADDITIONAL_LIST libnghttp2-dev ||
+echo "libnghttp2-dev is unavailable" >&2
+
+# Debian >= bookworm, Ubuntu >= 22.04
+add_package ADDITIONAL_LIST libnghttp3-dev ||
+echo "libnghttp3-dev is unavailable" >&2
+
+# libssh-gcrypt-dev: Debian >= jessie, Ubuntu >= 16.04
+# libssh-dev (>= 0.6): Debian >= jessie, Ubuntu >= 14.04
+add_package ADDITIONAL_LIST libssh-gcrypt-dev ||
+add_package ADDITIONAL_LIST libssh-dev ||
+echo "libssh-gcrypt-dev and libssh-dev are unavailable" >&2
+
+# libgnutls28-dev: Debian >= wheezy-backports, Ubuntu >= 12.04
+add_package ADDITIONAL_LIST libgnutls28-dev ||
+echo "libgnutls28-dev is unavailable" >&2
+
+# Debian >= jessie-backports, Ubuntu >= 16.04
+add_package ADDITIONAL_LIST libmaxminddb-dev ||
+echo "libmaxminddb-dev is unavailable" >&2
+
+# Debian >= stretch-backports, Ubuntu >= 16.04
+add_package ADDITIONAL_LIST libbrotli-dev ||
+echo "libbrotli-dev is unavailable" >&2
+
+# libsystemd-journal-dev: Ubuntu 14.04
+# libsystemd-dev: Ubuntu >= 16.04
+add_package ADDITIONAL_LIST libsystemd-dev ||
+add_package ADDITIONAL_LIST libsystemd-journal-dev ||
+echo "libsystemd-dev is unavailable"
+
+# ilbc library from http://www.deb-multimedia.org
+add_package ADDITIONAL_LIST libilbc-dev ||
+echo "libilbc-dev is unavailable"
+
+# opus library libopus-dev
+add_package ADDITIONAL_LIST libopus-dev ||
+ echo "libopus-dev is unavailable"
+
+# bcg729 library libbcg729-dev
+add_package ADDITIONAL_LIST libbcg729-dev ||
+ echo "libbcg729-dev is unavailable"
+
+# softhsm2 2.0.0: Ubuntu 16.04
+# softhsm2 2.2.0: Debian >= jessie-backports, Ubuntu 18.04
+# softhsm2 >= 2.4.0: Debian >= buster, Ubuntu >= 18.10
+if ! add_package TESTDEPS_LIST softhsm2 '>= 2.3.0'; then
+ if add_package TESTDEPS_LIST softhsm2; then
+ # If SoftHSM 2.3.0 is unavailble, install p11tool.
+ TESTDEPS_LIST="$TESTDEPS_LIST gnutls-bin"
+ else
+ echo "softhsm2 is unavailable" >&2
+ fi
+fi
+
+ACTUAL_LIST=$BASIC_LIST
+
+# Now arrange for optional support libraries
+if [ $ADDITIONAL -ne 0 ]
+then
+ ACTUAL_LIST="$ACTUAL_LIST $ADDITIONAL_LIST"
+fi
+
+if [ $DEBDEPS -ne 0 ]
+then
+ ACTUAL_LIST="$ACTUAL_LIST $DEBDEPS_LIST"
+fi
+
+if [ $TESTDEPS -ne 0 ]
+then
+ ACTUAL_LIST="$ACTUAL_LIST $TESTDEPS_LIST"
+fi
+
+# shellcheck disable=SC2086
+apt-get install $ACTUAL_LIST $OPTIONS || exit 2
+
+if [ $ADDITIONAL -eq 0 ]
+then
+ printf "\n*** Optional packages not installed. Rerun with --install-optional to have them.\n"
+fi
+
+if [ $DEBDEPS -eq 0 ]
+then
+ printf "\n*** Debian packages build deps not installed. Rerun with --install-deb-deps to have them.\n"
+fi
+
+if [ $TESTDEPS -eq 0 ]
+then
+ printf "\n*** Test deps not installed. Rerun with --install-test-deps to have them.\n"
+fi