blob: d7789541b02da48eb065022982610007f0c02db6 (
plain)
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="()$"
|