Magellan Linux

Diff of /trunk/mage/usr/lib/mage/smage2.functions.sh

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

revision 2140 by niro, Mon Jul 15 07:50:48 2013 UTC revision 2842 by niro, Fri Oct 31 14:50:27 2014 UTC
# Line 225  download_sources() Line 225  download_sources()
225  }  }
226    
227  # dummy function, used if that does not exist in smage file  # dummy function, used if that does not exist in smage file
228    pkg_setup()
229    {
230     echo "no pkg_setup defined; doing nothing ..."
231     return 0
232    }
233    
234    # dummy function, used if that does not exist in smage file
235  src_prepare()  src_prepare()
236  {  {
237   echo "no src_prepare defined; doing nothing ..."   echo "no src_prepare defined; doing nothing ..."
# Line 318  minstall() Line 325  minstall()
325   sysconfdir=${BINDIR}/etc \   sysconfdir=${BINDIR}/etc \
326   libdir=${BINDIR}/usr/$(mlibdir) \   libdir=${BINDIR}/usr/$(mlibdir) \
327   "$@" install || die "minstall failed"   "$@" install || die "minstall failed"
328          else   else
329                  die "no Makefile found"   die "no Makefile found"
330          fi   fi
331  }  }
332    
333  mmake()  mmake()
# Line 566  sminclude() Line 573  sminclude()
573   then   then
574   for i in $@   for i in $@
575   do   do
576   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"   [[ ${SILENT} = 1 ]] || echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
577   source ${SMAGESCRIPTSDIR}/include/${i}.sminc   source ${SMAGESCRIPTSDIR}/include/${i}.sminc
578   done   done
579   echo   [[ ${SILENT} = 1 ]] || echo
580   fi   fi
581  }  }
582    
# Line 609  marchsrcfile() Line 616  marchsrcfile()
616  marchsrcdir()  marchsrcdir()
617  {  {
618   local retval   local retval
619   if [[ ! -z $(eval echo \$SRCDIR_${ARCH/i*86/x86}) ]]   local var="$1"
620    
621     [[ -z ${var} ]] && var="SRCDIR"
622    
623     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
624   then   then
625   eval echo \$SRCDIR_${ARCH/i*86/x86} | tr ';' '\n'   eval echo \$${var}_${ARCH/i*86/x86} | tr ';' '\n'
626   retval=0   retval=0
627   else   else
628   retval=1   retval=1
# Line 623  marchsrcdir() Line 634  marchsrcdir()
634  marchdepend()  marchdepend()
635  {  {
636   local retval   local retval
637     local var="$1"
638    
639   if [[ ! -z $(eval echo \$DEPEND_${ARCH/i*86/x86}) ]]   [[ -z ${var} ]] && var="DEPEND"
640    
641     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
642   then   then
643   echo "\$(eval echo \\\$DEPEND_\${ARCH/i*86/x86} | tr ';' '\n')"   # evaluate with escape strings for the magefile if called by smage
644     # but do not escape if the smagefile was called by depwalker directly
645     if [[ ${SMAGE_DEPEND} = 1 ]]
646     then
647     eval echo \$${var}_${ARCH/i*86/x86} | tr ';' '\n'
648     else
649     echo "\$(eval echo \\\$${var}_\${ARCH/i*86/x86} | tr ';' '\n')"
650     fi
651   retval=0   retval=0
652   else   else
653   retval=1   retval=1
# Line 638  marchdepend() Line 659  marchdepend()
659  marchsdepend()  marchsdepend()
660  {  {
661   local retval   local retval
662   if [[ ! -z $(eval echo \$SDEPEND_${ARCH/i*86/x86}) ]]   local var="$1"
663    
664     [[ -z ${var} ]] && var="SDEPEND"
665    
666     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
667   then   then
668   echo "\$(eval echo \\\$SDEPEND_\${ARCH/i*86/x86} | tr ';' '\n')"   # evaluate with escape strings for the magefile if called by smage
669     # but do not escape if the smagefile was called by depwalker directly
670     if [[ ${SMAGE_DEPEND} = 1 ]]
671     then
672     eval echo \$${var}_${ARCH/i*86/x86} | tr ';' '\n'
673     else
674     echo "\$(eval echo \\\$${var}_\${ARCH/i*86/x86} | tr ';' '\n')"
675     fi
676   retval=0   retval=0
677   else   else
678   retval=1   retval=1
# Line 664  setup_distcc_environment() Line 696  setup_distcc_environment()
696   fi   fi
697  }  }
698    
699  setup_ccache_environment()  setup_icecc_environment()
700  {  {
701   if [ -x /usr/bin/ccache ]   if [ -x /usr/bin/icecc ]
702   then   then
703   echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"   echo -e "${COLBLUE}---${COLGREEN} Using IceCC for compilation ...${COLDEFAULT}"
704   export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"   export PATH=/usr/$(mlibdir)/icecc/bin:${PATH} || die "icecc: could not export new $PATH"
705   fi   fi
706  }  }
707    
708  # fixes given dependencies to match a MAGE_TARGET  setup_ccache_environment()
 # fix_mage_deps -target s/depend # <-- note -target !  
 fix_mage_deps()  
709  {  {
710   local target="$1"   if [ -x /usr/bin/ccache ]
  local depend="$2"  
  local NDEPEND  
  local sym dep cat pver pname  
   
  # first of all remove all tabs and duplicate lines  
  if [ -n "${depend}" ]  
  then  
  depend=$(echo "${depend}" | sed 's:\t::g' | sort -u)  
  fi  
   
  # deps and provides are special  
  # they must be fixed to match the target  
   
  # run this only if target and depend is not empty  
  if [ -n "${target}" ] && [ -n "${depend}" ]  
711   then   then
712   # fix DEPEND   mqueryfeature "icecc" && export CCACHE_PREFIX=icecc
  while read sym dep  
  do  
  # ignore empty lines  
  [[ -z ${dep} ]] && continue  
   
  cat="$(dirname ${dep})"  
  # change if not virtual  
  if [[ ${cat} = virtual ]]  
  then  
  pname="$(basename ${dep})"  
  else  
  # fix pver to target-pver  
  # to get pname-target-pver  
   
  # doing it backwards !  
  pver="${dep##*-}"  
  # full pver  
  pname="$(basename ${dep/-${pver}/})${target}-${pver}"  
  fi  
713    
714   # do not add empty lines   echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"
715   if [ -z "${NDEPEND}" ]   export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
  then  
  NDEPEND="${sym} ${cat}/${pname}"  
  else  
  NDEPEND="${NDEPEND}  
  ${sym} ${cat}/${pname}"  
  fi  
   
  unset cat pname pver  
  done << EOF  
 ${depend}  
 EOF  
  # set NDEPEND to DEPEND  
  depend="${NDEPEND}"  
716   fi   fi
   
  echo "${depend}"  
717  }  }
718    
719  # build_mage_script(): helper functions for regen_mage_tree()  # build_mage_script(): helper functions for regen_mage_tree()
# Line 768  build_mage_script() Line 749  build_mage_script()
749  {  {
750   local magefile   local magefile
751   local dest   local dest
  local target  
752   local split_pkg_base   local split_pkg_base
753   local sym   local sym
754   local depname   local depname
# Line 776  build_mage_script() Line 756  build_mage_script()
756   # if MAGE_TREE_DEST not set use BUILDDIR   # if MAGE_TREE_DEST not set use BUILDDIR
757   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
758    
  # determinate which suffix this mage file should get, if any  
  [[ $1 = --target ]] && shift && target="-$1"  
   
759   # mark package as splitpackage   # mark package as splitpackage
760   [[ $1 = --split-pkg-base ]] && shift && split_pkg_base="$1"   [[ $1 = --split-pkg-base ]] && shift && split_pkg_base="$1"
761    
762   # name of magefile   # name of magefile
763   magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"   magefile="${PNAME}-${PVER}-${PBUILD}.mage"
764    
765   # destination to magefile   # destination to magefile
766   dest="${MAGE_TREE_DEST}/${PCAT}/${PNAME}${target}/${magefile}"   dest="${MAGE_TREE_DEST}/${PCAT}/${PNAME}/${magefile}"
767    
768   # show what we are doing   # show what we are doing
769   echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"   echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"
# Line 797  build_mage_script() Line 774  build_mage_script()
774   > ${dest}   > ${dest}
775    
776   # pgkname and state   # pgkname and state
777   echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}$(print_distrotag)-${PBUILD}\"" >> ${dest}   echo "PKGNAME=\"${PNAME}-${PVER}-\${ARCH}$(print_distrotag)-${PBUILD}\"" >> ${dest}
778   echo "STATE=\"${STATE}\"" >> ${dest}   echo "STATE=\"${STATE}\"" >> ${dest}
779    
780   # description and homepage   # description and homepage
# Line 810  build_mage_script() Line 787  build_mage_script()
787   # special tags and vars   # special tags and vars
788   echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}   echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}
789    
  # echo MAGE_TARGETS ## note -target is needed !  
  echo "MAGE_TARGETS=\"${target}\"" >> ${dest}  
   
790   # split package base   # split package base
791   echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest}   echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest}
792    
# Line 841  build_mage_script() Line 815  build_mage_script()
815   fi   fi
816    
817   # deps and provides   # deps and provides
818   echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}   echo "DEPEND=\"${DEPEND}\"" >> ${dest}
819   echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}   echo "SDEPEND=\"${SDEPEND}\"" >> ${dest}
820   echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}   echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
821    
822   # add special functions   # add special functions
# Line 853  build_mage_script() Line 827  build_mage_script()
827   do   do
828   # add to mage (quotes needed !)   # add to mage (quotes needed !)
829   typeset -f "${i}" >> ${dest}   typeset -f "${i}" >> ${dest}
  # unset to be safe (quotes needed !)  
  #unset "${i}" <-- later to get every target built  
830   done   done
831   fi   fi
832    
# Line 872  regen_mage_tree() Line 844  regen_mage_tree()
844   # build them only if requested   # build them only if requested
845   if mqueryfeature regentree   if mqueryfeature regentree
846   then   then
  # run it without targets  
  if [[ -n ${MAGE_TARGETS} ]]  
  then  
  # build for each target a mage file  
  # run it with several targets  
  echo  
  for subpackage in ${MAGE_TARGETS}  
  do  
  build_mage_script --target "${subpackage}"  
  done  
  echo  
   
847   # run it for splitpackages   # run it for splitpackages
848   elif [[ -n ${SPLIT_PACKAGES} ]]   if [[ -n ${SPLIT_PACKAGES} ]]
849   then   then
850   local split_pkg_base="${PNAME}"   local split_pkg_base="${PNAME}"
851   # save smage environment   # save smage environment
# Line 925  regen_mage_tree() Line 885  regen_mage_tree()
885    
886   # now unset all uneeded vars to be safe   # now unset all uneeded vars to be safe
887   # unset PKGNAME <-- don't do that; smage needs this var   # unset PKGNAME <-- don't do that; smage needs this var
  # unset to be safe (quotes needed !)  
 # for i in ${SPECIAL_FUNCTIONS}  
 # do  
 # unset "${i}"  
 # done  
888   unset SPECIAL_FUNCTIONS   unset SPECIAL_FUNCTIONS
 # for i in ${SPECIAL_VARS}  
 # do  
 # unset "${i}"  
 # done  
889   unset SPECIAL_VARS   unset SPECIAL_VARS
890   unset STATE   unset STATE
891   unset DESCRIPTION   unset DESCRIPTION
# Line 959  split_save_variables() Line 910  split_save_variables()
910   export SAVED_DESCRIPTION="${DESCRIPTION}"   export SAVED_DESCRIPTION="${DESCRIPTION}"
911   export SAVED_HOMEPAGE="${HOMEPAGE}"   export SAVED_HOMEPAGE="${HOMEPAGE}"
912   export SAVED_SPECIAL_VARS="${SPECIAL_VARS}"   export SAVED_SPECIAL_VARS="${SPECIAL_VARS}"
913     export SAVED_SPECIAL_FUNCTIONS="${SPECIAL_FUNCTIONS}"
914   export SAVED_STATE="${STATE}"   export SAVED_STATE="${STATE}"
915   export SAVED_INHERITS="${INHERITS}"   export SAVED_INHERITS="${INHERITS}"
916   export SAVED_DEPEND="${DEPEND}"   export SAVED_DEPEND="${DEPEND}"
# Line 1033  split_restore_variables() Line 985  split_restore_variables()
985   export DESCRIPTION="${SAVED_DESCRIPTION}"   export DESCRIPTION="${SAVED_DESCRIPTION}"
986   export HOMEPAGE="${SAVED_HOMEPAGE}"   export HOMEPAGE="${SAVED_HOMEPAGE}"
987   export SPECIAL_VARS="${SAVED_SPECIAL_VARS}"   export SPECIAL_VARS="${SAVED_SPECIAL_VARS}"
988     export SPECIAL_FUNCTIONS="${SAVED_SPECIAL_FUNCTIONS}"
989   export STATE="${SAVED_STATE}"   export STATE="${SAVED_STATE}"
990   export INHERITS="${SAVED_INHERITS}"   export INHERITS="${SAVED_INHERITS}"
991   export DEPEND="${SAVED_DEPEND}"   export DEPEND="${SAVED_DEPEND}"
# Line 1101  split_unset_variables() Line 1054  split_unset_variables()
1054   unset SAVED_DESCRIPTION   unset SAVED_DESCRIPTION
1055   unset SAVED_HOMEPAGE   unset SAVED_HOMEPAGE
1056   unset SAVED_SPECIAL_VARS   unset SAVED_SPECIAL_VARS
1057     unset SAVED_SPECIAL_FUNCTIONS
1058   unset SAVED_STATE   unset SAVED_STATE
1059   unset SAVED_PKGTYPE   unset SAVED_PKGTYPE
1060   unset SAVED_INHERITS   unset SAVED_INHERITS
# Line 1181  generate_package_md5sum() Line 1135  generate_package_md5sum()
1135   local pver   local pver
1136   local pbuild   local pbuild
1137   local parch   local parch
  local target  
1138   local pkgname   local pkgname
1139    
1140   # very basic getops   # very basic getops
# Line 1193  generate_package_md5sum() Line 1146  generate_package_md5sum()
1146   --pver|-v) shift; pver="$1" ;;   --pver|-v) shift; pver="$1" ;;
1147   --pbuild|-b) shift; pbuild="$1" ;;   --pbuild|-b) shift; pbuild="$1" ;;
1148   --parch|a) shift; parch="$1" ;;   --parch|a) shift; parch="$1" ;;
  --target|t) shift; target="$1" ;;  
1149   esac   esac
1150   shift   shift
1151   done   done
# Line 1209  generate_package_md5sum() Line 1161  generate_package_md5sum()
1161   [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."   [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
1162   [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."   [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
1163    
  # fix target as it may be empty !  
  [ -n "${target}" ] && target="-${target}"  
   
1164   # build pkgname   # build pkgname
1165   pkgname="${pname}${target}-${pver}-${parch}$(print_distrotag)-${pbuild}"   pkgname="${pname}-${pver}-${parch}$(print_distrotag)-${pbuild}"
1166    
1167   # build pkg-md5-sum only if requested   # build pkg-md5-sum only if requested
1168   if mqueryfeature regentree   if mqueryfeature regentree
# Line 1231  generate_package_md5sum() Line 1180  generate_package_md5sum()
1180   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
1181    
1182   # setup md5 dir   # setup md5 dir
1183   dest="${MAGE_TREE_DEST}/${pcat}/${pname}${target}/md5"   dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
1184   install -d ${dest}   install -d ${dest}
1185    
1186   # gen md5sum   # gen md5sum
# Line 1251  source_pkg_build() Line 1200  source_pkg_build()
1200    
1201   if [[ ! -d ${SOURCEDIR}/${PNAME} ]]   if [[ ! -d ${SOURCEDIR}/${PNAME} ]]
1202   then   then
1203   echo "No SRC_URI defined; src-pkg-tarball not necessary ..."   install -d ${SOURCEDIR}/${PNAME}
  return 0  
1204   fi   fi
1205    
1206   [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly."   [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly."
# Line 1298  run_resume() Line 1246  run_resume()
1246   return 1   return 1
1247   fi   fi
1248  }  }
1249    
1250    mqalint()
1251    {
1252     return 0
1253    }

Legend:
Removed from v.2140  
changed lines
  Added in v.2842