Contents of /trunk/mage-buildserver/buildserver-functions.sh
Parent Directory | Revision Log
Revision 2779 -
(show annotations)
(download)
(as text)
Thu Aug 28 09:18:44 2014 UTC (10 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 3042 byte(s)
Thu Aug 28 09:18:44 2014 UTC (10 years, 1 month ago) by niro
File MIME type: application/x-sh
File size: 3042 byte(s)
-added playground support and use os-arch() to simplify things
1 | die() |
2 | { |
3 | echo "ERROR: $@" |
4 | exit 1 |
5 | } |
6 | |
7 | os-arch() |
8 | { |
9 | local arch="$1" |
10 | local os_arch |
11 | |
12 | case ${arch} in |
13 | i*86|x86_64) os_arch="${arch}" ;; |
14 | src|playground*) os_arch="$(source ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/${arch}/mage.rc; echo ${ARCH})";; |
15 | esac |
16 | |
17 | echo "${os_arch}" |
18 | } |
19 | |
20 | runarch-script() |
21 | { |
22 | local arch="$1" |
23 | local script="$2" |
24 | local buildroot |
25 | local os_arch |
26 | |
27 | # only allow the right arches |
28 | case ${arch} in |
29 | i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; os_arch="$(os-arch ${arch})" ;; |
30 | *) die "unknown architecture '${arch}'" ;; |
31 | esac |
32 | |
33 | [ -f ${buildroot}/${script} ] || die "'${buildroot}/${script}' does not exist." |
34 | |
35 | setarch "${os_arch}" systemd-nspawn \ |
36 | --directory="${buildroot}" \ |
37 | --bind=${BUILDROOT}/mage-tree/${arch}:/usr/mage \ |
38 | --bind=${BUILDROOT}/svn/mage/include:/usr/mage/include \ |
39 | --bind=${BUILDROOT}/svn/mage/profiles:/usr/mage/profiles \ |
40 | --bind=${BUILDROOT}/svn/smage:/var/cache/mage/smage \ |
41 | --bind=${BUILDROOT}/packages/${arch}:/var/cache/mage/packages \ |
42 | --bind=${BUILDROOT}/packages/src:/var/cache/mage/src-packages \ |
43 | --bind=${BUILDROOT}/meta/${arch}:/var/cache/mage/meta \ |
44 | --bind=/usr/lib/mage-buildserver/helper:/usr/lib/mage-buildserver \ |
45 | --bind=${BUILDROOT}/build-info/${arch}:/var/cache/mage-buildserver \ |
46 | --bind=${BUILDROOT}/ssh:/root/.ssh \ |
47 | bash --login "${script}" \ |
48 | || die "runarch-script '${script}' for '${arch}' failed." |
49 | |
50 | # wait for container to exit |
51 | sleep 1 |
52 | } |
53 | |
54 | runarch() |
55 | { |
56 | local arch="$1" |
57 | shift |
58 | local cmd="$@" |
59 | local buildroot |
60 | local runrc |
61 | |
62 | # only allow the right arches |
63 | case ${arch} in |
64 | i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; runrc="${buildroot}/.runrc" ;; |
65 | *) die "unknown architecture '${arch}'" ;; |
66 | esac |
67 | |
68 | # create runrc |
69 | echo "${cmd}" > "${runrc}" |
70 | runarch-script "${arch}" .runrc || die "runarch script execution of '${runrc}' failed." |
71 | |
72 | if [ -f "${runrc}" ] |
73 | then |
74 | rm "${runrc}" |
75 | fi |
76 | } |
77 | |
78 | runarch-pkg-install() |
79 | { |
80 | local arch="$1" |
81 | local pkg="$2" |
82 | |
83 | if [ ! -f ${BUILDROOT}/.stamps/"${arch}"_"${pkg}"-ok ] |
84 | then |
85 | runarch "${arch}" mage install "${pkg}" || die "${arch} install 'python'" |
86 | touch ${BUILDROOT}/.stamps/"${arch}"_"${pkg}"-ok |
87 | else |
88 | echo "Warning: '${pkg}' already installed for arch '${arch}'" |
89 | fi |
90 | |
91 | # never fail |
92 | return 0 |
93 | } |
94 | |
95 | enum-build-arch-types() |
96 | { |
97 | echo "${BUILD_ARCH[*]}" |
98 | } |
99 | |
100 | enum-all-arch-types() |
101 | { |
102 | local arch |
103 | local build_arch_types |
104 | |
105 | for arch in src ${BUILD_ARCH[*]} |
106 | do |
107 | if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/${arch}/mage.rc ] |
108 | then |
109 | echo "Warning: mage.rc of '${arch}' not found. Arch '${arch}' ignored." >&2 |
110 | else |
111 | build_arch_types+=( "${arch}" ) |
112 | fi |
113 | done |
114 | |
115 | if [[ ${BUILD_PLAYGROUND} -eq 1 ]] |
116 | then |
117 | for arch in ${BUILD_ARCH[*]} |
118 | do |
119 | if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/playground-${arch}/mage.rc ] |
120 | then |
121 | echo "Warning: mage.rc of 'playground-${arch}' not found. Arch 'playground-${arch}' ignored." >&2 |
122 | else |
123 | build_arch_types+=( "playground-${arch}" ) |
124 | fi |
125 | done |
126 | fi |
127 | |
128 | echo "${build_arch_types[*]}" |
129 | } |