Magellan Linux

Diff of /branches/mage-next/src/smage2.functions.sh.in

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

trunk/mage/usr/lib/mage/smage2.functions.sh revision 1679 by niro, Mon Feb 6 10:04:33 2012 UTC branches/mage-next/src/smage2.functions.sh.in revision 2571 by niro, Wed Jan 29 12:24:12 2014 UTC
# Line 7  Line 7 
7  smagesource()  smagesource()
8  {  {
9   local file="$1"   local file="$1"
10   local mystate   local localstate
11     local distfilestate
12   local mytag   local mytag
13    
14   source ${file}   source ${file}
# Line 29  smagesource() Line 30  smagesource()
30   fi   fi
31   fi   fi
32    
33   [[ -n ${STATE} ]] && mystate="${STATE}"   [[ -n ${STATE} ]] && localstate="${STATE}"
34   [[ -n ${DISTROTAG} ]] && mytag="${DISTROTAG}"   [[ -n ${DISTROTAG} ]] && mytag="${DISTROTAG}"
35    
  # do not overide if local state was broken or disabled!  
  case ${STATE} in  
  broken) return ;;  
  disabled) return ;;  
  esac  
   
36   if [ -f ${SMAGESCRIPTSDIR}/distribution ]   if [ -f ${SMAGESCRIPTSDIR}/distribution ]
37   then   then
38   source ${SMAGESCRIPTSDIR}/distribution   source ${SMAGESCRIPTSDIR}/distribution
39   [[ -n ${STATE} ]] && mystate="${STATE}"   [[ -n ${STATE} ]] && distfilestate="${STATE}"
40   [[ -n ${DISTROTAG} ]] && mytag="${DISTROTAG}"   [[ -n ${DISTROTAG} ]] && mytag="${DISTROTAG}"
41   fi   fi
42   # now switch state and export it   # now switch state and export it but do not overide any local states
43   STATE="${mystate}"   if [[ ! -z ${localstate} ]]
44     then
45     STATE="${localstate}"
46     else
47     STATE="${distfilestate}"
48     fi
49    
50   if mqueryfeature "pkgdistrotag"   if mqueryfeature "pkgdistrotag"
51   then   then
# Line 59  smagesource() Line 59  smagesource()
59   echo -e "${COLRED}Requested 'pkgdistrotag' but no \$DISTROTAG found!${COLDEFAULT}"   echo -e "${COLRED}Requested 'pkgdistrotag' but no \$DISTROTAG found!${COLDEFAULT}"
60   echo -e "${COLRED}Disabled the feature for pkgbuild sanity!${COLDEFAULT}"   echo -e "${COLRED}Disabled the feature for pkgbuild sanity!${COLDEFAULT}"
61   else   else
62   # now switch state and export it   # now switch state and export it but do not overide any local states
63   export DISTROTAG="${mytag}"   export DISTROTAG="${mytag}"
64   fi   fi
65   else   else
# Line 281  mconfigure() Line 281  mconfigure()
281   fi   fi
282   fi   fi
283    
284   # always enable shared by default   # always enable shared by default but not for waf configure
285   if [[ ! -z $(./configure --help | grep -- '--.*able-shared') ]]   if [[ ! -z $(./configure --help | grep -- '--.*able-shared') ]] &&
286     [[ -z $(./configure --version | grep waf) ]]
287   then   then
288   myopts+=" --enable-shared"   myopts+=" --enable-shared"
289   fi   fi
# Line 317  minstall() Line 318  minstall()
318   sysconfdir=${BINDIR}/etc \   sysconfdir=${BINDIR}/etc \
319   libdir=${BINDIR}/usr/$(mlibdir) \   libdir=${BINDIR}/usr/$(mlibdir) \
320   "$@" install || die "minstall failed"   "$@" install || die "minstall failed"
321          else   else
322                  die "no Makefile found"   die "no Makefile found"
323          fi   fi
324  }  }
325    
326  mmake()  mmake()
# Line 342  munpack() Line 343  munpack()
343   DEST=$2   DEST=$2
344   fi   fi
345    
346     echo -e "${COLBLUE}>>>${COLGREEN} Unpacking ${SOURCEDIR}/${PNAME}/${SRCFILE}${COLDEFAULT}"
347    
348   [[ ! -d ${DEST} ]] && install -d ${DEST}   [[ ! -d ${DEST} ]] && install -d ${DEST}
349    
350   case "${SRCFILE##*.}" in   case "${SRCFILE##*.}" in
# Line 391  munpack() Line 394  munpack()
394   tar --no-same-owner -xvJf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".txz unpack failed."   tar --no-same-owner -xvJf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".txz unpack failed."
395   ;;   ;;
396   rar)   rar)
397   unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST}  || die ".rar unpack failed."   unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST} || die ".rar unpack failed."
398   ;;   ;;
399   zip|xpi|jar)   zip|xpi|jar)
400   unzip ${SOURCEDIR}/${PNAME}/${SRCFILE} -d ${DEST} || die ".zip unpack failed."   unzip ${SOURCEDIR}/${PNAME}/${SRCFILE} -d ${DEST} || die ".zip unpack failed."
# Line 563  sminclude() Line 566  sminclude()
566   then   then
567   for i in $@   for i in $@
568   do   do
569   echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"   [[ ${SILENT} = 1 ]] || echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
570   source ${SMAGESCRIPTSDIR}/include/${i}.sminc   source ${SMAGESCRIPTSDIR}/include/${i}.sminc
571   done   done
572   echo   [[ ${SILENT} = 1 ]] || echo
573     fi
574    }
575    
576    march()
577    {
578     local retval
579    
580     if [[ ! -z ${ARCH} ]]
581     then
582     echo "${ARCH}"
583     retval=0
584     else
585     retval=1
586   fi   fi
587    
588     return "${retval}"
589    }
590    
591    marchsrcfile()
592    {
593     local retval
594     local var="$1"
595    
596     [[ -z ${var} ]] && var="SRCFILE"
597    
598     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
599     then
600     eval echo \$${var}_${ARCH/i*86/x86} | tr ';' '\n'
601     retval=0
602     else
603     retval=1
604     fi
605    
606     return "${retval}"
607    }
608    
609    marchsrcdir()
610    {
611     local retval
612     local var="$1"
613    
614     [[ -z ${var} ]] && var="SRCDIR"
615    
616     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
617     then
618     eval echo \$${var}_${ARCH/i*86/x86} | tr ';' '\n'
619     retval=0
620     else
621     retval=1
622     fi
623    
624     return "${retval}"
625    }
626    
627    marchdepend()
628    {
629     local retval
630     local var="$1"
631    
632     [[ -z ${var} ]] && var="DEPEND"
633    
634     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
635     then
636     echo "\$(eval echo \\\$${var}_\${ARCH/i*86/x86} | tr ';' '\n')"
637     retval=0
638     else
639     retval=1
640     fi
641    
642     return "${retval}"
643    }
644    
645    marchsdepend()
646    {
647     local retval
648     local var="$1"
649    
650     [[ -z ${var} ]] && var="SDEPEND"
651    
652     if [[ ! -z $(eval echo \$${var}_${ARCH/i*86/x86}) ]]
653     then
654     echo "\$(eval echo \\\$${var}_\${ARCH/i*86/x86} | tr ';' '\n')"
655     retval=0
656     else
657     retval=1
658     fi
659    
660     return "${retval}"
661  }  }
662    
663  setup_distcc_environment()  setup_distcc_environment()
# Line 585  setup_distcc_environment() Line 675  setup_distcc_environment()
675   fi   fi
676  }  }
677    
678  setup_ccache_environment()  setup_icecc_environment()
679  {  {
680   if [ -x /usr/bin/ccache ]   if [ -x /usr/bin/icecc ]
681   then   then
682   echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"   echo -e "${COLBLUE}---${COLGREEN} Using IceCC for compilation ...${COLDEFAULT}"
683   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"
684   fi   fi
685  }  }
686    
687  # fixes given dependencies to match a MAGE_TARGET  setup_ccache_environment()
688  # fix_mage_deps -target s/depend # <-- note -target !  {
689  fix_mage_deps()   if [ -x /usr/bin/ccache ]
 {  
  local target="$1"  
  local depend="$2"  
  local NDEPEND  
  local sym dep cat pver pname  
   
  # 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}" ]  
690   then   then
691   # 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  
   
  # do not add empty lines  
  if [ -z "${NDEPEND}" ]  
  then  
  NDEPEND="${sym} ${cat}/${pname}"  
  else  
  NDEPEND="${NDEPEND}  
  ${sym} ${cat}/${pname}"  
  fi  
692    
693   unset cat pname pver   echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"
694   done << EOF   export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
 ${depend}  
 EOF  
  # set NDEPEND to DEPEND  
  depend="${NDEPEND}"  
695   fi   fi
   
  echo "${depend}"  
696  }  }
697    
698  # build_mage_script(): helper functions for regen_mage_tree()  # build_mage_script(): helper functions for regen_mage_tree()
# Line 683  build_mage_script() Line 728  build_mage_script()
728  {  {
729   local magefile   local magefile
730   local dest   local dest
  local target  
731   local split_pkg_base   local split_pkg_base
732   local sym   local sym
733   local depname   local depname
# Line 691  build_mage_script() Line 735  build_mage_script()
735   # if MAGE_TREE_DEST not set use BUILDDIR   # if MAGE_TREE_DEST not set use BUILDDIR
736   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
737    
  # determinate which suffix this mage file should get, if any  
  [[ $1 = --target ]] && shift && target="-$1"  
   
738   # mark package as splitpackage   # mark package as splitpackage
739   [[ $1 = --split-pkg-base ]] && shift && split_pkg_base="$1"   [[ $1 = --split-pkg-base ]] && shift && split_pkg_base="$1"
740    
741   # name of magefile   # name of magefile
742   magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"   magefile="${PNAME}-${PVER}-${PBUILD}.mage"
743    
744   # destination to magefile   # destination to magefile
745   dest="${MAGE_TREE_DEST}/${PCAT}/${PNAME}${target}/${magefile}"   dest="${MAGE_TREE_DEST}/${PCAT}/${PNAME}/${magefile}"
746    
747   # show what we are doing   # show what we are doing
748   echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"   echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"
# Line 712  build_mage_script() Line 753  build_mage_script()
753   > ${dest}   > ${dest}
754    
755   # pgkname and state   # pgkname and state
756   echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}$(print_distrotag)-${PBUILD}\"" >> ${dest}   echo "PKGNAME=\"${PNAME}-${PVER}-\${ARCH}$(print_distrotag)-${PBUILD}\"" >> ${dest}
757   echo "STATE=\"${STATE}\"" >> ${dest}   echo "STATE=\"${STATE}\"" >> ${dest}
758    
759   # description and homepage   # description and homepage
# Line 725  build_mage_script() Line 766  build_mage_script()
766   # special tags and vars   # special tags and vars
767   echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}   echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}
768    
  # echo MAGE_TARGETS ## note -target is needed !  
  echo "MAGE_TARGETS=\"${target}\"" >> ${dest}  
   
769   # split package base   # split package base
770   echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest}   echo "SPLIT_PACKAGE_BASE=\"${split_pkg_base}\"" >> ${dest}
771    
# Line 756  build_mage_script() Line 794  build_mage_script()
794   fi   fi
795    
796   # deps and provides   # deps and provides
797   echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}   echo "DEPEND=\"${DEPEND}\"" >> ${dest}
798   echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}   echo "SDEPEND=\"${SDEPEND}\"" >> ${dest}
799   echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}   echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
800    
801   # add special functions   # add special functions
# Line 768  build_mage_script() Line 806  build_mage_script()
806   do   do
807   # add to mage (quotes needed !)   # add to mage (quotes needed !)
808   typeset -f "${i}" >> ${dest}   typeset -f "${i}" >> ${dest}
  # unset to be safe (quotes needed !)  
  #unset "${i}" <-- later to get every target built  
809   done   done
810   fi   fi
811    
# Line 787  regen_mage_tree() Line 823  regen_mage_tree()
823   # build them only if requested   # build them only if requested
824   if mqueryfeature regentree   if mqueryfeature regentree
825   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  
   
826   # run it for splitpackages   # run it for splitpackages
827   elif [[ -n ${SPLIT_PACKAGES} ]]   if [[ -n ${SPLIT_PACKAGES} ]]
828   then   then
829   local split_pkg_base="${PNAME}"   local split_pkg_base="${PNAME}"
830   # save smage environment   # save smage environment
# Line 840  regen_mage_tree() Line 864  regen_mage_tree()
864    
865   # now unset all uneeded vars to be safe   # now unset all uneeded vars to be safe
866   # 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  
867   unset SPECIAL_FUNCTIONS   unset SPECIAL_FUNCTIONS
 # for i in ${SPECIAL_VARS}  
 # do  
 # unset "${i}"  
 # done  
868   unset SPECIAL_VARS   unset SPECIAL_VARS
869   unset STATE   unset STATE
870   unset DESCRIPTION   unset DESCRIPTION
# Line 874  split_save_variables() Line 889  split_save_variables()
889   export SAVED_DESCRIPTION="${DESCRIPTION}"   export SAVED_DESCRIPTION="${DESCRIPTION}"
890   export SAVED_HOMEPAGE="${HOMEPAGE}"   export SAVED_HOMEPAGE="${HOMEPAGE}"
891   export SAVED_SPECIAL_VARS="${SPECIAL_VARS}"   export SAVED_SPECIAL_VARS="${SPECIAL_VARS}"
892     export SAVED_SPECIAL_FUNCTIONS="${SPECIAL_FUNCTIONS}"
893   export SAVED_STATE="${STATE}"   export SAVED_STATE="${STATE}"
  export SAVED_PKGTYPE="${PKGTYPE}"  
894   export SAVED_INHERITS="${INHERITS}"   export SAVED_INHERITS="${INHERITS}"
895   export SAVED_DEPEND="${DEPEND}"   export SAVED_DEPEND="${DEPEND}"
896   export SAVED_SDEPEND="${SDEPEND}"   export SAVED_SDEPEND="${SDEPEND}"
# Line 949  split_restore_variables() Line 964  split_restore_variables()
964   export DESCRIPTION="${SAVED_DESCRIPTION}"   export DESCRIPTION="${SAVED_DESCRIPTION}"
965   export HOMEPAGE="${SAVED_HOMEPAGE}"   export HOMEPAGE="${SAVED_HOMEPAGE}"
966   export SPECIAL_VARS="${SAVED_SPECIAL_VARS}"   export SPECIAL_VARS="${SAVED_SPECIAL_VARS}"
967     export SPECIAL_FUNCTIONS="${SAVED_SPECIAL_FUNCTIONS}"
968   export STATE="${SAVED_STATE}"   export STATE="${SAVED_STATE}"
  export PKGTYPE="${SAVED_PKGTYPE}"  
969   export INHERITS="${SAVED_INHERITS}"   export INHERITS="${SAVED_INHERITS}"
970   export DEPEND="${SAVED_DEPEND}"   export DEPEND="${SAVED_DEPEND}"
971   export SDEPEND="${SAVED_SDEPEND}"   export SDEPEND="${SAVED_SDEPEND}"
# Line 1018  split_unset_variables() Line 1033  split_unset_variables()
1033   unset SAVED_DESCRIPTION   unset SAVED_DESCRIPTION
1034   unset SAVED_HOMEPAGE   unset SAVED_HOMEPAGE
1035   unset SAVED_SPECIAL_VARS   unset SAVED_SPECIAL_VARS
1036     unset SAVED_SPECIAL_FUNCTIONS
1037   unset SAVED_STATE   unset SAVED_STATE
1038   unset SAVED_PKGTYPE   unset SAVED_PKGTYPE
1039   unset SAVED_INHERITS   unset SAVED_INHERITS
# Line 1098  generate_package_md5sum() Line 1114  generate_package_md5sum()
1114   local pver   local pver
1115   local pbuild   local pbuild
1116   local parch   local parch
  local target  
1117   local pkgname   local pkgname
1118    
1119   # very basic getops   # very basic getops
# Line 1110  generate_package_md5sum() Line 1125  generate_package_md5sum()
1125   --pver|-v) shift; pver="$1" ;;   --pver|-v) shift; pver="$1" ;;
1126   --pbuild|-b) shift; pbuild="$1" ;;   --pbuild|-b) shift; pbuild="$1" ;;
1127   --parch|a) shift; parch="$1" ;;   --parch|a) shift; parch="$1" ;;
  --target|t) shift; target="$1" ;;  
1128   esac   esac
1129   shift   shift
1130   done   done
# Line 1126  generate_package_md5sum() Line 1140  generate_package_md5sum()
1140   [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."   [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
1141   [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."   [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
1142    
  # fix target as it may be empty !  
  [ -n "${target}" ] && target="-${target}"  
   
1143   # build pkgname   # build pkgname
1144   pkgname="${pname}${target}-${pver}-${parch}$(print_distrotag)-${pbuild}"   pkgname="${pname}-${pver}-${parch}$(print_distrotag)-${pbuild}"
1145    
1146   # build pkg-md5-sum only if requested   # build pkg-md5-sum only if requested
1147   if mqueryfeature regentree   if mqueryfeature regentree
# Line 1148  generate_package_md5sum() Line 1159  generate_package_md5sum()
1159   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}   : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
1160    
1161   # setup md5 dir   # setup md5 dir
1162   dest="${MAGE_TREE_DEST}/${pcat}/${pname}${target}/md5"   dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
1163   install -d ${dest}   install -d ${dest}
1164    
1165   # gen md5sum   # gen md5sum
# Line 1215  run_resume() Line 1226  run_resume()
1226   return 1   return 1
1227   fi   fi
1228  }  }
1229    
1230    mqalint()
1231    {
1232     return 0
1233    }

Legend:
Removed from v.1679  
changed lines
  Added in v.2571