1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
#!/bin/bash
# This script is for purely testing purposes!
#
# It is meant to be able to test at binary addons the creation of a debian
# package.
#
# The created files are below the source code folder.
#
# Example:
# ./build-debian-addon-package.sh $HOME/your_path/screensaver.stars
#
# To remove generated code:
# ./build-debian-addon-package.sh $HOME/your_path/screensaver.stars --clean
#
BASE_DIR=""
REPO_DIR=""
PACKAGEVERSION=""
VERSION_MAIN=""
VERSION_MINOR=""
VERSION_REVISON=""
GIT_REV=""
DIST=""
TAGREV=${TAGREV:-"0"}
function usage {
echo "\
--------------------------------------------------------------------------------
This script builds a Kodi addon debian package from the given addon source.
As value, the path to the addon must be given.
In addition --clean can be used to remove the created debian files.
WARNING: This script is for testing purposes only!
--------------------------------------------------------------------------------"
}
function checkEnv {
echo "#------ build environment ------#"
echo "BASE_DIR: $BASE_DIR"
echo "REPO_DIR: $REPO_DIR"
getVersion
echo "VERSION_MAIN: $VERSION_MAIN"
echo "VERSION_MINOR: $VERSION_MINOR"
echo "VERSION_REVISON: $VERSION_REVISON"
if [ $GIT_REV ]; then
echo "GIT_REV: $GIT_REV"
fi
echo "TAGREV: $TAGREV"
echo "DIST: $DIST"
echo "ARCHS: $ARCHS"
echo "#-------------------------------#"
}
function getVersion {
if [ -d ${BASE_DIR}/.git ]; then
getGitRev
fi
PACKAGEVERSION=$(cat ${BASE_DIR}/$REPO_DIR/addon.xml.in | sed -n '/version/ s/.*version=\"\([0-9]\+\.[0-9]\+\.[0-9]\+\)\".*/\1/p' | awk 'NR == 1')
VERSION_MAIN=$(echo $PACKAGEVERSION | awk -F. '{print $1}')
VERSION_MINOR=$(echo $PACKAGEVERSION | awk -F. '{print $2}')
VERSION_REVISON=$(echo $PACKAGEVERSION | awk -F. '{print $3}')
}
function getGitRev {
cd $BASE_DIR || exit 1
GIT_REV=$(git log -1 --pretty=format:"%h")
}
function cleanup() {
echo "Starting to remove debian generated files"
cd ${BASE_DIR}
rm -rf obj-$ARCHS-linux-gnu
rm -rf debian/.debhelper
rm -rf debian/"kodi-"$(echo $REPO_DIR | tr . -)
rm -rf debian/"kodi-"$(echo $REPO_DIR | tr . -)-dbg
rm -rf debian/tmp
rm -f debian/changelog
rm -f debian/debhelper-build-stamp
rm -f debian/files
rm -f debian/*.log
rm -f debian/*.substvars
}
if [[ $1 = "-h" ]] || [[ $1 = "--help" ]]; then
echo "$0:"
usage
exit
fi
if [ ! $1 ] || [ ${1} = "--clean" ]; then
printf "$0:\nERROR: Addon source code must be given as the first parameter!\n"
usage
exit 1
elif [ ! -d $1 ]; then
printf "$0:\nERROR: Given folder is not present or not a valid addon source!\n"
usage
exit 1
fi
ARCHS=$(uname -m)
BASE_DIR=$(realpath ${1})
REPO_DIR=$(basename ${1})
DIST=$(lsb_release -cs)
if [ ! -f ${BASE_DIR}/$REPO_DIR/addon.xml.in ]; then
echo "$0:
ERROR: \"required $REPO_DIR/addon.xml.in\" not found!
The base source dir and addon.xml.in containing directory names must be equal"
usage
exit 1
fi
checkEnv
ORIGTARBALL="kodi-"$(echo $REPO_DIR | tr . -)"_${PACKAGEVERSION}.orig.tar.gz"
if [[ ${2} = "--clean" ]]; then
cleanup
exit
fi
echo "Detected addon package version: ${PACKAGEVERSION}"
sed -e "s/#PACKAGEVERSION#/${PACKAGEVERSION}/g" \
-e "s/#TAGREV#/${TAGREV}/g" \
-e "s/#DIST#/${DIST}/g" ${BASE_DIR}/debian/changelog.in > ${BASE_DIR}/debian/changelog
echo "Create needed compressed source code file: ${BASE_DIR}/../${ORIGTARBALL}.tar.gz"
# git archive --format=tar.gz -o ${BASE_DIR}/../${ORIGTARBALL} HEAD # Unused git, leaved as optional way
EXCLUDE=$(cat .gitignore | sed -e '/#/d' -e '/^\s*$/d' -e 's/^/--exclude=/' -e 's/\/$//' | tr '\n' ' ')
tar -zcvf ${BASE_DIR}/../${ORIGTARBALL} --exclude=.git $EXCLUDE * # Used to prevent on code changed for test a git commit
echo "Building debian-source package for ${DIST}"
dpkg-buildpackage -us -uc --diff-ignore="()$"
|