blob: f8056de82b3bc2488868569dbf93e53129c1b7a7 (
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
142
|
#!/bin/bash
source "$SCRIPT_DIR/internals/prebuilt_pkg_paths.txt"
function run_pdebuild()
{
# pbuilder absolute paths
PBUILDER_HOOK_DIR="/var/cache/pbuilder/hooks"
PBUILDER_SHELL_HOOK_TEMPLATE="$SCRIPT_DIR/internals/C10shell"
PBUILDER_SHELL_HOOK="$PBUILDER_HOOK_DIR/C10shell"
PBUILDER_DEPS_HOOK="$PBUILDER_HOOK_DIR/D05deps"
# Sign packages optino
OPT_SIGN_PKG_PBUILDER=""
if [ ! -z "$GPG_SIGN_KEYID" ]; then
OPT_SIGN_PKG_LOCAL="-k$GPG_SIGN_KEYID"
OPT_SIGN_PKG_PBUILDER="--auto-debsign --debsign-k $GPG_SIGN_KEYID"
fi
## Build module in a clean chroot environment using pbuilder
# Install/remove shell hook
if [ ! -d "$PBUILDER_HOOK_DIR" ]; then
mkdir -p "$PBUILDER_HOOK_DIR"
fi
if [ "$bool_SHELL_HOOK" = "y" ]; then
cp "$PBUILDER_SHELL_HOOK_TEMPLATE" "$PBUILDER_SHELL_HOOK"
chmod a+x "$PBUILDER_SHELL_HOOK"
else
if [ -x "$PBUILDER_SHELL_HOOK" ]; then
rm "$PBUILDER_SHELL_HOOK"
fi
fi
# Build using pbuilder
echo -e "${CYellow}> Building using pbuilder${CNone}"
# Create pbuilder hook to make sure all available packages are scanned
# Store any existing D05 hook as a temporary file, this will be reinstated at the end
cat <<END_D05_01 > "$PBUILDER_DEPS_HOOK"
#!/bin/sh
(cd "$TDE_DEBS_DIR"; apt-ftparchive packages . > Packages)
echo "deb [trusted=yes] file:$TDE_DEBS_DIR ./" >> /etc/apt/sources.list
END_D05_01
# -- prebuilt TDE packages
if [[ "$USE_PREBUILD_PACKAGES" = "y" ]]; then
# Get building branch from .tdescminfo file
if [[ -f "$MOD_BUILD_PATH/.tdescminfo" ]]; then
BUILD_BRANCH=`sed -n -r "s/^Revision: ([^-]+)-.*/\1/p" "$MOD_BUILD_PATH/.tdescminfo"`
bool_EDEPS_FOUND="n"
OLD_IFS=$IFS && IFS=$' \t'
while read l_branch l_repo l_component; do
if [ "$l_branch" = "$BUILD_BRANCH" ]; then
bool_EDEPS_FOUND="y"
cat <<END_D05_02 >> "$PBUILDER_DEPS_HOOK"
echo "deb [trusted=yes] $l_repo $DISTRO_NAME $l_component" >> /etc/apt/sources.list
END_D05_02
break
fi
done <<< $(echo "$TDE_PREBUILT_PKGS" | grep -E "^[[:space:]]*[^#[:space:]]+[[:space:]]+[^[:space:]]+.*$")
if [ "$bool_EDEPS_FOUND" != "y" ]; then
# EDEPS repository not found, use default. This could happen when building from sub branches of the main package repo
while read l_branch l_repo l_component; do
if [ "$l_branch" = "default" ]; then
bool_EDEPS_FOUND="y"
cat <<END_D05_03 >> "$PBUILDER_DEPS_HOOK"
echo "deb [trusted=yes] $l_repo $DISTRO_NAME $l_component" >> /etc/apt/sources.list
END_D05_03
break
fi
done <<< $(echo "$TDE_PREBUILT_PKGS" | grep -E "^[[:space:]]*[^#[:space:]]+[[:space:]]+[^[:space:]]+.*$")
fi
IFS=$OLD_IFS
fi
fi
# -- prebuilt extra dependencies
if [[ "$USE_PREBUILD_EXTRA_DEPS" = "y" ]]; then
# Get building branch from .tdescminfo file
if [[ -f "$MOD_BUILD_PATH/.tdescminfo" ]]; then
BUILD_BRANCH=`sed -n -r "s/^Revision: ([^-]+)-.*/\1/p" "$MOD_BUILD_PATH/.tdescminfo"`
bool_EDEPS_FOUND="n"
OLD_IFS=$IFS && IFS=$' \t'
while read l_branch l_repo l_component; do
if [ "$l_branch" = "$BUILD_BRANCH" ]; then
bool_EDEPS_FOUND="y"
cat <<END_D05_04 >> "$PBUILDER_DEPS_HOOK"
echo "deb [trusted=yes] $l_repo $DISTRO_NAME $l_component" >> /etc/apt/sources.list
END_D05_04
break
fi
done <<< $(echo "$TDE_PREBUILT_EDEPS" | grep -E "^[[:space:]]*[^#[:space:]]+[[:space:]]+[^[:space:]]+.*$")
if [ "$bool_EDEPS_FOUND" != "y" ]; then
# EDEPS repository not found, use default. This could happen when building from sub branches of the main package repo
while read l_branch l_repo l_component; do
if [ "$l_branch" = "default" ]; then
bool_EDEPS_FOUND="y"
cat <<END_D05_05 >> "$PBUILDER_DEPS_HOOK"
echo "deb [trusted=yes] $l_repo $DISTRO_NAME $l_component" >> /etc/apt/sources.list
END_D05_05
break
fi
done <<< $(echo "$TDE_PREBUILT_EDEPS" | grep -E "^[[:space:]]*[^#[:space:]]+[[:space:]]+[^[:space:]]+.*$")
fi
IFS=$OLD_IFS
fi
fi
cat <<END_D05_06 >> "$PBUILDER_DEPS_HOOK"
apt-get update
END_D05_06
chmod a+x "$PBUILDER_DEPS_HOOK"
# Build
OPT_BUILD_PARALLEL=""
if [ ${DEB_BUILD_PARALLEL+x} ]; then
OPT_BUILD_PARALLEL="DEB_BUILD_PARALLEL=$DEB_BUILD_PARALLEL"
fi
eval pdebuild $OPT_SIGN_PKG_PBUILDER \
--architecture $ARCHITECTURE \
--buildresult \"$MOD_DEB_PATH\" \
--pbuilderroot \"sudo $OPT_BUILD_PARALLEL DISTRO_NAME=$DISTRO_NAME ARCHITECTURE=$ARCHITECTURE\" \
--logfile \"$BUILDING_LOG_FILE\" \
-- \
--bindmounts \"$TDE_DEBS_DIR\" \
--hookdir \"$PBUILDER_HOOK_DIR\" \
$OPT_SHOW_LOGS\"$BUILDING_LOG_FILE\"
PBUILDER_RETVAL=$?
# Remove shell hook if it was installed before the build
if [ -x "$PBUILDER_SHELL_HOOK" ]; then
rm "$PBUILDER_SHELL_HOOK"
fi
# Remove deps hook
if [ -x "$PBUILDER_DEPS_HOOK" ]; then
rm "$PBUILDER_DEPS_HOOK"
fi
# Return pdebuild return value to calling function
return $PBUILDER_RETVAL
}
#----------------------------
# The actual code is inside a function to allow the pdebuild return value to be
# correctly passed back to the calling script in all cases (root and non root users)
run_pdebuild
|