Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3126 - (show annotations) (download) (as text)
Tue May 12 14:44:22 2020 UTC (3 years, 11 months ago) by niro
File MIME type: application/x-sh
File size: 3427 byte(s)
-only install python if not already installed
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 if [[ -z $(MROOT="${BUILDROOT}/${arch}" magequery -n "${pkg}") ]]
87 then
88 runarch "${arch}" mage install "${pkg}" || die "${arch} install 'python'"
89 else
90 echo "Warning: not running mage install '${pkg}' for arch '${arch}': package already installed."
91 fi
92 touch ${BUILDROOT}/.stamps/"${arch}"_"${pkg}"-ok
93 else
94 echo "Warning: '${pkg}' already installed for arch '${arch}'"
95 fi
96
97 # never fail
98 return 0
99 }
100
101 enum-build-arch-types()
102 {
103 echo "${BUILD_ARCH[*]}"
104 }
105
106 enum-playground-arch-types()
107 {
108 local arch
109 local build_arch_types
110
111 if [[ ${BUILD_PLAYGROUND} -eq 1 ]]
112 then
113 for arch in ${BUILD_ARCH[*]}
114 do
115 if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/playground-${arch}/mage.rc ]
116 then
117 echo "Warning: mage.rc of 'playground-${arch}' not found. Arch 'playground-${arch}' ignored." >&2
118 else
119 build_arch_types+=( "playground-${arch}" )
120 fi
121 done
122 fi
123
124 echo "${build_arch_types[*]}"
125 }
126
127 enum-all-arch-types()
128 {
129 local arch
130 local build_arch_types
131
132 for arch in src $(enum-build-arch-types) $(enum-playground-arch-types)
133 do
134 if [ ! -e ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/${arch}/mage.rc ]
135 then
136 echo "Warning: mage.rc of '${arch}' not found. Arch '${arch}' ignored." >&2
137 else
138 build_arch_types+=( "${arch}" )
139 fi
140 done
141
142 echo "${build_arch_types[*]}"
143 }