forked from openSUSE/obs-build
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build-recipe
126 lines (116 loc) · 3.1 KB
/
build-recipe
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
#
# recipe specific functions for the build script
#
################################################################
#
# Copyright (c) 1995-2014 SUSE Linux Products GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program (see the file COPYING); if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
################################################################
KIWI_PARAMETERS=
for i in spec dsc kiwi arch preinstallimage mock livebuild; do
. "$BUILD_DIR/build-recipe-$i"
done
recipe_setup() {
recipe_setup_$BUILDTYPE "$@"
}
recipe_prepare() {
recipe_prepare_$BUILDTYPE "$@"
}
recipe_build() {
recipe_build_$BUILDTYPE "$@"
}
recipe_resultdirs () {
recipe_resultdirs_$BUILDTYPE "$@"
}
recipe_parse_options() {
case ${PARAM/#--/-} in
-stage)
needarg
BUILD_RPM_BUILD_STAGE="$ARG"
shift
;;
-kiwi-parameter)
test -z "$ARG" && ARG="$1"
needarg
KIWI_PARAMETERS="$KIWI_PARAMETERS $ARG"
shift
;;
-*)
return 1
;;
esac
nextargs=("$@")
return 0
}
recipe_set_buildtype() {
BUILDTYPE=
case ${RECIPEFILE##_service:*:} in
*.spec|*.src.rpm) BUILDTYPE=spec ;;
*.dsc) BUILDTYPE=dsc ;;
*.kiwi) BUILDTYPE=kiwi ;;
PKGBUILD) BUILDTYPE=arch ;;
_preinstallimage) BUILDTYPE=preinstallimage ;;
*.livebuild) BUILDTYPE=livebuild ;;
esac
if test -z "$BUILDTYPE" ; then
echo "I don't know how to build $RECIPEFILE"
cleanup_and_exit 1
fi
# we can't query right after vm startup, so we put the BUILDENGINE in the build.data
if test -z "$RUNNING_IN_VM" ; then
BUILDENGINE=
if test -n "$BUILD_DIST" ; then
BUILDENGINE=`queryconfig buildengine --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"`
test "$BUILDENGINE" = UNDEFINED && BUILDENGINE=
fi
fi
if test "$BUILDENGINE" = mock -a "$BUILDTYPE" = spec ; then
BUILDTYPE=mock
fi
}
# expands all directories into files
expand_recipe_directories() {
local f t ff found
if test -z "$RECIPEFILES" ; then
set -- "`pwd`"
else
set -- "${RECIPEFILES[@]}"
fi
RECIPEFILES=()
for f in "$@" ; do
if test "$f" = "${f#/}" ; then
f="`pwd`/$f"
fi
if test -d "$f" ; then
for t in .spec .dsc PKGBUILD .kiwi .src.rpm .nosrc.rpm ; do
found=
for ff in "$f"/*$t ; do
test -f "$ff" || continue
RECIPEFILES=("${RECIPEFILES[@]}" "$ff")
found=true
done
test -n "$found" && break
done
else
RECIPEFILES[${#RECIPEFILES[@]}]="$f"
fi
done
if test -z "$RECIPEFILES" ; then
echo "no recipe files found in $@. exit..."
cleanup_and_exit 1
fi
}