Annotation of /trunk/mage-buildserver/buildserver-functions.sh
Parent Directory | Revision Log
Revision 2817 -
(hide annotations)
(download)
(as text)
Mon Sep 8 14:59:56 2014 UTC (9 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 3239 byte(s)
Mon Sep 8 14:59:56 2014 UTC (9 years, 9 months ago) by niro
File MIME type: application/x-sh
File size: 3239 byte(s)
-added enum-playground-arch-types() function
1 | niro | 2588 | die() |
2 | { | ||
3 | echo "ERROR: $@" | ||
4 | exit 1 | ||
5 | } | ||
6 | |||
7 | niro | 2776 | 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 | niro | 2588 | runarch-script() |
21 | { | ||
22 | local arch="$1" | ||
23 | local script="$2" | ||
24 | local buildroot | ||
25 | niro | 2748 | local os_arch |
26 | niro | 2588 | |
27 | # only allow the right arches | ||
28 | case ${arch} in | ||
29 | niro | 2779 | i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; os_arch="$(os-arch ${arch})" ;; |
30 | niro | 2588 | *) die "unknown architecture '${arch}'" ;; |
31 | esac | ||
32 | |||
33 | [ -f ${buildroot}/${script} ] || die "'${buildroot}/${script}' does not exist." | ||
34 | |||
35 | niro | 2748 | setarch "${os_arch}" systemd-nspawn \ |
36 | niro | 2588 | --directory="${buildroot}" \ |
37 | niro | 2778 | --bind=${BUILDROOT}/mage-tree/${arch}:/usr/mage \ |
38 | niro | 2588 | --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 | niro | 2748 | --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 | niro | 2816 | --bind=${BUILDROOT}/log/smage/${arch}:/var/log/smage \ |
48 | niro | 2588 | bash --login "${script}" \ |
49 | || die "runarch-script '${script}' for '${arch}' failed." | ||
50 | niro | 2748 | |
51 | # wait for container to exit | ||
52 | sleep 1 | ||
53 | niro | 2588 | } |
54 | |||
55 | runarch() | ||
56 | { | ||
57 | local arch="$1" | ||
58 | shift | ||
59 | local cmd="$@" | ||
60 | local buildroot | ||
61 | local runrc | ||
62 | |||
63 | # only allow the right arches | ||
64 | case ${arch} in | ||
65 | niro | 2779 | i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; runrc="${buildroot}/.runrc" ;; |
66 | niro | 2588 | *) die "unknown architecture '${arch}'" ;; |
67 | esac | ||
68 | |||
69 | # create runrc | ||
70 | echo "${cmd}" > "${runrc}" | ||
71 | niro | 2777 | runarch-script "${arch}" .runrc || die "runarch script execution of '${runrc}' failed." |
72 | niro | 2588 | |
73 | if [ -f "${runrc}" ] | ||
74 | then | ||
75 | rm "${runrc}" | ||
76 | fi | ||
77 | } | ||
78 | niro | 2774 | |
79 | runarch-pkg-install() | ||
80 | { | ||
81 | local arch="$1" | ||
82 | local pkg="$2" | ||
83 | |||
84 | if [ ! -f ${BUILDROOT}/.stamps/"${arch}"_"${pkg}"-ok ] | ||
85 | then | ||
86 | runarch "${arch}" mage install "${pkg}" || die "${arch} install 'python'" | ||
87 | touch ${BUILDROOT}/.stamps/"${arch}"_"${pkg}"-ok | ||
88 | else | ||
89 | echo "Warning: '${pkg}' already installed for arch '${arch}'" | ||
90 | fi | ||
91 | |||
92 | # never fail | ||
93 | return 0 | ||
94 | } | ||
95 | niro | 2775 | |
96 | enum-build-arch-types() | ||
97 | { | ||
98 | echo "${BUILD_ARCH[*]}" | ||
99 | } | ||
100 | |||
101 | niro | 2817 | enum-playground-arch-types() |
102 | niro | 2775 | { |
103 | local arch | ||
104 | local build_arch_types | ||
105 | |||
106 | if [[ ${BUILD_PLAYGROUND} -eq 1 ]] | ||
107 | then | ||
108 | for arch in ${BUILD_ARCH[*]} | ||
109 | do | ||
110 | if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/playground-${arch}/mage.rc ] | ||
111 | then | ||
112 | echo "Warning: mage.rc of 'playground-${arch}' not found. Arch 'playground-${arch}' ignored." >&2 | ||
113 | else | ||
114 | build_arch_types+=( "playground-${arch}" ) | ||
115 | fi | ||
116 | done | ||
117 | fi | ||
118 | |||
119 | echo "${build_arch_types[*]}" | ||
120 | } | ||
121 | niro | 2817 | |
122 | enum-all-arch-types() | ||
123 | { | ||
124 | local arch | ||
125 | local build_arch_types | ||
126 | |||
127 | for arch in src $(enum-build-arch-types) $(enum-playground-arch-types) | ||
128 | do | ||
129 | if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/${arch}/mage.rc ] | ||
130 | then | ||
131 | echo "Warning: mage.rc of '${arch}' not found. Arch '${arch}' ignored." >&2 | ||
132 | else | ||
133 | build_arch_types+=( "${arch}" ) | ||
134 | fi | ||
135 | done | ||
136 | |||
137 | echo "${build_arch_types[*]}" | ||
138 | } |