Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2817 - (show annotations) (download) (as text)
Mon Sep 8 14:59:56 2014 UTC (9 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 3239 byte(s)
-added enum-playground-arch-types() function
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-playground-arch-types()
102 {
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
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 }