summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/kodi-dev-kit/tools/debian-addon-package-test.sh
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="()$"