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 BackupPC::Lib;
|
||||
|
||||
my $version = '1.1.3';
|
||||
my $version = 'dev';
|
||||
my $warnDaysOld = 2;
|
||||
my $critDaysOld = 7;
|
||||
my $warnDaysInProgress = 0.5;
|
||||
|
|
|
@ -42,7 +42,7 @@ Getopt::Long::Configure('bundling');
|
|||
use lib "/usr/share/backuppc/lib";
|
||||
use BackupPC::Lib;
|
||||
|
||||
my $version = '1.0';
|
||||
my $version = 'dev';
|
||||
# Default quota (GB)
|
||||
my $quota = 100;
|
||||
my $opt_V = 0;
|
||||
|
|
|
@ -1,5 +1,11 @@
|
|||
#!/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
|
||||
if ! cd "/var/lib/backuppc/pc"; then
|
||||
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