- resiprocate is back as a part of solid repo
This commit is contained in:
251
src/libs/resiprocate/README_RPM-based-Linux.txt
Normal file
251
src/libs/resiprocate/README_RPM-based-Linux.txt
Normal file
@@ -0,0 +1,251 @@
|
||||
|
||||
We try to make packages for users of Fedora, RHEL, CentOS, Rocky Linux,
|
||||
derivatives and similar systems that use the RPM packaging system.
|
||||
|
||||
To support this effort, we also try to ensure all dependencies are
|
||||
available in Fedora, EPEL or a reliable third-party repository.
|
||||
|
||||
This document will help you if you wish to do one of these things:
|
||||
|
||||
a) building the source code in a local workspace for development, OR
|
||||
|
||||
b) building the RPMs yourself, the same way that we build official RPMs
|
||||
|
||||
|
||||
To get started, download your preferred distribution
|
||||
----------------------------------------------------
|
||||
|
||||
Download the installation ISO, Fedora:
|
||||
Fedora: https://getfedora.org/
|
||||
|
||||
Or a RHEL-compatible derivative like the old CentOS:
|
||||
Rocky Linux: https://rockylinux.org/download
|
||||
AlmaLinux: https://almalinux.org/
|
||||
|
||||
Install using default options.
|
||||
|
||||
Ensure you have sudo permissions
|
||||
--------------------------------
|
||||
|
||||
On RHEL and similar hosts, login as root on the console
|
||||
and run this command with your username:
|
||||
|
||||
usermod -aG wheel your-user-name
|
||||
|
||||
Logout and login again to verify you are in the correct group:
|
||||
|
||||
$ id
|
||||
|
||||
The output of the id command should include the wheel group.
|
||||
|
||||
RHEL, CentOS, Rocky Linux: enable repositories
|
||||
----------------------------------------------
|
||||
|
||||
In Fedora, all the necessary packages and repositories are available.
|
||||
Fedora users can skip this step. Users of RHEL and derivaties need
|
||||
to manually enable some repositories before you can install
|
||||
dependencies.
|
||||
|
||||
Enable powertools (for common *-devel packages)
|
||||
|
||||
sudo dnf -y install dnf-plugins-core
|
||||
sudo dnf config-manager --set-enabled powertools
|
||||
|
||||
Enable EPEL
|
||||
|
||||
sudo dnf install epel-release
|
||||
|
||||
Setup the rpmbuild tool, configuration and directory structure
|
||||
--------------------------------------------------------------
|
||||
|
||||
Based on the notes here:
|
||||
https://wiki.centos.org/HowTos/SetupRpmBuildEnvironment
|
||||
|
||||
Install the rpmbuild tool and some related packages:
|
||||
|
||||
sudo dnf install rpm-build
|
||||
sudo dnf install redhat-rpm-config
|
||||
sudo dnf install rpmdevtools
|
||||
|
||||
In your home directory, run the following command to create
|
||||
the RPM directory structure:
|
||||
|
||||
rpmdev-setuptree
|
||||
|
||||
Now you can verify the tree and config has been created correctly:
|
||||
|
||||
find ~/rpmbuild -type d
|
||||
cat ~/.rpmmacros
|
||||
|
||||
Install reSIProcate build environment dependencies
|
||||
--------------------------------------------------
|
||||
|
||||
sudo dnf install git \
|
||||
gcc-c++ \
|
||||
cmake \
|
||||
python3-devel python3-pycxx-devel \
|
||||
libdb-cxx libdb-cxx-devel \
|
||||
cppunit cppunit-devel \
|
||||
gperf \
|
||||
radcli-devel \
|
||||
c-ares-devel \
|
||||
libsrtp-devel \
|
||||
boost-devel \
|
||||
openssl-devel \
|
||||
mariadb-connector-c-devel \
|
||||
pcre-devel \
|
||||
popt-devel \
|
||||
postgresql-devel \
|
||||
xerces-c-devel \
|
||||
net-snmp-devel \
|
||||
qpid-proton-cpp-devel \
|
||||
soci-devel soci-postgresql-devel soci-mysql-devel \
|
||||
vim-common \
|
||||
sox \
|
||||
fmt-devel \
|
||||
websocketpp-devel \
|
||||
gstreamer1-devel \
|
||||
gstreamer1-plugins-base-devel \
|
||||
gstreamer1-plugins-bad-free-devel \
|
||||
gstreamermm-devel
|
||||
|
||||
Manually create some dependencies
|
||||
---------------------------------
|
||||
|
||||
Some dependencies are not available in EPEL right now. It is
|
||||
necessary to copy them from Fedora and build them locally. You
|
||||
can check the availability of some common dependencies by
|
||||
looking in the Fedora package catalog:
|
||||
|
||||
https://src.fedoraproject.org/rpms/asio
|
||||
https://src.fedoraproject.org/rpms/cajun-jsonapi
|
||||
|
||||
Try to install them with dnf, if the command fails, you need to
|
||||
add an extra repository or build them manually:
|
||||
|
||||
sudo dnf install asio-devel
|
||||
sudo dnf install cajun-jsonapi-devel
|
||||
|
||||
Here is an example to build asio-devel from source, use exactly the
|
||||
same sequence of commands for cajun-jsonapi-devel or any other
|
||||
missing dependency. Notice the repository name is not exactly the
|
||||
same as the package name.
|
||||
|
||||
mkdir -p ~/ws/fedora-rpms
|
||||
cd ~/ws/fedora-rpms
|
||||
git clone https://src.fedoraproject.org/rpms/asio.git
|
||||
cd asio
|
||||
spectool -g -R asio.spec
|
||||
rpmbuild -bb asio.spec
|
||||
(it will complain about missing dependencies, so we install them ...)
|
||||
sudo dnf install boost-devel openssl-devel perl-generators
|
||||
rpmbuild -bb asio.spec
|
||||
|
||||
Now you can install the asio-devel package, the exact filename may
|
||||
vary depending on the version you built and your CPU architecture:
|
||||
|
||||
sudo rpm -i ~/rpmbuild/RPMS/x86_64/asio-devel-1.16.1-3.el8.x86_64.rpm
|
||||
|
||||
You may need to repeat this procedure for the cajun-jsonapi package.
|
||||
|
||||
Install Docker (for Podman, alternative to Docker, see below)
|
||||
-------------------------------------------------------------
|
||||
|
||||
If you are planning to use one of the related products that is
|
||||
distributed as a Docker image then you need to install either Docker
|
||||
or Podman. Typical Docker images include the HOMER system for
|
||||
SIP message capture and the Kurento Media Server.
|
||||
|
||||
These are the steps to install Docker:
|
||||
|
||||
sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
|
||||
|
||||
sudo dnf install docker-ce
|
||||
systemctl is-active docker
|
||||
sudo systemctl enable --now docker
|
||||
systemctl is-active docker
|
||||
systemctl is-enabled docker
|
||||
sudo usermod -aG docker $USER
|
||||
|
||||
and these are the steps to install Podman:
|
||||
|
||||
sudo dnf install podman
|
||||
|
||||
If you like, you can create an alias for the docker command to run
|
||||
Podman, save this in ~/.profile or a similar location:
|
||||
|
||||
alias docker=podman
|
||||
|
||||
Preparing to build the reSIProcate stack
|
||||
----------------------------------------
|
||||
|
||||
You can clone the reSIProcate Git repository or download a copy
|
||||
of the reSIProcate tarball release. Here are the steps to clone
|
||||
the repository:
|
||||
|
||||
mkdir -p ~/ws
|
||||
cd ~/ws
|
||||
git clone https://github.com/resiprocate/resiprocate
|
||||
cd resiprocate
|
||||
|
||||
Configuring the source tree
|
||||
---------------------------
|
||||
|
||||
The project is currently built using CMake. We provide a
|
||||
wrapper script for CMake on each major GNU/Linux distribution.
|
||||
|
||||
The wrapper script for Fedora and RHEL-based systems is:
|
||||
|
||||
build/fedora.sh
|
||||
|
||||
Run the script from the top level of the reSIProcate tree.
|
||||
|
||||
We recommend that you look inside the script and tweak any settings
|
||||
you require. For example, if you are building on RHEL8 or an older
|
||||
system, you need to add the configure switch:
|
||||
|
||||
--with-srtp1
|
||||
|
||||
Compiling the code in the source tree
|
||||
-------------------------------------
|
||||
|
||||
After running the CMake configure command or using the wrapper
|
||||
script described above, it is possible to start compiling the code.
|
||||
To compile with 65 threads, on a system with 64 CPU cores, you could
|
||||
use the following command:
|
||||
|
||||
make -j65
|
||||
|
||||
Running the unit tests
|
||||
----------------------
|
||||
|
||||
The CMake "make test" target is used.
|
||||
|
||||
make test
|
||||
|
||||
Running the binaries or unit tests in the GDB debugger
|
||||
------------------------------------------------------
|
||||
|
||||
Here is an example:
|
||||
|
||||
gdb --args \
|
||||
apps/reConServer/reConServer \
|
||||
apps/reConServer/reConServer.config
|
||||
|
||||
Building reSIProcate RPM packages
|
||||
---------------------------------
|
||||
|
||||
To build packages, it is necessary to configure the tree:
|
||||
|
||||
build/fedora.sh
|
||||
|
||||
Create a reSIProcate release tarball:
|
||||
|
||||
make dist
|
||||
|
||||
Finally, tell rpmbuild to compile the tarball to RPMs. rpmbuild
|
||||
uses the spec file resiprocate.spec inside the tarball:
|
||||
|
||||
rpmbuild -tb resiprocate-1.13.0.tar.gz
|
||||
|
||||
|
||||
Reference in New Issue
Block a user