Building

Setup Environment

Follow the Environment instructions to prepare your system for builds.

Add sipx User

sipXcom must be built by a user called sipx with sudo privileges.

  • Add the sipx user:

    useradd -m sipx
    
  • If not on desktop docker, protect the sipx user with a password:

    passwd sipx
    
  • Assign sipx user sudo privileges:

    visudo
    
    ->
    
    # add sipx as sudo user
    sipx    ALL=(ALL)       NOPASSWD:ALL
    

Checkout sipXcom

Execute the following commands to checkout the default sipXcom repository:

dnf install -y git

mkdir /src

cd /src

git clone https://github.com/onrelay/sipxecs.git

If you are looking to build a specific branch, specify it as follows:

git clone https://github.com/onrelay/sipxecs.git  --branch release-25.01-rocky9

Build sipXcom

To build sipXcom from source, execute the master build script from the root scr folder as the sipx user with sudo privileges:

su sipx

cd /src/sipxecs

The sipxecs-build script will create /src/sipxecs/build and /usr/local/sipx directories where all build results are saved.

Build RPMs

To build all the sipX* RPMs from source, just add the –rpm option to the sipxecs-build script as follows:

sudo ./sipxecs-build --rpm

The resulting RPMs are e.g. found in the build/repo/CentOS_7/x86_64 folder for CentOS 7.

To also install the RPMs locally, add the ‘–install’ option:

sudo ./sipxecs-build --rpm --install

Build Executables

To just build the sipX* executables from source, simply run:

sudo ./sipxecs-build

Additional Build Options

The sipxecs-build script has the following additional options:

sudo ./sipxecs-build [options]

    **-p | --platform**: OS platform of sipxcom RPM to build, e.g. rocky-7=9 (default), centos-7

    **-a | --architecture**: Hardware architecture of sipxcom RPM to build, e.g. x86_64 (default)

    **-s | --subproject**: subproject to build or sipx for building all RPMs, e.g. sipx (default), sipXconfig, sipXproxy

    **-v | --version**: sipXcom cersion to build, e.g 25.01 (default)

    **-r | --rpm**: Include this option if building rpms

Advanced Builds

For more advanced builds, sipXcom relies on GNU autoconf and make to build its source. To use these mechanisms directly, you may use the following steps:

  • Prepare build folders:

    mkdir -p /src/sipxecs/build
    
    cd /src/sipxecs/build
    
    sudo mkdir -p /usr/local/sipx
    
    sudo chown sipx.sipx /usr/local/sipx
    
  • Configure:

    cd /src/sipxecs
    
    sudo autoreconf -ivf
    
    sudo chown -R sipx.sipx build
    
  • To build for running sipXcom locally:

    cd build
    
    sudo ../configure
    
    sudo make sipx
    
  • Create a repo to build RPMs with mock:

    sudo yum install -y createrepo rpm-build mock
    
    sudo wget http://li.nux.ro/download/nux/misc/el7/x86_64/thttpd-2.25b-33.el7.nux.x86_64.rpm
    
    sudo rpm -ivh thttpd-2.25b-33.el7.nux.x86_64.rpm
    
    rm -f thttpd-2.25b-33.el7.nux.x86_64.rpm
    
    sudo usermod -a -G mock sipx`
    
  • To create sipXcom RPMs:

    sudo ../configure --enable-rpm DISTRO="rocky-9-x86_64"
    
    sudo make sipx.rpm
    
  • Run sudo chown -R sipx.sipx repo if it gives a permission error on first try

  • If compilation stops for a subproject, it is possible to list all its dependencies:

    cd /src/sipxecs/sipXproxy
    
    grep -R '^BuildRequires'  | awk '{print $2}'