Magellan Linux

Diff of /trunk/mage-buildserver/buildserver-compile-smage.sh

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

revision 2746 by niro, Sun Aug 10 19:35:40 2014 UTC revision 2747 by niro, Wed Aug 13 14:02:51 2014 UTC
# Line 2  Line 2 
2    
3  # get configuration  # get configuration
4  BUILDSERVER_CONFIG_DIR="/etc/mage-buildserver"  BUILDSERVER_CONFIG_DIR="/etc/mage-buildserver"
5    BUILDSERVER_CACHE_DIR="/var/cache/mage-buildserver"
6  source ${BUILDSERVER_CONFIG_DIR}/buildserver.conf  source ${BUILDSERVER_CONFIG_DIR}/buildserver.conf
7    
8  source ${BUILDSERVER_LIB_DIR}/buildserver-functions.sh  source ${BUILDSERVER_LIB_DIR}/buildserver-functions.sh
# Line 52  do Line 53  do
53   fi   fi
54  done  done
55    
   
56  # create src package tarball  # create src package tarball
57  runarch src smage2 --create-src-tarball /var/cache/mage/smage/${SMAGEFILE} || die "src creating src-tarball"  runarch src smage2 --create-src-tarball /var/cache/mage/smage/${SMAGEFILE} || die "src creating src-tarball"
58    
59  for arch in ${BUILD_ARCH[*]}  for arch in ${BUILD_ARCH[*]}
60  do  do
61   echo "SMAGEFILE=\"${SMAGEFILE}\"" > ${BUILDROOT}/${arch}/.runrc   echo "SMAGEFILE=\"${SMAGEFILE}\"" > ${BUILDROOT}/${arch}/.runrc
62   echo "BUILDSERVER_CONFIG_DIR=\"${BUILDSERVER_CONFIG_DIR}\"" >> ${BUILDROOT}/${arch}/.runrc   echo "BUILDSERVER_LIB_DIR=\"${BUILDSERVER_LIB_DIR}\"" >> ${BUILDROOT}/${arch}/.runrc
63  cat >> ${BUILDROOT}/${arch}/.runrc << "EOF"   cat >> ${BUILDROOT}/${arch}/.runrc << 'EOF'
 env-rebuild  
 source /etc/profile  
   
 if [ -f /etc/rc.d/init.d/functions ]  
 then  
  source /etc/rc.d/init.d/functions  
 else  
  die "/etc/rc.d/init.d/functions not found"  
 fi  
 if [ -f /etc/mage.rc.global ]  
 then  
  source /etc/mage.rc.global  
 else  
  die "/etc/mage.rc.global not found"  
 fi  
 if [ -f /etc/mage.rc ]  
 then  
  source /etc/mage.rc  
 else  
  die "/etc/mage.rc not found"  
 fi  
 if [ -f ${MLIBDIR}/mage4.functions.sh ]  
 then  
  source ${MLIBDIR}/mage4.functions.sh  
 else  
  die "${MLIBDIR}/mage4.functions.sh not found"  
 fi  
 if [ -f ${MLIBDIR}/smage2.functions.sh ]  
 then  
  source ${MLIBDIR}/smage2.functions.sh  
 else  
  die "${MLIBDIR}/smage2.functions.sh not found"  
 fi  
   
 # override die function  
 die()  
 {  
  echo "ERROR: $@"  
  return 1  
 }  
   
 is_split_target_magefile()  
 {  
  local mage="$1"  
   
  for target_mage in ${MY_SPLIT_TARGET_MAGEFILES}  
  do  
  if [[ ${mage} = ${target_mage} ]]  
  then  
  return 0  
  fi  
  done  
   
  return 1  
 }  
   
 load_mage_features  
 mage_setup  
   
 if [ -f /var/cache/mage/smage/${SMAGEFILE} ]  
 then  
  smagesource /var/cache/mage/smage/${SMAGEFILE}  
 else  
  die "smagefile '/var/cache/mage/smage/${SMAGEFILE}' not found."  
 fi  
   
 # save STATE, gets deleted by regen_mage_tree  
 BUILDSERVER_SAVED_STATE="${STATE}"  
   
 #regen_mage_tree # do this after dep install  
 TARGET_MAGEFILE="${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.${MAGESUFFIX}"  
 TARGET_SRC_TARBALL="/var/cache/mage/src-packages/${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}"  
   
 if [ ! -f ${TARGET_SRC_TARBALL} ]  
 then  
  die "${TARGET_SRC_TARBALL} is missing"  
 fi  
   
 if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD}  
 then  
  echo -en "Package "  
  echo -en "${COLRED}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}"  
  echo -e  " already installed. try a revup."  
  exit 3  
 fi  
   
 # get all dependencies of this package  
 echo  
 echo -n "Calculating dependencies ... "  
 INSTALL_DEPS="$(${MLIBDIR}/depwalker.sh \  
  --method install-build-prerequisites \  
  --smage /var/cache/mage/smage/${SMAGEFILE})"  
   
 # honor split packages  
 if [[ -n ${SPLIT_PACKAGES} ]]  
 then  
  split_save_variables  
  for subpackage in ${SPLIT_PACKAGES}  
  do  
  # get the right variables for the split  
  export PNAME="${subpackage}"  
  split_info_${PNAME}  
   
  if [[ -z ${SRC_INSTALL_DEPS} ]]  
  then  
  SRC_INSTALL_DEPS="${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.${MAGESUFFIX}"  
  else  
  SRC_INSTALL_DEPS+=" ${MAGEDIR}/${PCAT}/${PNAME}/${PNAME}-${PVER}-${PBUILD}.${MAGESUFFIX}"  
  fi  
  # restore smage environment  
  split_restore_variables  
  done  
  # unset all saved smage variables  
  split_unset_variables  
 else  
  SRC_INSTALL_DEPS="${TARGET_MAGEFILE}"  
 fi  
 echo "done"  
   
 echo  
 echo "---- environment -----"  
 echo "MROOT:    ${FAKE_MROOT}"  
 echo "PKGDIR:   ${PKGDIR}"  
 echo "BUILDDIR: ${BUILDDIR}"  
 echo "BINDIR:   ${BINDIR}"  
 echo "$(mprintfeatures)"  
 echo "----------------------"  
 echo  
 echo "---- dependencies ----"  
 echo "INSTALL_DEPS:"  
 for i in ${INSTALL_DEPS}  
 do  
  echo "   * ${i}"  
 done  
 echo "SRC_INSTALL_DEPS:"  
 for i in ${SRC_INSTALL_DEPS}  
 do  
  echo "   * ${i}"  
 done  
 echo "----------------------"  
   
 #echo "DEBUG: paused"; read  
   
 # override packages path  
 SAVED_PKGDIR="${PKGDIR}"  
 PKGDIR="/var/cache/mage/tmp-packages"  
 install -d "${PKGDIR}"  
   
 # now install the packages (no srcinstall, when the user not explcitly want this)  
 fetch_packages ${INSTALL_DEPS} || die "fetching packages"  
 md5sum_packages ${INSTALL_DEPS} || die "md5 sum packages"  
 unpack_packages ${INSTALL_DEPS} || die "unpacking packages"  
 install_packages ${INSTALL_DEPS} || die "installing packages"  
 cleanpkg  
 # restore packages path  
 PKGDIR="${SAVED_PKGDIR}"  
   
 ## always run auto etc-update  
 echo "running etc-update"  
 echo "-5" | etc-update  
   
 #### building target package from src-pkg tarball####  
 if smage2 --src-tarball ${TARGET_SRC_TARBALL}  
 then  
64   build_retval=0   build_retval=0
65   echo "Build successfull!"   ${BUILDSERVER_LIB_DIR}/buildserver-build-depends.sh ${SMAGEFILE}
66   regen_mage_tree   ${BUILDSERVER_LIB_DIR}/buildserver-build-install-prerequisites.sh ${SMAGEFILE}
67   if install_packages ${SRC_INSTALL_DEPS} || die "installing packages"   ${BUILDSERVER_LIB_DIR}/buildserver-build.sh ${SMAGEFILE} || build_retval=1
68   then   ${BUILDSERVER_LIB_DIR}/buildserver-build-uninstall-prerequisites.sh ${SMAGEFILE}
  install_retval=0  
  echo "Install successfull!"  
  else  
  install_retval=1  
  echo "Installation *not* successfull!"  
  fi  
 else  
  build_retval=1  
  echo "Build failed"  
 fi  
   
 ## always run auto etc-update  
 echo "running etc-update"  
 echo "-5" | etc-update  
   
 #reverse dep order  
 unset REV_INSTALL_DEPS  
 for dep in ${INSTALL_DEPS}  
 do  
  if [[ -z ${REV_INSTALL_DEPS} ]]  
  then  
  REV_INSTALL_DEPS="${dep}"  
  else  
  REV_INSTALL_DEPS="${dep} ${REV_INSTALL_DEPS}"  
  fi  
 done  
   
 # remove all previously installed packages  
 echo  
 echo "Cleaning buildroot - removing previously installed packages in reversed order:"  
 echo "---- dependencies ----"  
 echo "SRC_INSTALL_DEPS:"  
 for i in ${SRC_INSTALL_DEPS}  
 do  
  echo "   * ${i}"  
 done  
 echo "INSTALL_DEPS:"  
 for i in ${REV_INSTALL_DEPS}  
 do  
  echo "   * ${i}"  
 done  
 echo "----------------------"  
   
 for pkg in ${SRC_INSTALL_DEPS} ${REV_INSTALL_DEPS}  
 do  
  uninstall_list=""  
  pname="$(magename2pname ${pkg})"  
  pcat="$(magename2pcat ${pkg})"  
  pver="$(magename2pver ${pkg})"  
  pbuild="$(magename2pbuild ${pkg})"  
  if [ -f ${BUILDSERVER_CONFIG_DIR}/protected/${pname} ]  
  then  
  echo "'${pcat}/${pname}-${pver}-${pbuild}' is protected - ignoring"  
  else  
  if is_installed ${pcat}/${pname}-${pver}-${pbuild}  
  then  
  if [[ -z ${uninstall_list} ]]  
  then  
  uninstall_list="${pcat}/${pname}-${pver}-${pbuild}"  
  else  
  uninstall_list="${uninstall_list} ${pcat}/${pname}-${pver}-${pbuild}"  
  fi  
  else  
  echo "'${pcat}/${pname}-${pver}-${pbuild}' not installed - ignoring"  
  fi  
   
  if [[ -n ${uninstall_list} ]]  
  then  
  uninstall_packages "${uninstall_list}" || die "cleaning buildroot: ${pkg}"  
  else  
  echo "uninstall_list is empty for pkg '${pcat}/${pname}-${pver}-${pbuild}' - doing nothing"  
  fi  
  fi  
 done  
69    
70  exit ${build_retval}   exit ${build_retval}
71  EOF  EOF
72   runarch-script ${arch} .runrc  || die "${arch} package build failed"   runarch-script ${arch} .runrc  || die "${arch} package build failed"
73   if [ -f ${BUILDROOT}/${arch}/.runrc ]   if [ -f ${BUILDROOT}/${arch}/.runrc ]

Legend:
Removed from v.2746  
changed lines
  Added in v.2747