Add Debian package building files
This commit is contained in:
parent
b477cb7a55
commit
575c09dde3
11 changed files with 229 additions and 2 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1 +1,2 @@
|
||||||
*~
|
*~
|
||||||
|
/dist
|
||||||
|
|
179
build.sh
Executable file
179
build.sh
Executable 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
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
1
debian/compat
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
11
|
12
debian/control
vendored
Normal file
12
debian/control
vendored
Normal 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
20
debian/copyright
vendored
Normal 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
3
debian/install
vendored
Normal 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
4
debian/rules
vendored
Executable file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/make -f
|
||||||
|
#export DH_VERBOSE=1
|
||||||
|
%:
|
||||||
|
dh $@
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
1.0
|
Loading…
Reference in a new issue