diff --git a/.github/workflows/rtpproxy_ci.yml b/.github/workflows/rtpproxy_ci.yml index 82b60e660..7a5fdd779 100644 --- a/.github/workflows/rtpproxy_ci.yml +++ b/.github/workflows/rtpproxy_ci.yml @@ -94,6 +94,43 @@ jobs: - name: build run: sh -x ./scripts/do-build.sh cleanbuild + DebianPackage: + name: Debian package build + needs: LoadJobs_conf + if: needs.LoadJobs_conf.outputs.do_MinBuild == 'true' + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + - name: Install build tools + run: | + sudo apt-get update + sudo apt-get install -y build-essential devscripts debhelper pkg-config libssl-dev libbcg729-dev libgsm1-dev libsndfile1-dev libunwind-dev libsrtp2-dev fakeroot + - name: Build Debian package + env: + DEB_BUILD_OPTIONS: nocheck + run: | + dpkg-buildpackage -us -uc -b + + - name: Test install Debian packages + run: | + set -euo pipefail + shopt -s nullglob + pkgs=(../*.deb) + if [ "${#pkgs[@]}" -eq 0 ]; then + echo "No Debian packages produced" >&2 + exit 1 + fi + sudo apt-get install -y "${pkgs[@]}" + + - name: Upload Debian packages + uses: actions/upload-artifact@v4 + with: + name: rtpproxy-debian-packages + path: ../*.deb + if-no-files-found: error + FullBuild: name: Full Build needs: [LoadJobs_conf, MinBuild] diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 000000000..b37aa4503 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,20 @@ +rtpproxy (3.1+dev1) unstable; urgency=medium + + * Build librtpproxy during package configuration and ship a new + rtpproxy-dev package with the static archive and public header. + * Add optional audio and unwind build dependencies required by the + librtpproxy-enabled build. + * Split debugging helpers and *_debug modules into the rtpproxy-debug + binary package. + * Ship the DTLS gateway and ICE lite modules in their respective + runtime and debug packages to avoid missing-file warnings. + * Depend on libsrtp2 during the build so the crypto modules are + compiled and available for packaging. + + -- Maxim Sobolev Wed, 15 May 2024 00:00:00 +0000 + +rtpproxy (3.1) unstable; urgency=medium + + * Initial release of Debian packaging skeleton. + + -- Maxim Sobolev Wed, 15 May 2024 00:00:00 +0000 diff --git a/debian/control b/debian/control new file mode 100644 index 000000000..f360b7270 --- /dev/null +++ b/debian/control @@ -0,0 +1,47 @@ +Source: rtpproxy +Section: net +Priority: optional +Maintainer: Maxim Sobolev +Build-Depends: debhelper-compat (= 13), + pkg-config, + libssl-dev, + libbcg729-dev, + libgsm1-dev, + libsndfile1-dev, + libunwind-dev, + libsrtp2-dev +Standards-Version: 4.6.2 +Homepage: https://github.com/sippy/rtpproxy +Vcs-Git: https://github.com/sippy/rtpproxy.git +Vcs-Browser: https://github.com/sippy/rtpproxy +Rules-Requires-Root: no + +Package: rtpproxy +Architecture: any +Depends: ${misc:Depends}, ${shlibs:Depends} +Description: High-performance SIP RTP media proxy + RTPProxy is a high-performance, scalable media relay designed for + SIP-based applications. It supports advanced media handling features + such as secure RTP, codec transcoding modules, and high availability + deployments. + +Package: rtpproxy-debug +Section: debug +Architecture: any +Depends: ${misc:Depends}, rtpproxy (= ${binary:Version}) +Multi-Arch: same +Description: Debug helpers and modules for RTPProxy + This package provides the debugging-friendly binaries and modules for + RTPProxy, including the rtpproxy_debug control tool, UDP contention + tester, and the *_debug.so plugin variants. + +Package: rtpproxy-dev +Section: libdevel +Architecture: any +Depends: ${misc:Depends}, rtpproxy (= ${binary:Version}) +Multi-Arch: same +Description: Development files for librtpproxy instrumentation library + librtpproxy exposes the internal RTPProxy engine to external tooling + for instrumentation and advanced control. This development package + ships the static archive and public header needed to link against the + library. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 000000000..6a4cff5b7 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,30 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: rtpproxy +Upstream-Contact: Maxim Sobolev +Source: https://github.com/sippy/rtpproxy + +Files: * +Copyright: 2004-2006 Maxim Sobolev + 2006-2019 Sippy Software, Inc. +License: BSD-2-Clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + . + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. diff --git a/debian/rtpproxy-debug.install b/debian/rtpproxy-debug.install new file mode 100644 index 000000000..73993ff55 --- /dev/null +++ b/debian/rtpproxy-debug.install @@ -0,0 +1,7 @@ +usr/bin/rtpproxy_debug +usr/bin/udp_contention +usr/lib/*/rtpproxy/rtpp_acct_csv_debug.so +usr/lib/*/rtpproxy/rtpp_acct_rtcp_hep_debug.so +usr/lib/*/rtpproxy/rtpp_catch_dtmf_debug.so +usr/lib/*/rtpproxy/rtpp_dtls_gw_debug.so +usr/lib/*/rtpproxy/rtpp_ice_lite_debug.so diff --git a/debian/rtpproxy-dev.install b/debian/rtpproxy-dev.install new file mode 100644 index 000000000..6d50d166a --- /dev/null +++ b/debian/rtpproxy-dev.install @@ -0,0 +1,2 @@ +usr/include/librtpproxy.h +usr/lib/*/librtpproxy.a diff --git a/debian/rtpproxy.examples b/debian/rtpproxy.examples new file mode 100644 index 000000000..d113092de --- /dev/null +++ b/debian/rtpproxy.examples @@ -0,0 +1 @@ +doc/rtpproxy.conf.sample diff --git a/debian/rtpproxy.install b/debian/rtpproxy.install new file mode 100644 index 000000000..7028e1e6d --- /dev/null +++ b/debian/rtpproxy.install @@ -0,0 +1,8 @@ +usr/bin/makeann +usr/bin/extractaudio +usr/bin/rtpproxy +usr/lib/*/rtpproxy/rtpp_acct_csv.so +usr/lib/*/rtpproxy/rtpp_acct_rtcp_hep.so +usr/lib/*/rtpproxy/rtpp_catch_dtmf.so +usr/lib/*/rtpproxy/rtpp_dtls_gw.so +usr/lib/*/rtpproxy/rtpp_ice_lite.so diff --git a/debian/rtpproxy.manpages b/debian/rtpproxy.manpages new file mode 100644 index 000000000..3952ce28b --- /dev/null +++ b/debian/rtpproxy.manpages @@ -0,0 +1 @@ +rtpproxy.8 diff --git a/debian/rules b/debian/rules new file mode 100755 index 000000000..74966acb3 --- /dev/null +++ b/debian/rules @@ -0,0 +1,24 @@ +#!/usr/bin/make -f + +%: + dh $@ + +override_dh_auto_configure: + dh_auto_configure -- --enable-librtpproxy + +override_dh_update_autotools_config: + @echo "Skipping autotools config update" + +override_dh_autoreconf: + @echo "Skipping autoreconf; using bundled configure script" + +override_dh_shlibdeps: + dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + +execute_after_dh_auto_install: + rm -f debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/rtpproxy/*.la + rm -f debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/librtpproxy.la + rm -f debian/tmp/usr/share/man/man8/rtpproxy.8 + +override_dh_auto_test: + @echo "Skipping upstream tests for package build" diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 000000000..89ae9db8f --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/watch b/debian/watch new file mode 100644 index 000000000..421b4b0d0 --- /dev/null +++ b/debian/watch @@ -0,0 +1,3 @@ +version=4 +opts=filenamemangle=s/.+\/v?(\d[^/]+)\.tar\.gz/rtpproxy-$1\.tar.gz/ \ + https://github.com/sippy/rtpproxy/releases .*/archive/refs/tags/v?(\d[^/]+)\.tar\.gz diff --git a/doc/rtpproxy.conf.sample b/doc/rtpproxy.conf.sample new file mode 100644 index 000000000..d93ced2a4 --- /dev/null +++ b/doc/rtpproxy.conf.sample @@ -0,0 +1,20 @@ +# Example rtpproxy configuration file in UCL format. +# +# Enable accounting modules and point them to the shared objects +# shipped with the Debian rtpproxy package. Comment or remove any +# modules you do not plan to use. +modules { + acct_csv { + load = /usr/lib/x86_64-linux-gnu/rtpproxy/rtpp_acct_csv.so + logfile = /var/log/rtpproxy/rtpproxy.csv + } + + # Forward RTCP reports to a HEP collector. + acct_rtcp_hep { + load = /usr/lib/x86_64-linux-gnu/rtpproxy/rtpp_acct_rtcp_hep.so + capt_host = 127.0.0.1 + capt_port = 9060 + capt_ptype = udp + capt_id = 101 + } +}