diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /tools/bsd-setup.sh | |
parent | Initial commit. (diff) | |
download | wireshark-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 '')
-rwxr-xr-x | tools/bsd-setup.sh | 202 |
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 |