Magellan Linux

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

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

revision 196 by niro, Sat Aug 20 15:55:19 2005 UTC revision 386 by niro, Mon Jul 17 20:52:38 2006 UTC
# Line 4  Line 4 
4  # needs pkgbuild_dir (mage)  # needs pkgbuild_dir (mage)
5    
6  # SMAGE2  # SMAGE2
7  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.27 2005-08-20 15:55:19 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.44 2006-07-17 20:52:38 niro Exp $
8    
9  #01.10.2004  #01.10.2004
10  # added ccache support  # added ccache support
# Line 14  Line 14 
14  PKGSUFFIX="mpk"  PKGSUFFIX="mpk"
15  SMAGENAME="$1"  SMAGENAME="$1"
16  SMAGESUFFIX="smage2"  SMAGESUFFIX="smage2"
 #SOURCEDIR="/bootstrap/sources"  
 #SMAGESCRIPTSDIR="/bootstrap/smage2-install-scripts"  
 #SMAGE2RSYNC="rsync://192.168.0.2/smage2-scripts"  
17  MLIBDIR=/usr/lib/mage  MLIBDIR=/usr/lib/mage
18  SMAGEVERSION="$( < ${MLIBDIR}/version)"  SMAGEVERSION="$( < ${MLIBDIR}/version)"
19    
20    ## only for tests -> normally in /etc/rc.d/init.d/functions
21    COLRED="\033[1;6m\033[31m"
22    COLGREEN="\033[1;6m\033[32m"
23    COLYELLOW="\033[1;6m\033[33m"
24    COLBLUE="\033[1;6m\033[34m"
25    COLMAGENTA="\033[1;6m\033[35m"
26    COLWHITE="\033[1;6m\033[37m"
27    COLGRAY="\033[0;6m\033[37m"
28    COLBOLD="\033[1m"
29    COLDEFAULT="\033[0m"
30    
31    if [[ ${NOCOLORS} = true ]]
32    then
33     COLRED=""
34     COLGREEN=""
35     COLYELLOW=""
36     COLBLUE=""
37     COLMAGENTA=""
38     COLWHITE=""
39     COLGRAY=""
40     COLBOLD=""
41     COLDEFAULT=""
42    fi
43    
44  # export default C locale  # export default C locale
45  export LC_ALL=C  export LC_ALL=C
46    
47  source /etc/mage.rc  source /etc/mage.rc
48    
49  showversion() {  # set PKGDIR and BUILDDIR and BINDIR to MROOT
50    if [[ -n ${MROOT} ]]
51    then
52     export PKGDIR=${MROOT}/${PKGDIR}
53     export BUILDDIR=${MROOT}/${BUILDDIR}
54     export BINDIR=${MROOT}/${BINDIR}
55    fi
56    
57    showversion()
58    {
59   echo -en "Magellan Source Install v${SMAGEVERSION} "   echo -en "Magellan Source Install v${SMAGEVERSION} "
60   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"
61  }  }
62    
63  die() {  die()
64    {
65   xtitleclean   xtitleclean
66   echo "SMAGE failed: $@"   echo "SMAGE failed: $@"
67   exit 1   exit 1
68  }  }
69    
70  xtitle() {  xtitle()
71   if [ ${TERM} == "xterm" ]  {
72     if [[ ${TERM} = xterm ]]
73   then   then
74   echo -ne "\033]0;[sMage: $@]\007"   echo -ne "\033]0;[sMage: $@]\007"
75   fi   fi
76   return 0   return 0
77  }  }
78    
79  xtitleclean() {  xtitleclean()
80   if [ ${TERM} == "xterm" ]  {
81     if [[ ${TERM} = xterm ]]
82   then   then
83   echo -ne "\033]0;\007"   echo -ne "\033]0;\007"
84   fi   fi
85   return 0   return 0
86  }  }
87    
88  syncsmage2() {  syncsmage2()
89    {
90   xtitle "Updating smage2-script tree ..."   xtitle "Updating smage2-script tree ..."
91   local i   local i
92   for i in ${SMAGE2RSYNC}   for i in ${SMAGE2RSYNC}
93   do   do
94   rsync \   rsync ${RSYNC_FETCH_OPTIONS} ${i} ${SMAGESCRIPTSDIR}
95   --recursive \   if [[ $? = 0 ]]
  --links \  
  --perms \  
  --times \  
  --devices \  
  --timeout=600 \  
  --verbose \  
  --compress \  
  --progress \  
  --stats \  
  --delete \  
  --delete-after \  
  ${i} ${SMAGESCRIPTSDIR}  
   
  if [ "$?" == "0" ]  
96   then   then
97   break   break
98   else   else
99   continue   continue
100   fi   fi
   
101   done   done
102    
103   #clean up backup files (foo~)   # clean up backup files (foo~)
104   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
105    
106   xtitleclean   xtitleclean
107  }  }
108    
109  # $1 filename  # $1 filename
110  get_db_md5_sum() {  get_db_md5_sum()
111    {
112   local DB_FILE   local DB_FILE
113   local MD5_FILE   local MD5_FILE
114   local i   local i
# Line 101  get_db_md5_sum() { Line 121  get_db_md5_sum() {
121   echo "${i}"   echo "${i}"
122  }  }
123    
124  download_sources() {  download_sources()
125    {
126    
127   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
128    
# Line 113  download_sources() { Line 134  download_sources() {
134   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
135   local FETCHING   local FETCHING
136   local i mirror   local i mirror
   
137    
138   #install SRCDIR/PNAME if not exist  
139     # install SRCDIR/PNAME if not exist
140   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}
141    
142   # check if FETCHING is needed   # check if FETCHING is needed
143   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )
144   if [[ $? == 0 ]]   if [[ $? = 0 ]]
145   then   then
146   # md5's ok, not fetching needed   # md5's ok, not fetching needed
147   FETCHING=false   FETCHING=false
148   else   else
149   FETCHING=true   FETCHING=true
150   fi   fi
151    
152   for ((i=0; i < EOA; i++))   for ((i=0; i < EOA; i++))
153   do   do
154   # url to file   # url to file
# Line 151  download_sources() { Line 172  download_sources() {
172   do   do
173   my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"   my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"
174    
175   #echo "DEBUG: ${MY_SRC_URI}"   if [[ ${FETCHING} = true ]]
  if [[ ${FETCHING} == true ]]  
176   then   then
177   echo "==> fetching ${my_SRC_URI_MIRROR}"   echo "==> fetching ${my_SRC_URI_MIRROR}"
178   wget \   wget \
# Line 162  download_sources() { Line 182  download_sources() {
182   --progress bar \   --progress bar \
183   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
184   "${my_SRC_URI_MIRROR}"   "${my_SRC_URI_MIRROR}"
185   if [ "$?" == "0" ]   if [[ $? = 0 ]]
186   then   then
187   break   break
188   else   else
# Line 171  download_sources() { Line 191  download_sources() {
191   fi   fi
192   done   done
193   else   else
194   #echo "DEBUG: ${SRC_URI[${i}]}"   if [[ ${FETCHING} = true ]]
  if [[ ${FETCHING} == true ]]  
195   then   then
196   echo "==> fetching ${my_SRC_URI}"   echo "==> fetching ${my_SRC_URI}"
197   wget \   wget \
# Line 182  download_sources() { Line 201  download_sources() {
201   --progress bar \   --progress bar \
202   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
203   "${my_SRC_URI}"   "${my_SRC_URI}"
 # only needed to run through a list of mirrors  
 # if [ "$?" == "0" ]  
 # then  
 # break  
 # else  
 # continue  
 # fi  
204   fi   fi
205   fi   fi
206    
207   # unset them to be shure   # unset them to be shure
208   unset my_SRC_URI   unset my_SRC_URI
209   unset my_SRC_URI_DEST   unset my_SRC_URI_DEST
# Line 210  download_sources() { Line 222  download_sources() {
222  }  }
223    
224  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
225  src_prepare() {  src_prepare()
226    {
227   echo "no src_prepare defined"   echo "no src_prepare defined"
228   sleep 2   sleep 2
229   return 0   return 0
230  }  }
231    
232  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
233  src_compile() {  src_compile()
234    {
235   echo "no src_compile defined"   echo "no src_compile defined"
236   sleep 2   sleep 2
237   return 0   return 0
238  }  }
239    
240  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
241  src_install() {  src_install()
242    {
243   echo "no src_install defined"   echo "no src_install defined"
244   sleep 2   sleep 2
245   return 0   return 0
246  }  }
247    
248  mconfigure() {  mlibdir()
249    {
250     local libdir=lib
251     [[ ${ARCH} = x86_64 ]] && libdir=lib64
252    
253     echo "${libdir}"
254    }
255    
256    mconfigure()
257    {
258   if [ -x ./configure ]   if [ -x ./configure ]
259   then   then
260   ./configure \   ./configure \
261   --prefix=/usr \   --prefix=/usr \
262   --host=${CHOST} \   --host=${CHOST} \
263   --mandir=/usr/share/man \   --mandir=/usr/share/man \
264   --infodir=/usr/share/info \   --infodir=/usr/share/info \
265   --datadir=/usr/share \   --datadir=/usr/share \
266   --sysconfdir=/etc \   --sysconfdir=/etc \
267   --localstatedir=/var/lib \   --localstatedir=/var/lib \
268   "$@" || die "mconfigure failed"   --libdir=/usr/$(mlibdir) \
269     "$@" || die "mconfigure failed"
270   else   else
271   echo "configure is not an executable ..."   echo "configure is not an executable ..."
272   exit 1   exit 1
273   fi   fi
274  }  }
275    
276  minstall() {  minstall()
277   if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then  {
278     if [ -f ./[mM]akefile -o -f ./GNUmakefile ]
279     then
280   make prefix=${BINDIR}/usr \   make prefix=${BINDIR}/usr \
281   datadir=${BINDIR}/usr/share \   datadir=${BINDIR}/usr/share \
282   infodir=${BINDIR}/usr/share/info \   infodir=${BINDIR}/usr/share/info \
283   localstatedir=${BINDIR}/var/lib \   localstatedir=${BINDIR}/var/lib \
284   mandir=${BINDIR}/usr/share/man \   mandir=${BINDIR}/usr/share/man \
285   sysconfdir=${BINDIR}/etc \   sysconfdir=${BINDIR}/etc \
286     libdir=${BINDIR}/usr/$(mlibdir) \
287   "$@" install || die "minstall failed"   "$@" install || die "minstall failed"
288          else          else
289                  die "no Makefile found"                  die "no Makefile found"
290          fi          fi
291  }  }
292    
293  mmake() {  mmake()
294    {
295   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
296  }  }
297    
298  munpack() {  munpack()
299    {
300   local SRCFILE   local SRCFILE
301   local IFTAR   local IFTAR
302   local DEST   local DEST
303    
304   SRCFILE=$1   SRCFILE=$1
305    
306   if [ -z "$2" ]   if [ -z "$2" ]
307   then   then
308   DEST=${BUILDDIR}   DEST=${BUILDDIR}
309   else   else
310   DEST=$2   DEST=$2
311   fi   fi
312    
313   case "${SRCFILE##*.}" in   case "${SRCFILE##*.}" in
314   bz2)   bz2)
315   IFTAR="$(basename $SRCFILE .bz2)"   IFTAR="$(basename $SRCFILE .bz2)"
316   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
317   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
318   then   then
319   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
320   fi   fi
# Line 292  munpack() { Line 322  munpack() {
322   gz)   gz)
323   IFTAR="$(basename $SRCFILE .gz)"   IFTAR="$(basename $SRCFILE .gz)"
324   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
325   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
326   then   then
327   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
328   fi   fi
# Line 309  munpack() { Line 339  munpack() {
339   esac   esac
340  }  }
341    
342  mpatch() {  mpatch()
343    {
344   local PATCHOPTS   local PATCHOPTS
345   local PATCHFILE   local PATCHFILE
346    
347   PATCHOPTS=$1   PATCHOPTS=$1
348   PATCHFILE=$2   PATCHFILE=$2
349    
350     echo -e "${COLBLUE}*** ${COLGREEN}Applying patch '${PATCHFILE}'${COLDEFAULT}"
351   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
352  }  }
353    
354    
355  minstalldocs() {  minstalldocs()
356    {
357   local docfiles   local docfiles
   
358   docfiles="$@"   docfiles="$@"
359    
360   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
361   then   then
362   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
363   fi   fi
364    
365   for i in ${docfiles}   for i in ${docfiles}
366   do   do
367   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
# Line 338  minstalldocs() { Line 370  minstalldocs() {
370   done   done
371  }  }
372    
373  mstriplibs() {  mstriplibs()
374    {
375   local stripdir="$@"   local stripdir="$@"
376    
377   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
378   find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null   find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
379  }  }
380    
381  mstripbins() {  mstripbins()
382    {
383   local stripdir="$@"   local stripdir="$@"
384    
385   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
386   find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null   find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
387  }  }
388    
389  sminclude() {  sminclude()
390    {
391   local i   local i
392    
393   if [[ -n "$@" ]]   if [[ -n "$@" ]]
# Line 366  sminclude() { Line 401  sminclude() {
401   fi   fi
402  }  }
403    
404  setup_distcc_environment(){  setup_distcc_environment()
405    {
406   if [ -x /usr/bin/distcc ]   if [ -x /usr/bin/distcc ]
407   then   then
408   echo "Using DistCC for compilation ..."   echo "Using DistCC for compilation ..."
409   export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"   export PATH=/usr/$(mlibdir)/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
   
  #export distcc as compiler  
 # export CC="distcc"  
 # export CXX=distcc  
410    
411   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
412    
413     # creating distcc tempdir
  #ccache + distcc together  
  if [ "${SMAGE_USE_CCACHE}" == "true" ]  
  then  
  if [ -x /usr/bin/ccache ]  
  then  
  echo "Preparing DistCC to work together with CCache ..."  
  #export CCACHE_PREFIX="distcc" || die "distcc: could not set ccach_prefix"  
 # export CC="ccache distcc"  
 # export CXX="ccache distcc"  
  fi  
  fi  
   
  #creating distcc tempdir  
414   install -o distcc -g daemon -d ${DISTCC_DIR}   install -o distcc -g daemon -d ${DISTCC_DIR}
415   chmod 1777 ${DISTCC_DIR}   chmod 1777 ${DISTCC_DIR}
416   fi   fi
417  }  }
418    
419  setup_ccache_environment(){  setup_ccache_environment()
420    {
421   if [ -x /usr/bin/ccache ]   if [ -x /usr/bin/ccache ]
422   then   then
423   echo "Using CCache for compilation ..."   echo "Using CCache for compilation ..."
424   export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"   export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
  #unset CC CXX  
425   fi   fi
426  }  }
427    
428    
429  # fixes given dependencies to match a MAGE_TARGET  # fixes given dependencies to match a MAGE_TARGET
430  # fix_mage_deps target s/depend  # fix_mage_deps -target s/depend # <-- note -target !
431  fix_mage_deps() {  fix_mage_deps()
432    {
433   local target="$1"   local target="$1"
434   local depend="$2"   local depend="$2"
435   local NDEPEND   local NDEPEND
# Line 425  fix_mage_deps() { Line 445  fix_mage_deps() {
445   while read sym dep   while read sym dep
446   do   do
447   cat="$(dirname ${dep})"   cat="$(dirname ${dep})"
448   # abort on virtual   # change if not virtual
449   [[ ${cat} = virtual ]] && continue   if [[ ${cat} = virtual ]]
450     then
451   # fix pver to target-pver   pname="$(basename ${dep})"
452   # to get pname-target-pver   else
453     # fix pver to target-pver
454     # to get pname-target-pver
455    
456   # doing it backwards !   # doing it backwards !
457   pver="${dep##*-}"   pver="${dep##*-}"
458   pname=$(basename ${dep/-${pver}/})   # full pver
459     pname="$(basename ${dep/-${pver}/})${target}-${pver}"
460     fi
461    
462   # do not add empty lines   # do not add empty lines
463   if [ -z "${NDEPEND}" ]   if [ -z "${NDEPEND}" ]
464   then   then
465   NDEPEND="${sym} ${cat}/${pname}-${target}-${pver}"   NDEPEND="${sym} ${cat}/${pname}"
466   else   else
467   NDEPEND="${NDEPEND}   NDEPEND="${NDEPEND}
468   ${sym} ${cat}/${pname}-${target}-${pver}"   ${sym} ${cat}/${pname}"
469   fi   fi
470    
471   unset cat pname pver   unset cat pname pver
# Line 508  build_mage_script() Line 532  build_mage_script()
532   > ${dest}   > ${dest}
533    
534   # header   # header
535   echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.27 2005-08-20 15:55:19 niro Exp $' >> ${dest}   echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.44 2006-07-17 20:52:38 niro Exp $' >> ${dest}
536   echo  >> ${dest}   echo  >> ${dest}
537    
538   # pgkname and state   # pgkname and state
# Line 523  build_mage_script() Line 547  build_mage_script()
547    
548   # special tags and vars   # special tags and vars
549   echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}   echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}
550   if [ -n "${INHERITS}" ]  
551   then   # echo MAGE_TARGETS ## note -target is needed !
552   echo -n "minclude"  >> ${dest}   echo "MAGE_TARGETS=\"${target}\"" >> ${dest}
  local i  
  for i in ${INHERITS}  
  do  
  echo -n " ${i}"  >> ${dest}  
  done  
  echo  >> ${dest}  
  fi  
553   echo >> ${dest}   echo >> ${dest}
554    
555   # add special vars   # add special vars
# Line 547  build_mage_script() Line 564  build_mage_script()
564   echo  >> ${dest}   echo  >> ${dest}
565   fi   fi
566    
567     # add at least all includes
568     if [ -n "${INHERITS}" ]
569     then
570     echo -n "minclude"  >> ${dest}
571     local i
572     for i in ${INHERITS}
573     do
574     echo -n " ${i}"  >> ${dest}
575     done
576     echo  >> ${dest}
577     fi
578     echo >> ${dest}
579    
580   # deps and provides   # deps and provides
581   echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}   echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}
582   echo >> ${dest}   echo >> ${dest}
# Line 563  build_mage_script() Line 593  build_mage_script()
593   do   do
594   # add to mage (quotes needed !)   # add to mage (quotes needed !)
595   typeset -f "${i}" >> ${dest}   typeset -f "${i}" >> ${dest}
596     echo >> ${dest}
597   # unset to be safe (quotes needed !)   # unset to be safe (quotes needed !)
598   #unset "${i}" <-- later to get every target built   #unset "${i}" <-- later to get every target built
599   done   done
# Line 633  regen_mage_tree() Line 664  regen_mage_tree()
664   unset postremove   unset postremove
665  }  }
666    
667    export_inherits()
668    {
669     local include="$1"
670     shift
671    
672     while [ "$1" ]
673     do
674     local functions="$1"
675    
676     # sanity checks
677     [ -z "${include}" ] && die "export_inherits(): \$include not given."
678     [ -z "${functions}" ] && die "export_inherits(): \$functions not given."
679    
680     eval "${functions}() { ${include}_${functions} ; }"
681    
682     # debug
683     [[ ${MAGEDEBUG} = on ]] && typeset -f "${functions}"
684    
685     shift
686     done
687    }
688    
689    generate_package_md5sum()
690    {
691     local dest
692     local pcat
693     local pname
694     local pver
695     local pbuild
696     local parch
697     local target
698     local pkgname
699    
700     # very basic getops
701     for i in $*
702     do
703     case $1 in
704     --pcat|-c) shift; pcat="$1" ;;
705     --pname|-n) shift; pname="$1" ;;
706     --pver|-v) shift; pver="$1" ;;
707     --pbuild|-b) shift; pbuild="$1" ;;
708     --parch|a) shift; parch="$1" ;;
709     --target|t) shift; target="$1" ;;
710     esac
711     shift
712     done
713    
714     # sanity checks; abort if not given
715     [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given."
716     [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given."
717     [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given."
718     [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given."
719     [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given."
720    
721     # check needed global vars
722     [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
723     [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
724    
725     # fix target as it may be empty !
726     [ -n "${target}" ] && target="-${target}"
727    
728     # build pkgname
729     pkgname="${pname}${target}-${pver}-${parch}-${pbuild}"
730    
731     # build pkg-md5-sum only if requested
732     if [[ ${REGEN_MAGE_TREE} = true ]]
733     then
734     echo -n "Generating a md5sum for ${pkgname}.${PKGSUFFIX} ... "
735    
736     # abort if not exist
737     if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ]
738     then
739     echo "! exists"
740     return 0
741     fi
742    
743     # if MAGE_TREE_DEST not set use BUILDDIR
744     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
745    
746     # setup md5 dir
747     dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
748     install -d ${dest}
749    
750     # gen md5sum
751     ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \
752     > ${dest}/${pkgname}.md5
753     echo "done"
754     fi
755    }
756    
757  # print out our version  # print out our version
758  showversion  showversion
759  echo  echo
# Line 645  then Line 766  then
766  fi  fi
767    
768  # updating smage2-scripts  # updating smage2-scripts
769  if [ "$1" == "update" ]  if [[ $1 = update ]]
770  then  then
771   if [ ! -d ${SOURCEDIR} ]   if [ ! -d ${SOURCEDIR} ]
772   then   then
# Line 656  then Line 777  then
777  fi  fi
778    
779  # creates md5sums for smages to given dir  # creates md5sums for smages to given dir
780  if [ "$1" == "calcmd5" ]  if [[ $1 = calcmd5 ]]
781  then  then
782   if [ $# -ge 3 ]   if [ $# -ge 3 ]
783   then   then
# Line 708  then Line 829  then
829   unset my_SRC_URI_MIRROR   unset my_SRC_URI_MIRROR
830   unset my_SOURCEDIR   unset my_SOURCEDIR
831   done   done
832    
833   echo   echo
834   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
835   echo   echo
# Line 721  then Line 842  then
842   echo   echo
843   exit 1   exit 1
844   fi   fi
845    
846   exit 0   exit 0
847  fi  fi
848    
# Line 742  then Line 863  then
863   exit 0   exit 0
864  fi  fi
865    
866  if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]  # regen-mage-tree
867  then  if [ "$1" == "only-regen-tree" -a -n "$2" ]
  die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."  
 fi  
   
 if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]  
868  then  then
869   die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."   # set correct SMAGENAME
870  fi   SMAGENAME="$2"
871     MD5DIR="$(dirname ${SMAGENAME})/md5"
872  if [ -z "${SOURCEDIR}" ]   source ${SMAGENAME} || die "regen: smage2 not found"
 then  
  die "\$SOURCEDIR not found. Please setup your mage.rc correctly."  
 fi  
   
 if [ -z "${SMAGESCRIPTSDIR}" ]  
 then  
  die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."  
 fi  
   
 if [ -z "${SMAGE2RSYNC}" ]  
 then  
  echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."  
  exit 1  
 fi  
   
 if [ -z "${BINDIR}" ]  
 then  
  die "no BINDIR variable found in /etc/mage.rc"  
 fi  
873    
874  if [ -z "${CHOST}" ]   regen_mage_tree
 then  
  die "no CHOST variable found in /etc/mage.rc"  
 fi  
875    
876  if [ -z "${CFLAGS}" ]   # build md5sum for existing packages
877  then   generate_package_md5sum \
878   die "no CFLAGS variable found in /etc/mage.rc"   --pcat "${PCATEGORIE}" \
879  fi   --pname "${PNAME}" \
880     --pver "${PVER}" \
881     --pbuild "${PBUILD}" \
882     --parch "${ARCH}" \
883     --target "${target}"
884    
885  if [ -z "${CXXFLAGS}" ]   exit 0
 then  
  die "no CXXFLAGS variable found in /etc/mage.rc"  
886  fi  fi
887    
888    [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
889    [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
890     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
891    [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your mage.rc correctly."
892    [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."
893    [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."
894    [ -z "${BINDIR}" ] && die "no BINDIR variable found in /etc/mage.rc"
895    [ -z "${CHOST}" ] && die "no CHOST variable found in /etc/mage.rc"
896    [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in /etc/mage.rc"
897    [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in /etc/mage.rc"
898    
899  source ${SMAGENAME} || die "source failed"  source ${SMAGENAME} || die "source failed"
900  PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"  PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}"
901  MD5DIR="$(dirname ${SMAGENAME})/md5"  MD5DIR="$(dirname ${SMAGENAME})/md5"
902    
903  xtitle "Compiling ${PKGNAME}"  xtitle "Compiling ${PKGNAME}"
# Line 816  export MAKEOPTS="${MAKEOPTS}" || die "MA Line 923  export MAKEOPTS="${MAKEOPTS}" || die "MA
923    
924    
925  # setup distcc  # setup distcc
926  # distcc mus be setup *before* ccache, as ccache need to be before distcc in path  # setup for distcc goes *before* ccache, so ccache comes before distcc in path
927  if [ "${SMAGE_USE_DISTCC}" == "true" ]  [[ ${SMAGE_USE_DISTCC} = true ]] && setup_distcc_environment
 then  
  setup_distcc_environment  
 fi  
928    
929  # setup ccache  # setup ccache
930  if [ "${SMAGE_USE_CCACHE}" == "true" ]  [[ ${SMAGE_USE_CCACHE} = true ]] && setup_ccache_environment
 then  
  setup_ccache_environment  
 fi  
   
931    
932  # small sleep to show our settings  # small sleep to show our settings
933  sleep 1  sleep 1
934    
 #debug  
 #echo "CC=${CC}"  
 #echo "CXX=${CXX}"  
 #echo "DISTCC_DIR=${DISTCC_DIR}"  
 #echo "PATH: ${PATH}"  
 #echo "--------------------------------------"  
 #env  
 #echo "--------------------------------------"  
 #read  
 #debug end  
   
935  # cleans up build if a previously one exists  # cleans up build if a previously one exists
936  if [ -d ${BUILDDIR} ]  if [ -d ${BUILDDIR} ]
937  then  then
# Line 912  case ${NOPKGBUILD} in Line 1001  case ${NOPKGBUILD} in
1001   echo -e "NOPGKBUILD=true detected; Package will not be build ..."   echo -e "NOPGKBUILD=true detected; Package will not be build ..."
1002   ;;   ;;
1003   *)   *)
1004   # build serveral targets   # build several targets
1005   if [ -n "${MAGE_TARGETS}" ]   if [ -n "${MAGE_TARGETS}" ]
1006   then   then
1007   for target in ${MAGE_TARGETS}   for target in ${MAGE_TARGETS}
# Line 925  case ${NOPKGBUILD} in Line 1014  case ${NOPKGBUILD} in
1014   fi   fi
1015   # now create the target package   # now create the target package
1016   ${MLIBDIR}/pkgbuild_dir.sh \   ${MLIBDIR}/pkgbuild_dir.sh \
1017   "${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD}" \   "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \
1018   ${BINDIR} || die "target: ${target} package-build failed"   ${BINDIR} || die "target: ${target} package-build failed"
1019   echo -e "\nPackage ${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD} successfully builded.\n"  
1020     # build pkg-md5-sum if requested
1021     generate_package_md5sum \
1022     --pcat "${PCATEGORIE}" \
1023     --pname "${PNAME}" \
1024     --pver "${PVER}" \
1025     --pbuild "${PBUILD}" \
1026     --parch "${ARCH}" \
1027     --target "${target}"
1028    
1029     echo -e "\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n"
1030   done   done
1031   else   else
1032   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
1033    
1034     # build pkg-md5-sum if requested
1035     generate_package_md5sum \
1036     --pcat "${PCATEGORIE}" \
1037     --pname "${PNAME}" \
1038     --pver "${PVER}" \
1039     --pbuild "${PBUILD}" \
1040     --parch "${ARCH}"
1041    
1042   echo -e "\nPackage ${PKGNAME} successfully builded.\n"   echo -e "\nPackage ${PKGNAME} successfully builded.\n"
1043   fi   fi
1044   ;;   ;;
# Line 939  esac Line 1047  esac
1047  # for sure  # for sure
1048  unset NOPKGBUILD  unset NOPKGBUILD
1049  unset NOSTRIP  unset NOSTRIP
1050    
1051  xtitleclean  xtitleclean
 #echo -e "\nPackage ${PKGNAME} successfully builded.\n"  

Legend:
Removed from v.196  
changed lines
  Added in v.386