Magellan Linux

Contents of /trunk/mage-buildserver/buildserver-functions.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2816 - (show annotations) (download) (as text)
Mon Sep 8 14:59:12 2014 UTC (9 years, 7 months ago) by niro
File MIME type: application/x-sh
File size: 3099 byte(s)
-bind logs to buildroot
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 --bind=${BUILDROOT}/log/smage/${arch}:/var/log/smage \
48 bash --login "${script}" \
49 || die "runarch-script '${script}' for '${arch}' failed."
50
51 # wait for container to exit
52 sleep 1
53 }
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 i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; runrc="${buildroot}/.runrc" ;;
66 *) die "unknown architecture '${arch}'" ;;
67 esac
68
69 # create runrc
70 echo "${cmd}" > "${runrc}"
71 runarch-script "${arch}" .runrc || die "runarch script execution of '${runrc}' failed."
72
73 if [ -f "${runrc}" ]
74 then
75 rm "${runrc}"
76 fi
77 }
78
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
96 enum-build-arch-types()
97 {
98 echo "${BUILD_ARCH[*]}"
99 }
100
101 enum-all-arch-types()
102 {
103 local arch
104 local build_arch_types
105
106 for arch in src ${BUILD_ARCH[*]}
107 do
108 if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/${arch}/mage.rc ]
109 then
110 echo "Warning: mage.rc of '${arch}' not found. Arch '${arch}' ignored." >&2
111 else
112 build_arch_types+=( "${arch}" )
113 fi
114 done
115
116 if [[ ${BUILD_PLAYGROUND} -eq 1 ]]
117 then
118 for arch in ${BUILD_ARCH[*]}
119 do
120 if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/playground-${arch}/mage.rc ]
121 then
122 echo "Warning: mage.rc of 'playground-${arch}' not found. Arch 'playground-${arch}' ignored." >&2
123 else
124 build_arch_types+=( "playground-${arch}" )
125 fi
126 done
127 fi
128
129 echo "${build_arch_types[*]}"
130 }