Add Debian package building files

This commit is contained in:
Benjamin Renard 2024-10-07 12:39:38 +02:00
parent b477cb7a55
commit 575c09dde3
Signed by: bn8
GPG key ID: 3E2E1CE1907115BC
11 changed files with 229 additions and 2 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
*~ *~
/dist

179
build.sh Executable file
View file

@ -0,0 +1,179 @@
#!/bin/bash
# vim: shiftwidth=4 tabstop=4 expandtab
INSTALL_BUILD_DEPS=0
INSTALL_BUILD_DEPS_ONLY=0
PURGE_SOURCE_DIRECTORY=0
function usage() {
[ $# -gt 0 ] && echo -e "$*\n" > /dev/stderr
cat << EOF
Usage: $0 [-h|I|-O|-P|-x]
-h|--help Show this message
-I|--install-build-deps Install build dependencies before building package
-O|--install-build-deps-only Only install build dependencies
-P|--purge-sources-directory Purge debian package sources directory after building package
-x|--trace Enable bash tracing (set -x)
EOF
[ $# -gt 0 ] && exit 1
}
idx=1
while [ $idx -le $# ]; do
OPT=${!idx}
case $OPT in
-h|--help)
usage
;;
-I|--install-build-deps)
INSTALL_BUILD_DEPS=1
;;
-O|--install-build-deps-only)
INSTALL_BUILD_DEPS=1
INSTALL_BUILD_DEPS_ONLY=1
;;
-P|--purge-sources-directory)
PURGE_SOURCE_DIRECTORY=1
;;
-x|--trace)
set -x
;;
*)
usage "Unknown parameter '$OPT'"
esac
(( idx+=1 ))
done
# Enter source directory
cd "$( dirname "$0" )"
# Install build dependencies
if [ $INSTALL_BUILD_DEPS -eq 1 ]; then
apt-get update
apt-get install --no-install-recommends --yes devscripts equivs sed rsync git lsb-release \
wget ca-certificates bash-completion
fi
DEBIAN_RELEASE=$( lsb_release -r -s | sed 's/\..*$//' )
# Install build dependencies based on Debian release
if [ $INSTALL_BUILD_DEPS -eq 1 ]; then
# On Debian Stretch, install GitPython using pip because strect version of python3-git have bugs
if [ "$DEBIAN_RELEASE" -eq 9 ]; then
apt-get install --no-install-recommends --yes python3-pip
python3 -m pip install GitPython
else
apt-get install --no-install-recommends --yes python3-git
fi
fi
# Install GPG key (if provided)
if [ -n "$GPG_KEY" ]; then
[ $INSTALL_BUILD_DEPS -eq 1 ] && apt-get install --no-install-recommends --yes gnupg2
[ $INSTALL_BUILD_DEPS_ONLY -eq 0 ] && echo "$GPG_KEY" | base64 -d | gpg --import
fi
# Stop here on install build deps only mode
[ $INSTALL_BUILD_DEPS_ONLY -eq 1 ] && exit 0
# Retrieve source package name
SOURCE_PACKAGE_NAME=$( grep -E ^Source: debian/control | sed 's/^Source: //' )
# Generate EE debian codename
DEBIAN_CODENAME=$( lsb_release -c -s )
[ "$DEBIAN_RELEASE" -ge 9 ] && DEBIAN_CODENAME="${DEBIAN_CODENAME}-ee"
# Clean previous build
rm -fr dist
# Compute version using git describe
# Note : If no tag exist, git describe will fail: in this case, compute a 0.0 version with same
# format as git describe
VERSION="$( git describe --tags 2> /dev/null )" || \
VERSION="0.0-$( git log --oneline | wc -l )-$( git describe --tags --always )"
# Fix version format to match with Python specs
# See: https://peps.python.org/pep-0440/
# shellcheck disable=SC2001
VERSION=$( sed 's/[^0-9]*\([0-9][^-]*\)-\(.*\)/\1+\2/' <<< "$VERSION" )
# Compute debian package version by adding EE debian version suffix
DEB_VERSION_SUFFIX="~ee${DEBIAN_RELEASE}0+1"
DEB_VERSION="${VERSION}${DEB_VERSION_SUFFIX}"
# Create dist directory
mkdir dist
DIST_DIR=dist/$SOURCE_PACKAGE_NAME-$DEB_VERSION
rsync -av \
--exclude 'dist' \
--exclude '.*' \
--exclude 'build.sh' \
--exclude 'setup.cfg' \
./ "$DIST_DIR/"
# Set version in package files
mapfile -t FILES < <( awk '{print $1}' < "debian/install" )
[[ "${#FILES[@]}" -eq 0 ]] && echo "No file found in debian/install file!" && exit 1
for FILE in "${FILES[@]}"; do
case "$( mimetype -b "$FILE" )" in
application/x-perl)
echo " - in $FILE (perl)"
sed -i "s/^my \$version *=.*$/my \$version = '$VERSION';/" "$DIST_DIR/$( basename "$FILE" )"
;;
application/x-shellscript)
echo " - in $FILE (shellscript)"
sed -i "s/^VERSION *=.*$/VERSION = '$VERSION'/" "$DIST_DIR/$( basename "$FILE" )"
;;
esac
done
# Check gitdch is installed
GITDCH=$(which gitdch)
set -e
if [ -z "$GITDCH" ]; then
TMP_GITDCH=$(mktemp -d)
echo "Temporary install gitdch in $TMP_GITDCH"
wget -O "$TMP_GITDCH"/gitdch https://gitea.zionetrix.net/bn8/gitdch/raw/master/gitdch
chmod +x "$TMP_GITDCH"/gitdch
GITDCH=$TMP_GITDCH/gitdch
else
TMP_GITDCH=""
fi
# Compute gitdch extra args
GITDCH_EXTRA_ARGS=()
[ -n "$DEBFULLNAME" ] && GITDCH_EXTRA_ARGS+=( "--maintainer-name" "$DEBFULLNAME" )
[ -n "$DEBEMAIL" ] && GITDCH_EXTRA_ARGS+=( "--maintainer-email" "$DEBEMAIL" )
if [ -e debian/changelog ]; then
LAST_MANUAL_COMMIT_ID=$( git log --oneline -n1 -- debian/changelog | awk '{print $1}' )
GITDCH_EXTRA_ARGS+=( "--append" "--revision" "${LAST_MANUAL_COMMIT_ID}..HEAD" )
fi
# Generate debian changelog using generate_debian_changelog.py
$GITDCH \
--package-name "$SOURCE_PACKAGE_NAME" \
--version "${DEB_VERSION}" \
--version-suffix "${DEB_VERSION_SUFFIX}" \
--code-name "$DEBIAN_CODENAME" \
--output "$DIST_DIR"/debian/changelog \
--release-notes dist/release-notes.md \
--clean-tags-regex '\-ee[0-9]{2,3}$' \
--exclude "^CI: " \
--exclude "\.gitlab-ci(\.yml)?" \
--exclude "build(\.sh)?" \
--exclude "README(\.md)?" \
--exclude "^Merge branch " \
--verbose "${GITDCH_EXTRA_ARGS[@]}"
# Clean temporary gitdch installation
[ -n "$TMP_GITDCH" ] && rm -fr "$TMP_GITDCH"
# Build debian package
BUILD_ARGS=""
[ -z "$GPG_KEY" ] && BUILD_ARGS="--no-sign" || echo "GPG key provide, enable package signing."
cd "$DIST_DIR"/
if dpkg-buildpackage $BUILD_ARGS; then
# Handle PURGE_SOURCE_DIRECTORY option
[[ $PURGE_SOURCE_DIRECTORY -eq 0 ]] || rm -fr "../../$DIST_DIR"
fi

View file

@ -44,7 +44,7 @@ Getopt::Long::Configure('bundling');
use lib "/usr/share/backuppc/lib"; use lib "/usr/share/backuppc/lib";
use BackupPC::Lib; use BackupPC::Lib;
my $version = '1.1.3'; my $version = 'dev';
my $warnDaysOld = 2; my $warnDaysOld = 2;
my $critDaysOld = 7; my $critDaysOld = 7;
my $warnDaysInProgress = 0.5; my $warnDaysInProgress = 0.5;

View file

@ -42,7 +42,7 @@ Getopt::Long::Configure('bundling');
use lib "/usr/share/backuppc/lib"; use lib "/usr/share/backuppc/lib";
use BackupPC::Lib; use BackupPC::Lib;
my $version = '1.0'; my $version = 'dev';
# Default quota (GB) # Default quota (GB)
my $quota = 100; my $quota = 100;
my $opt_V = 0; my $opt_V = 0;

View file

@ -1,5 +1,11 @@
#!/bin/bash #!/bin/bash
VERSION=dev
if [[ "$1" == "-v" ]] || [[ "$1" == "--version" ]] || [[ "$1" == "version" ]]; then
echo "$( basename "$0" ) - $VERSION"
exit 0
fi
[[ ! -d /var/lib/backuppc/pc ]] && echo "BackupPC directory not found (/var/lib/backuppc/pc)." && exit 1 [[ ! -d /var/lib/backuppc/pc ]] && echo "BackupPC directory not found (/var/lib/backuppc/pc)." && exit 1
if ! cd "/var/lib/backuppc/pc"; then if ! cd "/var/lib/backuppc/pc"; then
echo "Failed to enter in BackupPC directory (/var/lib/backuppc/pc)." echo "Failed to enter in BackupPC directory (/var/lib/backuppc/pc)."

1
debian/compat vendored Normal file
View file

@ -0,0 +1 @@
11

12
debian/control vendored Normal file
View file

@ -0,0 +1,12 @@
Source: check-backuppc
Section: admin
Priority: optional
Maintainer: APT Easter-eggs - check-backuppc <support+check-backuppc@easter-eggs.com>
Build-Depends: debhelper (>> 11.0.0)
Standards-Version: 3.9.6
Package: check-backuppc
Architecture: all
Depends: ${misc:Depends}, backuppc, libmonitoring-plugin-perl
Description: Monitoring plugin to check BackupPC instance
This Icinga/Nagios check plugins permit to check BackupPC instance

20
debian/copyright vendored Normal file
View file

@ -0,0 +1,20 @@
This package was written by Benjamin Renard <brenard@easter-eggs.com>.
Copyright (C) 2013-2024 Easter-eggs <info@easter-eggs.com>
check-backuppc is licensed under the GNU general public license, version 2.
check-backuppc is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
check-backuppc is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
check-backuppc; see the file COPYING. If not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
On Debian systems, a copy of the GNU General Public License is available in
/usr/share/common-licenses/GPL-2 as part of the base-files package.

3
debian/install vendored Normal file
View file

@ -0,0 +1,3 @@
check_backuppc usr/lib/nagios/plugins
check_backuppc_du usr/lib/nagios/plugins
check_backuppc_nb_bkp_v3 usr/bin

4
debian/rules vendored Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/make -f
#export DH_VERBOSE=1
%:
dh $@

1
debian/source/format vendored Normal file
View file

@ -0,0 +1 @@
1.0