summaryrefslogtreecommitdiffstats
path: root/tools/bsd-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/bsd-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/bsd-setup.sh')
-rwxr-xr-xtools/bsd-setup.sh202
1 files changed, 202 insertions, 0 deletions
diff --git a/tools/bsd-setup.sh b/tools/bsd-setup.sh
new file mode 100755
index 0000000..6b018c6
--- /dev/null
+++ b/tools/bsd-setup.sh
@@ -0,0 +1,202 @@
+#!/usr/bin/env sh
+# Setup development environment on BSD-like platforms.
+#
+# Tested on: FreeBSD, OpenBSD, NetBSD.
+#
+# 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.
+#
+# We do not use Bash as the shell for this script, and use the POSIX
+# syntax for function definition rather than the
+# "function <name>() { ... }" syntax, as FreeBSD 13, at least, does
+# not have Bash, and its /bin/sh doesn't support the other syntax.
+#
+
+print_usage() {
+ printf "\\nUtility to setup a bsd-based system for Wireshark Development.\\n"
+ printf "The basic usage installs the needed software\\n\\n"
+ printf "Usage: $0 [--install-optional] [...other options...]\\n"
+ printf "\\t--install-optional: install optional software as well\\n"
+ printf "\\t[other]: other options are passed as-is to pkg manager.\\n"
+}
+
+ADDITIONAL=0
+OPTIONS=
+for arg; do
+ case $arg in
+ --help)
+ print_usage
+ exit 0
+ ;;
+ --install-optional)
+ ADDITIONAL=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="\
+ cmake \
+ qt6 \
+ git \
+ pcre2 \
+ speexdsp"
+
+ADDITIONAL_LIST="\
+ gettext-tools \
+ snappy \
+ bcg729 \
+ libssh \
+ libmaxminddb \
+ libsmi \
+ brotli \
+ zstd \
+ lua52 \
+ "
+
+# Uncomment to add PNG compression utilities used by compress-pngs:
+# ADDITIONAL_LIST="$ADDITIONAL_LIST \
+# advancecomp \
+# optipng \
+# pngcrush"
+
+# Guess which package manager we will use
+PM=`which pkgin 2> /dev/null || which pkg 2> /dev/null || which pkg_add 2> /dev/null`
+
+case $PM in
+ */pkgin)
+ PM_OPTIONS="install"
+ PM_SEARCH="pkgin search"
+ PM_MUST_GLOB=no
+ ;;
+ */pkg)
+ PM_OPTIONS="install"
+ PM_SEARCH="pkg search"
+ PM_MUST_GLOB=yes
+ ;;
+ */pkg_add)
+ PM_OPTIONS=""
+ PM_SEARCH="pkg_info"
+ PM_MUST_GLOB=no
+ ;;
+esac
+
+
+echo "Using $PM ($PM_SEARCH)"
+
+# Adds package $2 to list variable $1 if the package is found
+add_package() {
+ local list="$1" pkgname="$2"
+
+ # fail if the package is not known
+ if [ "$PM_MUST_GLOB" = yes ]
+ then
+ #
+ # We need to do a glob search, with a "*" at the
+ # end, so we only find packages that *begin* with
+ # the name; otherwise, searching for pkg-config
+ # could find packages that *don't* begin with
+ # pkg-config, but have it later in the name
+ # (FreeBSD 11 has one such package), so when
+ # we then try to install it, that fails. Doing
+ # an *exact* search fails, as that requires that
+ # the package name include the version number.
+ #
+ $PM_SEARCH -g "$pkgname*" > /dev/null 2>&1 || return 1
+ else
+ $PM_SEARCH "$pkgname" > /dev/null 2>&1 || return 1
+ fi
+
+ # package is found, append it to list
+ eval "${list}=\"\${${list}} \${pkgname}\""
+}
+
+# pkg-config: NetBSD
+# pkgconf: FreeBSD
+add_package BASIC_LIST pkg-config ||
+add_package BASIC_LIST pkgconf ||
+echo "pkg-config is unavailable"
+
+# c-ares: FreeBSD
+# libcares: OpenBSD
+add_package BASIC_LIST c-ares ||
+add_package BASIC_LIST libcares ||
+echo "c-ares is unavailable"
+
+# rubygem-asciidoctor: FreeBSD
+add_package ADDITIONAL_LIST rubygem-asciidoctor ||
+echo "asciidoctor is unavailable"
+
+# liblz4: FreeBSD
+# lz4: NetBSD
+add_package ADDITIONAL_LIST liblz4 ||
+add_package ADDITIONAL_LIST lz4 ||
+echo "lz4 is unavailable"
+
+# libnghttp2: FreeBSD
+# nghttp2: NetBSD
+add_package ADDITIONAL_LIST libnghttp2 ||
+add_package ADDITIONAL_LIST nghttp2 ||
+echo "nghttp2 is unavailable"
+
+# libnghttp3: FreeBSD
+# nghttp3: NetBSD
+add_package ADDITIONAL_LIST libnghttp3 ||
+add_package ADDITIONAL_LIST nghttp3 ||
+echo "nghttp3 is unavailable"
+
+# spandsp: NetBSD
+add_package ADDITIONAL_LIST spandsp ||
+echo "spandsp is unavailable"
+
+# ninja: FreeBSD, OpenBSD
+# ninja-build: NetBSD
+add_package ADDITIONAL_LIST ninja-build ||
+add_package ADDITIONAL_LIST ninja ||
+echo "ninja is unavailable"
+
+# libilbc: FreeBSD
+add_package ADDITIONAL_LIST libilbc ||
+echo "libilbc is unavailable"
+
+# Add OS-specific required/optional packages
+# Those not listed don't require additions.
+case `uname` in
+ FreeBSD | NetBSD)
+ add_package ADDITIONAL_LIST libgcrypt || echo "libgcrypt is unavailable"
+ ;;
+esac
+
+ACTUAL_LIST=$BASIC_LIST
+
+# Now arrange for optional support libraries
+if [ $ADDITIONAL -ne 0 ]
+then
+ ACTUAL_LIST="$ACTUAL_LIST $ADDITIONAL_LIST"
+fi
+
+$PM $PM_OPTIONS $ACTUAL_LIST $OPTIONS
+if [ ! $? ]
+then
+ exit 2
+fi
+
+if [ $ADDITIONAL -eq 0 ]
+then
+ echo -e "\n*** Optional packages not installed. Rerun with --install-optional to have them.\n"
+fi