mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-15 14:36:45 +00:00
[UTILS] Add build-debs-native.sh
script.
This commit is contained in:
parent
3f1e4bf90a
commit
8c92346129
37
scripts/packaging/build/README.md
Normal file
37
scripts/packaging/build/README.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Build Scripts
|
||||||
|
|
||||||
|
This directory contains scripts for building FreeSWITCH.
|
||||||
|
|
||||||
|
## build-debs-native.sh
|
||||||
|
Builds Debian packages for FreeSWITCH from git tree on supported Debian distributions.
|
||||||
|
|
||||||
|
### TLDR: Example running from FreeSWITCH git root
|
||||||
|
```bash
|
||||||
|
scripts/packaging/fsget.sh pat_hFooBar
|
||||||
|
scripts/packaging/build/build-debs-native.sh -b 999 -o /tmp/fsdebs/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
- Root access is recommended
|
||||||
|
- Supported Debian system and architecture
|
||||||
|
- FreeSWITCH git repository in the working directory
|
||||||
|
- FreeSWITCH Debian repository configured (use `fsget.sh`)
|
||||||
|
|
||||||
|
### Features
|
||||||
|
- Automated dependency installation
|
||||||
|
- FreeSWITCH Debian (source) package creation
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
```bash
|
||||||
|
./build-debs-native.sh -b BUILD_NUMBER -o OUTPUT_DIR [-w WORKING_DIR]
|
||||||
|
```
|
||||||
|
|
||||||
|
Required:
|
||||||
|
- `-b`: Build number (part of package version)
|
||||||
|
- `-o`: Output directory for packages
|
||||||
|
|
||||||
|
Optional:
|
||||||
|
- `-w`: Working directory (defaults to git root, needs to be git tree)
|
||||||
|
|
||||||
|
### Output
|
||||||
|
Generates `.deb`, `.dsc`, `.changes`, and `.tar.*` files in the output directory.
|
117
scripts/packaging/build/build-debs-native.sh
Executable file
117
scripts/packaging/build/build-debs-native.sh
Executable file
@ -0,0 +1,117 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# lint: shfmt -w -s -bn -ci -sr -fn scripts/packaging/build/build-debs-native.sh
|
||||||
|
|
||||||
|
set -e # Exit immediately if a command exits with a non-zero status
|
||||||
|
set -u # Treat unset variables as an error
|
||||||
|
set -o pipefail # Return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status
|
||||||
|
|
||||||
|
print_usage()
|
||||||
|
{
|
||||||
|
echo "Usage: $0 -b BUILD_NUMBER -o OUTPUT_DIR [-w WORKING_DIR]"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
WORKING_DIR=$(git rev-parse --show-toplevel 2> /dev/null || pwd -P)
|
||||||
|
|
||||||
|
while getopts ":b:o:w:" opt; do
|
||||||
|
case ${opt} in
|
||||||
|
b) BUILD_NUMBER=$OPTARG ;;
|
||||||
|
o) OUTPUT_DIR=$OPTARG ;;
|
||||||
|
w) WORKING_DIR=$OPTARG ;;
|
||||||
|
\?) print_usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${BUILD_NUMBER:-}" ] || [ -z "${OUTPUT_DIR:-}" ]; then
|
||||||
|
print_usage
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$(id -u)" != "0" ]; then
|
||||||
|
echo "Non-root user detected. Execution may fail."
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "${WORKING_DIR}" || exit 1
|
||||||
|
|
||||||
|
install_deps()
|
||||||
|
{
|
||||||
|
apt-get update || echo "WARNING: apt-get update failed"
|
||||||
|
apt-get install -y \
|
||||||
|
apt-transport-https \
|
||||||
|
debhelper \
|
||||||
|
gnupg2 \
|
||||||
|
build-essential \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
devscripts \
|
||||||
|
dh-autoreconf \
|
||||||
|
dos2unix \
|
||||||
|
doxygen \
|
||||||
|
lsb-release \
|
||||||
|
pkg-config \
|
||||||
|
wget || echo "WARNING: package installation failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
export_vars()
|
||||||
|
{
|
||||||
|
export CODENAME=$(lsb_release -sc)
|
||||||
|
if ! VERSION=$(cat ./build/next-release.txt | tr -d '\n'); then
|
||||||
|
echo "Failed to read version file" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
export GIT_SHA=$(git rev-parse --short HEAD)
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_git_local()
|
||||||
|
{
|
||||||
|
if [ -z "$(git config user.email)" ]; then
|
||||||
|
git config user.email "$(id -un)@localhost"
|
||||||
|
fi
|
||||||
|
if [ -z "$(git config user.name)" ]; then
|
||||||
|
git config user.name "$(id -un)"
|
||||||
|
fi
|
||||||
|
git config --add safe.directory '*'
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_freeswitch()
|
||||||
|
{
|
||||||
|
./debian/util.sh prep-create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||||
|
./debian/util.sh prep-create-dsc ${CODENAME}
|
||||||
|
}
|
||||||
|
|
||||||
|
install_freeswitch_deps()
|
||||||
|
{
|
||||||
|
apt-get update || echo "WARNING: apt-get update failed"
|
||||||
|
mk-build-deps --install --remove debian/control \
|
||||||
|
--tool "apt-get --yes --no-install-recommends" || echo "WARNING: mk-build-deps failed"
|
||||||
|
apt-get --yes --fix-broken install || echo "WARNING: apt-get fix-broken failed"
|
||||||
|
}
|
||||||
|
|
||||||
|
build_source_package()
|
||||||
|
{
|
||||||
|
dch -b -M -v "${VERSION}-${BUILD_NUMBER}-${GIT_SHA}~${CODENAME}" \
|
||||||
|
--force-distribution -D "${CODENAME}" "Nightly build, ${GIT_SHA}"
|
||||||
|
|
||||||
|
./debian/util.sh create-orig -n -V${VERSION}-${BUILD_NUMBER}-${GIT_SHA} -x
|
||||||
|
}
|
||||||
|
|
||||||
|
build_and_move()
|
||||||
|
{
|
||||||
|
dpkg-source --diff-ignore=.* --compression=xz --compression-level=9 --build . \
|
||||||
|
&& debuild -b -us -uc \
|
||||||
|
&& mkdir -p "${OUTPUT_DIR}" \
|
||||||
|
&& mv -v ../*.{deb,dsc,changes,tar.*} "${OUTPUT_DIR}"/
|
||||||
|
}
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
install_deps
|
||||||
|
export_vars
|
||||||
|
setup_git_local
|
||||||
|
bootstrap_freeswitch
|
||||||
|
install_freeswitch_deps
|
||||||
|
build_source_package
|
||||||
|
build_and_move
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
Loading…
x
Reference in New Issue
Block a user