Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3126 - (hide 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 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 niro 3126 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 niro 2774 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 niro 2775
101     enum-build-arch-types()
102     {
103     echo "${BUILD_ARCH[*]}"
104     }
105    
106 niro 2817 enum-playground-arch-types()
107 niro 2775 {
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 niro 2817
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     }