Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DOCS] Add guides for building FreeSWITCH build-dependencies #2767

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions scripts/packaging/build/dependencies/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# FreeSWITCH Build Dependencies

This directory is organized into subfolders, where each subfolder contains build instructions for a single Debian package. These packages are dependencies required to build FreeSWITCH's Debian packages.

## Recommended order of building:

- [libbroadvoice](libbroadvoice/README.md)
- [libilbc](libilbc/README.md)
- [libsilk](libsilk/README.md)
- [spandsp](spandsp/README.md)
- [sofia-sip](sofia-sip/README.md)
- [libks](libks/README.md)
- [signalwire-c](signalwire-c/README.md)
- [libv8](libv8/README.md) (only for `AMD64`)
117 changes: 117 additions & 0 deletions scripts/packaging/build/dependencies/libbroadvoice/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Building `libbroadvoice` Debian Package

This guide explains how to build the `libbroadvoice` Debian package.

## Prerequisites:
- Git
- Debian-based system (native or Docker)

## Build Steps

### Clone the repository:
```bash
git clone --depth 1 --branch master [email protected]:freeswitch/libbroadvoice.git
```

### (Optionally) Use Docker to build packages for Debian `Bookworm`:
```bash
docker run -it -v $(pwd):/usr/src/ debian:bookworm bash -c "cd /usr/src/ && bash"
```

### Set non-interactive frontend for APT:
```bash
export DEBIAN_FRONTEND=noninteractive
```

### Install required build tools:
```bash
apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install \
build-essential \
cmake \
devscripts \
lsb-release \
docbook-xsl \
pkg-config
```

### Set build number (modify as needed):
```bash
export BUILD_NUMBER=42
```
> Note: The build number (42) used in this guide is arbitrary. You can modify it as needed for your build process.

### Set Debian codename:
```bash
export CODENAME=$(lsb_release -sc)
```

### Configure git safety setting:
```bash
git config --global --add safe.directory '*'
```

### Navigate to the source directory:
```bash
cd libbroadvoice/
```
-- or --
```bash
cd /usr/src/libbroadvoice/
```

### Extract Debian package version:
```bash
export VERSION=$(dpkg-parsechangelog --show-field Version | cut -f1 -d'-')
```

### Extract git hash:
```bash
export GIT_SHA=$(git rev-parse --short HEAD)
```

### Install build dependencies:
```bash
apt-get update \
&& mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -y --no-install-recommends" \
&& apt-get -y -f install
```

### Update changelog:
```bash
dch \
--controlmaint \
--distribution "${CODENAME}" \
--force-bad-version \
--force-distribution \
--newversion "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
"Nightly build, ${GIT_SHA}"
```

### Build binary package:
```bash
debuild \
--no-tgz-check \
--build=binary \
--unsigned-source \
--unsigned-changes
```

### Move built packages to the output directory:
```bash
mkdir -p OUT \
&& mv -v ../*.{deb,changes} OUT/.
```
-- or --
```bash
mkdir -p /usr/src/OUT \
&& mv -v ../*.{deb,changes} /usr/src/OUT/.
```

## Output

After a successful build, the Debian packages will be available in the `OUT` directory.
117 changes: 117 additions & 0 deletions scripts/packaging/build/dependencies/libilbc/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# Building `libilbc` Debian Package

This guide explains how to build the `libilbc` Debian package.

## Prerequisites:
- Git
- Debian-based system (native or Docker)

## Build Steps

### Clone the repository:
```bash
git clone --depth 1 --branch master [email protected]:freeswitch/libilbc.git
```

### (Optionally) Use Docker to build packages for Debian `Bookworm`:
```bash
docker run -it -v $(pwd):/usr/src/ debian:bookworm bash -c "cd /usr/src/ && bash"
```

### Set non-interactive frontend for APT:
```bash
export DEBIAN_FRONTEND=noninteractive
```

### Install required build tools:
```bash
apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install \
build-essential \
cmake \
devscripts \
lsb-release \
docbook-xsl \
pkg-config
```

### Set build number (modify as needed):
```bash
export BUILD_NUMBER=42
```
> Note: The build number (42) used in this guide is arbitrary. You can modify it as needed for your build process.

### Set Debian codename:
```bash
export CODENAME=$(lsb_release -sc)
```

### Configure git safety setting:
```bash
git config --global --add safe.directory '*'
```

### Navigate to the source directory:
```bash
cd libilbc/
```
-- or --
```bash
cd /usr/src/libilbc/
```

### Extract Debian package version:
```bash
export VERSION=$(dpkg-parsechangelog --show-field Version | cut -f1 -d'-')
```

### Extract git hash:
```bash
export GIT_SHA=$(git rev-parse --short HEAD)
```

### Install build dependencies:
```bash
apt-get update \
&& mk-build-deps \
--install \
--remove debian/control \
--tool "apt-get -y --no-install-recommends" \
&& apt-get -y -f install
```

### Update changelog:
```bash
dch \
--controlmaint \
--distribution "${CODENAME}" \
--force-bad-version \
--force-distribution \
--newversion "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
"Nightly build, ${GIT_SHA}"
```

### Build binary package:
```bash
debuild \
--no-tgz-check \
--build=binary \
--unsigned-source \
--unsigned-changes
```

### Move built packages to the output directory:
```bash
mkdir -p OUT \
&& mv -v ../*.{deb,changes} OUT/.
```
-- or --
```bash
mkdir -p /usr/src/OUT \
&& mv -v ../*.{deb,changes} /usr/src/OUT/.
```

## Output

After a successful build, the Debian packages will be available in the `OUT` directory.
98 changes: 98 additions & 0 deletions scripts/packaging/build/dependencies/libks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# Building `libks` Debian Package

This guide explains how to build the `libks` Debian package.

## Prerequisites:
- Git
- Debian-based system (native or Docker)

## Build Steps

### Clone the repository:
```bash
git clone --branch master --single-branch [email protected]:signalwire/libks.git
```

### (Optionally) Use Docker to build packages for Debian `Bookworm`:
```bash
docker run -it -v $(pwd):/usr/src/ debian:bookworm bash -c "cd /usr/src/ && bash"
```

### Set non-interactive frontend for APT:
```bash
export DEBIAN_FRONTEND=noninteractive
```

### Install required build tools:
```bash
apt-get update \
&& apt-get -y upgrade \
&& apt-get -y install \
build-essential \
cmake \
devscripts \
lsb-release \
docbook-xsl \
pkg-config
```

### Set build number (modify as needed):
```bash
export BUILD_NUMBER=42
```
> Note: The build number (42) used in this guide is arbitrary. You can modify it as needed for your build process.

### Set Debian codename:
```bash
export CODENAME=$(lsb_release -sc)
```

### Configure git safety setting:
```bash
git config --global --add safe.directory '*'
```

### Navigate to the source directory:
```bash
cd libks/
```
-- or --
```bash
cd /usr/src/libks/
```

### Extract git hash:
```bash
export GIT_SHA=$(git rev-parse --short HEAD)
```

### Install build dependencies:
```bash
apt-get update \
&& apt-get -y install \
libssl-dev \
uuid-dev
```

### Build binary package:
```bash
PACKAGE_RELEASE="${BUILD_NUMBER}.${GIT_SHA}" cmake . \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX="/usr" \
&& make package
```

### Move built packages to the output directory:
```bash
mkdir -p OUT \
&& mv -v *.deb OUT/.
```
-- or --
```bash
mkdir -p /usr/src/OUT \
&& mv -v *.deb /usr/src/OUT/.
```

## Output

After a successful build, the Debian packages will be available in the `OUT` directory.
Loading