Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2588 by niro, Thu Feb 6 13:07:22 2014 UTC revision 3126 by niro, Tue May 12 14:44:22 2020 UTC
# Line 4  die() Line 4  die()
4   exit 1   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()  runarch-script()
21  {  {
22   local arch="$1"   local arch="$1"
23   local script="$2"   local script="$2"
24   local buildroot   local buildroot
25     local os_arch
26    
27   # only allow the right arches   # only allow the right arches
28   case ${arch} in   case ${arch} in
29   i*86|x86_64) buildroot="${BUILDROOT}/${arch}" ;;   i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; os_arch="$(os-arch ${arch})" ;;
  src) arch="$(source ${BUILDSERVER_CONFIG_DIR}/profiles/${BUILDROOT_PROFILE}/src/mage.rc; echo ${ARCH})"; buildroot="${BUILDROOT}/src" ;;  
30   *) die "unknown architecture '${arch}'" ;;   *) die "unknown architecture '${arch}'" ;;
31   esac   esac
32    
33   [ -f ${buildroot}/${script} ] || die "'${buildroot}/${script}' does not exist."   [ -f ${buildroot}/${script} ] || die "'${buildroot}/${script}' does not exist."
34    
35   setarch "${arch}" systemd-nspawn \   setarch "${os_arch}" systemd-nspawn \
36   --directory="${buildroot}" \   --directory="${buildroot}" \
37   --bind=${BUILDROOT}/tmp/mage-tree:/usr/mage \   --bind=${BUILDROOT}/mage-tree/${arch}:/usr/mage \
38   --bind=${BUILDROOT}/svn/mage/include:/usr/mage/include \   --bind=${BUILDROOT}/svn/mage/include:/usr/mage/include \
39   --bind=${BUILDROOT}/svn/mage/profiles:/usr/mage/profiles \   --bind=${BUILDROOT}/svn/mage/profiles:/usr/mage/profiles \
40   --bind=${BUILDROOT}/svn/smage:/var/cache/mage/smage \   --bind=${BUILDROOT}/svn/smage:/var/cache/mage/smage \
41   --bind=${BUILDROOT}/packages/${arch}:/var/cache/mage/packages \   --bind=${BUILDROOT}/packages/${arch}:/var/cache/mage/packages \
42   --bind=${BUILDROOT}/packages/src:/var/cache/mage/src-packages \   --bind=${BUILDROOT}/packages/src:/var/cache/mage/src-packages \
43   --bind=${BUILDROOT}/meta/${arch}:/var/cache/mage/meta \   --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}" \   bash --login "${script}" \
49   || die "runarch-script '${script}' for '${arch}' failed."   || die "runarch-script '${script}' for '${arch}' failed."
50    
51     # wait for container to exit
52     sleep 1
53  }  }
54    
55  runarch()  runarch()
# Line 42  runarch() Line 62  runarch()
62    
63   # only allow the right arches   # only allow the right arches
64   case ${arch} in   case ${arch} in
65   i*86|x86_64|src) buildroot="${BUILDROOT}/${arch}"; runrc="${buildroot}/.runrc" ;;   i*86|x86_64|src|playground*) buildroot="${BUILDROOT}/${arch}"; runrc="${buildroot}/.runrc" ;;
66   *) die "unknown architecture '${arch}'" ;;   *) die "unknown architecture '${arch}'" ;;
67   esac   esac
68    
69   # create runrc   # create runrc
70   echo "${cmd}" > "${runrc}"   echo "${cmd}" > "${runrc}"
71   runarch-script "${arch}" .runrc || die "runarch script execition of '${runrc}' failed."   runarch-script "${arch}" .runrc || die "runarch script execution of '${runrc}' failed."
72    
73   if [ -f "${runrc}" ]   if [ -f "${runrc}" ]
74   then   then
75   rm "${runrc}"   rm "${runrc}"
76   fi   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    }

Legend:
Removed from v.2588  
changed lines
  Added in v.3126