blob: 9b44393994f7376b652f38e12ab9a1fff63e2bc9 [file] [log] [blame]
#!/bin/bash
set -e
PKG_NAME=dhtnet
PKG_VERSION=0.3.0
FOLDER_NAME="${PKG_NAME}-${PKG_VERSION}"
# move pwd to the directory of this script (extras/packaging)
cd "$(dirname "$0")" || exit 1
rm -Rf "${FOLDER_NAME}"
rm -f -- *${PKG_NAME}-${PKG_VERSION}.tar.gz
mkdir -p "${FOLDER_NAME}"
rm -Rf "../../dependencies/msgpack"
rm -Rf "../../dependencies/opendht"
rm -Rf "../../dependencies/pjproject"
rm -Rf "../../dependencies/restinio"
(cd ../.. && git submodule update --init --recursive)
build_ubuntu=false
build_ubuntu20=false
build_ubuntu22=false
build_ubuntu24=false
build_debian=false
build_debian10=false
build_debian11=false
build_debian12=false
parse_args() {
while [ "$1" != "" ]; do
case $1 in
-u | --ubuntu ) build_ubuntu=true
build_ubuntu20=true
build_ubuntu22=true
build_ubuntu24=true
;;
-u20 | --ubuntu20 ) build_ubuntu20=true
build_ubuntu=true
;;
-u22 | --ubuntu22 ) build_ubuntu22=true
build_ubuntu=true
;;
-u24 | --ubuntu24 ) build_ubuntu24=true
build_ubuntu=true
;;
-d | --debian ) build_debian=true
build_debian10=true
build_debian11=true
build_debian12=true
;;
-d10 | --debian10 ) build_debian10=true
build_debian=true
;;
-d11 | --debian11 ) build_debian11=true
build_debian=true
;;
-d12 | --debian12 ) build_debian12=true
build_debian=true
;;
-a | --all ) build_ubuntu=true
# not working: build_ubuntu20=true
build_ubuntu22=true
build_ubuntu24=true
build_debian=true
# not working: build_debian10=true
# not working: build_debian11=true
build_debian12=true
;;
* ) echo "Argument '$1' is not recognized"
;;
esac
shift
done
}
parse_args "$@"
# copy source code
cp -Rf ../../dependencies "${FOLDER_NAME}/dependencies"
cp -Rf ../../include "${FOLDER_NAME}/include"
cp -Rf ../../src "${FOLDER_NAME}/src"
cp -Rf ../../tools "${FOLDER_NAME}/tools"
cp -Rf ../../CMakeLists.txt "${FOLDER_NAME}/CMakeLists.txt"
cp -Rf ../../COPYING "${FOLDER_NAME}/COPYING"
cp -Rf ../../dhtnet.pc.in "${FOLDER_NAME}/dhtnet.pc.in"
cp -Rf ../../README.md "${FOLDER_NAME}/README.md"
if [ "$build_ubuntu" == true ] || [ "$build_debian" == true ]; then
# copy debian conf
cp -Rf "./gnu-linux/debian" "${FOLDER_NAME}/debian"
tar -czf "deb-${PKG_NAME}-${PKG_VERSION}.tar.gz" "${FOLDER_NAME}"
rm -Rf "${FOLDER_NAME}/debian"
fi
rm -Rf "${FOLDER_NAME}"
echo "Archives <os>-${PKG_NAME}-${PKG_VERSION}.tar.gz are ready, starting builds... (will take few minutes)"
#######################
started_builds=()
started_pid=()
remainning_builds=0
build_target() {
target="$1"
mkdir -p "$target"
docker build -t "dhtnet-builder:$target" -f "gnu-linux/$target.Dockerfile" --build-arg PKG_NAME="$FOLDER_NAME" .
remainning_builds=$((remainning_builds+1))
(
docker run --rm \
-v "$(pwd)/$target/":/build/debs \
-e PKG_NAME="$FOLDER_NAME" "dhtnet-builder:$target" > "$target/build.log" 2>&1;
if [ $? -eq 0 ]; then
rm -f -- $target/build-at-*
echo "$target package built at $(date)" > "$target/build-at-$(date +%F-%R)"
echo "Successfully built $target package"
else
echo "Failed to build $target package, check log for more details"
fi
) &
started_pid+=("$!")
started_builds+=("$target")
}
# build Ubuntu package (deb-*)
if [ "$build_ubuntu24" == true ]; then
build_target "ubuntu-24"
fi
if [ "$build_ubuntu22" == true ]; then
build_target "ubuntu-22"
fi
if [ "$build_ubuntu20" == true ]; then
build_target "ubuntu-20"
fi
# build Debian package (deb-*)
if [ "$build_debian12" == true ]; then
build_target "debian-12"
fi
if [ "$build_debian11" == true ]; then
build_target "debian-11"
fi
if [ "$build_debian10" == true ]; then
build_target "debian-10"
fi
while [ $remainning_builds -gt 0 ]; do
time="$(date +%T)"
for index in "${!started_builds[@]}"; do
if [ "${started_pid[$index]}" != "" ]; then
if ps -p "${started_pid[$index]}" > /dev/null; then
echo "[$time] Still building ${started_builds[$index]}... (pid: ${started_pid[$index]})"
else
echo "[$time] Build ${started_builds[$index]} finished"
remainning_builds=$((remainning_builds-1))
started_pid[index]=""
fi
fi
done
if [ $remainning_builds -gt 0 ]; then
sleep 30
fi
done
echo "[$(date +%T)] All builds finished:"
for target in "${started_builds[@]}"; do
echo " - $target"
done