python-bme680/packaging/makeall.sh

166 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# script control variables
reponame="" # leave this blank for auto-detection
libname="" # leave this blank for auto-detection
packagename="" # leave this blank for auto-selection
debianlog="debian/changelog"
debcontrol="debian/control"
debcopyright="debian/copyright"
debrules="debian/rules"
debreadme="debian/README"
debdir="$(pwd)"
rootdir="$(dirname $debdir)"
libdir="$rootdir/library"
FLAG=false
# function define
success() {
echo "$(tput setaf 2)$1$(tput sgr0)"
}
inform() {
echo "$(tput setaf 6)$1$(tput sgr0)"
}
warning() {
echo "$(tput setaf 1)$1$(tput sgr0)"
}
newline() {
echo ""
}
# assessing repo and library variables
if [ -z "$reponame" ] || [ -z "$libname" ]; then
inform "detecting reponame and libname..."
else
inform "using reponame and libname overrides"
fi
if [ -z "$reponame" ]; then
if [[ $rootdir == *"python"* ]]; then
repodir="$(dirname $rootdir)"
reponame="$(basename $repodir)"
else
repodir="$rootdir"
reponame="$(basename $repodir)"
fi
reponame=$(echo "$reponame" | tr "[A-Z]" "[a-z]")
fi
if [ -z "$libname" ]; then
cd "$libdir"
libname=$(grep "name" setup.py | tr -d "[:space:]" | cut -c 7- | rev | cut -c 3- | rev)
libname=$(echo "$libname" | tr "[A-Z]" "[a-z]") && cd "$debdir"
fi
if [ -z "$packagename" ]; then
packagename="$libname"
fi
echo "reponame is $reponame and libname is $libname"
echo "output packages will be python-$packagename and python3-$packagename"
# checking generating changelog file
./makelog.sh
version=$(head -n 1 "$libdir/CHANGELOG.txt")
echo "building $libname version $version"
# checking debian/changelog file
inform "checking debian/changelog file..."
if ! head -n 1 $debianlog | grep "$libname" &> /dev/null; then
warning "library not mentioned in header!" && FLAG=true
elif head -n 1 $debianlog | grep "UNRELEASED"; then
warning "this changelog is not going to generate a release!"
warning "change distribution to 'stable'" && FLAG=true
fi
# checking debian/copyright file
inform "checking debian/copyright file..."
if ! grep "^Source" $debcopyright | grep "$reponame" &> /dev/null; then
warning "$(grep "^Source" $debcopyright)" && FLAG=true
fi
if ! grep "^Upstream-Name" $debcopyright | grep "$libname" &> /dev/null; then
warning "$(grep "^Upstream-Name" $debcopyright)" && FLAG=true
fi
# checking debian/control file
inform "checking debian/control file..."
if ! grep "^Source" $debcontrol | grep "$libname" &> /dev/null; then
warning "$(grep "^Source" $debcontrol)" && FLAG=true
fi
if ! grep "^Homepage" $debcontrol | grep "$reponame" &> /dev/null; then
warning "$(grep "^Homepage" $debcontrol)" && FLAG=true
fi
if ! grep "^Package: python-$packagename" $debcontrol &> /dev/null; then
warning "$(grep "^Package: python-" $debcontrol)" && FLAG=true
fi
if ! grep "^Package: python3-$packagename" $debcontrol &> /dev/null; then
warning "$(grep "^Package: python3-" $debcontrol)" && FLAG=true
fi
if ! grep "^Priority: extra" $debcontrol &> /dev/null; then
warning "$(grep "^Priority" $debcontrol)" && FLAG=true
fi
# checking debian/rules file
inform "checking debian/rules file..."
if ! grep "debian/python-$packagename" $debrules &> /dev/null; then
warning "$(grep "debian/python-" $debrules)" && FLAG=true
fi
if ! grep "debian/python3-$packagename" $debrules &> /dev/null; then
warning "$(grep "debian/python3-" $debrules)" && FLAG=true
fi
# checking debian/README file
inform "checking debian/readme file..."
if ! grep -e "$libname" -e "$reponame" $debreadme &> /dev/null; then
warning "README does not seem to mention product, repo or lib!" && FLAG=true
fi
# summary of checks pre build
if $FLAG; then
warning "Check all of the above and correct!" && exit 1
else
inform "we're good to go... bulding!"
fi
# building deb and final checks
./makedeb.sh
inform "running lintian..."
lintian -v $(find -name "python*$version*.deb")
lintian -v $(find -name "python3*$version*.deb")
inform "checking signatures..."
gpg --verify $(find -name "*$version*changes")
gpg --verify $(find -name "*$version*dsc")
exit 0