Magellan Linux

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

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

revision 169 by niro, Sun Jul 31 11:57:05 2005 UTC revision 347 by niro, Sat Mar 4 23:29:45 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.16 2005-07-31 11:57:05 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.41 2006-03-04 23:29:45 niro Exp $
8    
9  #01.10.2004  #01.10.2004
10  # added ccache support  # added ccache support
11  # added distcc support  # added distcc support
12    
13  ## setup ##  ## setup ##
 SMAGEVERSION=0.3.6-r19  
14  PKGSUFFIX="mpk"  PKGSUFFIX="mpk"
15  SMAGENAME="$1"  SMAGENAME="$1"
16  SMAGESUFFIX="smage2"  SMAGESUFFIX="smage2"
# Line 19  SMAGESUFFIX="smage2" Line 18  SMAGESUFFIX="smage2"
18  #SMAGESCRIPTSDIR="/bootstrap/smage2-install-scripts"  #SMAGESCRIPTSDIR="/bootstrap/smage2-install-scripts"
19  #SMAGE2RSYNC="rsync://192.168.0.2/smage2-scripts"  #SMAGE2RSYNC="rsync://192.168.0.2/smage2-scripts"
20  MLIBDIR=/usr/lib/mage  MLIBDIR=/usr/lib/mage
21    SMAGEVERSION="$( < ${MLIBDIR}/version)"
22    
23  # export default C locale  # export default C locale
24  export LC_ALL=C  export LC_ALL=C
25    
26  source /etc/mage.rc  source /etc/mage.rc
27    
28  showversion() {  # set PKGDIR and BUILDDIR and BINDIR to MROOT
29    if [[ -n ${MROOT} ]]
30    then
31     export PKGDIR=${MROOT}/${PKGDIR}
32     export BUILDDIR=${MROOT}/${BUILDDIR}
33     export BINDIR=${MROOT}/${BINDIR}
34    fi
35    
36    showversion()
37    {
38   echo -en "Magellan Source Install v${SMAGEVERSION} "   echo -en "Magellan Source Install v${SMAGEVERSION} "
39   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"
40  }  }
41    
42  die() {  die()
43    {
44   xtitleclean   xtitleclean
45   echo "SMAGE failed: $@"   echo "SMAGE failed: $@"
46   exit 1   exit 1
47  }  }
48    
49  xtitle() {  xtitle()
50   if [ ${TERM} == "xterm" ]  {
51     if [[ ${TERM} = xterm ]]
52   then   then
53   echo -ne "\033]0;[sMage: $@]\007"   echo -ne "\033]0;[sMage: $@]\007"
54   fi   fi
55   return 0   return 0
56  }  }
57    
58  xtitleclean() {  xtitleclean()
59   if [ ${TERM} == "xterm" ]  {
60     if [[ ${TERM} = xterm ]]
61   then   then
62   echo -ne "\033]0;\007"   echo -ne "\033]0;\007"
63   fi   fi
64   return 0   return 0
65  }  }
66    
67  syncsmage2() {  syncsmage2()
68    {
69   xtitle "Updating smage2-script tree ..."   xtitle "Updating smage2-script tree ..."
70   local i   local i
71   for i in ${SMAGE2RSYNC}   for i in ${SMAGE2RSYNC}
# Line 71  syncsmage2() { Line 84  syncsmage2() {
84   --delete \   --delete \
85   --delete-after \   --delete-after \
86   ${i} ${SMAGESCRIPTSDIR}   ${i} ${SMAGESCRIPTSDIR}
87    
88   if [ "$?" == "0" ]   if [[ $? = 0 ]]
89   then   then
90   break   break
91   else   else
92   continue   continue
93   fi   fi
94    
95   done   done
96    
97   #clean up backup files (foo~)   # clean up backup files (foo~)
98   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
99    
100   xtitleclean   xtitleclean
101  }  }
102    
103  # $1 filename  # $1 filename
104  get_db_md5_sum() {  get_db_md5_sum()
105    {
106   local DB_FILE   local DB_FILE
107   local MD5_FILE   local MD5_FILE
108   local i   local i
# Line 101  get_db_md5_sum() { Line 115  get_db_md5_sum() {
115   echo "${i}"   echo "${i}"
116  }  }
117    
118  download_sources() {  download_sources()
119    {
120    
121   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
122    
# Line 113  download_sources() { Line 128  download_sources() {
128   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
129   local FETCHING   local FETCHING
130   local i mirror   local i mirror
   
131    
132   #install SRCDIR/PNAME if not exist  
133     # install SRCDIR/PNAME if not exist
134   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}
135    
136   # check if FETCHING is needed   # check if FETCHING is needed
137   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )
138   if [[ $? == 0 ]]   if [[ $? = 0 ]]
139   then   then
140   # md5's ok, not fetching needed   # md5's ok, not fetching needed
141   FETCHING=false   FETCHING=false
142   else   else
143   FETCHING=true   FETCHING=true
144   fi   fi
145    
146   for ((i=0; i < EOA; i++))   for ((i=0; i < EOA; i++))
147   do   do
148   # url to file   # url to file
# Line 152  download_sources() { Line 167  download_sources() {
167   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")"
168    
169   #echo "DEBUG: ${MY_SRC_URI}"   #echo "DEBUG: ${MY_SRC_URI}"
170   if [[ ${FETCHING} == true ]]   if [[ ${FETCHING} = true ]]
171   then   then
172   echo "==> fetching ${my_SRC_URI_MIRROR}"   echo "==> fetching ${my_SRC_URI_MIRROR}"
173   wget \   wget \
# Line 162  download_sources() { Line 177  download_sources() {
177   --progress bar \   --progress bar \
178   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
179   "${my_SRC_URI_MIRROR}"   "${my_SRC_URI_MIRROR}"
180   if [ "$?" == "0" ]   if [[ $? = 0 ]]
181   then   then
182   break   break
183   else   else
# Line 172  download_sources() { Line 187  download_sources() {
187   done   done
188   else   else
189   #echo "DEBUG: ${SRC_URI[${i}]}"   #echo "DEBUG: ${SRC_URI[${i}]}"
190   if [[ ${FETCHING} == true ]]   if [[ ${FETCHING} = true ]]
191   then   then
192   echo "==> fetching ${my_SRC_URI}"   echo "==> fetching ${my_SRC_URI}"
193   wget \   wget \
# Line 191  download_sources() { Line 206  download_sources() {
206  # fi  # fi
207   fi   fi
208   fi   fi
209    
210   # unset them to be shure   # unset them to be shure
211   unset my_SRC_URI   unset my_SRC_URI
212   unset my_SRC_URI_DEST   unset my_SRC_URI_DEST
# Line 210  download_sources() { Line 225  download_sources() {
225  }  }
226    
227  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
228  src_prepare() {  src_prepare()
229    {
230   echo "no src_prepare defined"   echo "no src_prepare defined"
231   sleep 2   sleep 2
232   return 0   return 0
233  }  }
234    
235  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
236  src_compile() {  src_compile()
237    {
238   echo "no src_compile defined"   echo "no src_compile defined"
239   sleep 2   sleep 2
240   return 0   return 0
241  }  }
242    
243  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
244  src_install() {  src_install()
245    {
246   echo "no src_install defined"   echo "no src_install defined"
247   sleep 2   sleep 2
248   return 0   return 0
249  }  }
250    
251    mconfigure()
252  build_mage_script() {  {
  return 0  
 }  
   
 mconfigure() {  
253   if [ -x ./configure ]   if [ -x ./configure ]
254   then   then
255   ./configure \   ./configure \
256   --prefix=/usr \   --prefix=/usr \
257   --host=${CHOST} \   --host=${CHOST} \
258   --mandir=/usr/share/man \   --mandir=/usr/share/man \
259   --infodir=/usr/share/info \   --infodir=/usr/share/info \
260   --datadir=/usr/share \   --datadir=/usr/share \
261   --sysconfdir=/etc \   --sysconfdir=/etc \
262   --localstatedir=/var/lib \   --localstatedir=/var/lib \
263   "$@" || die "mconfigure failed"   "$@" || die "mconfigure failed"
264   else   else
265   echo "configure is not an executable ..."   echo "configure is not an executable ..."
266   exit 1   exit 1
267   fi   fi
268  }  }
269    
270  minstall() {  minstall()
271   if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then  {
272     if [ -f ./[mM]akefile -o -f ./GNUmakefile ]
273     then
274   make prefix=${BINDIR}/usr \   make prefix=${BINDIR}/usr \
275   datadir=${BINDIR}/usr/share \   datadir=${BINDIR}/usr/share \
276   infodir=${BINDIR}/usr/share/info \   infodir=${BINDIR}/usr/share/info \
# Line 267  minstall() { Line 283  minstall() {
283          fi          fi
284  }  }
285    
286  mmake() {  mmake()
287    {
288   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
289  }  }
290    
291  munpack() {  munpack()
292    {
293   local SRCFILE   local SRCFILE
294   local IFTAR   local IFTAR
295   local DEST   local DEST
296    
297   SRCFILE=$1   SRCFILE=$1
298    
299   if [ -z "$2" ]   if [ -z "$2" ]
300   then   then
301   DEST=${BUILDDIR}   DEST=${BUILDDIR}
302   else   else
303   DEST=$2   DEST=$2
304   fi   fi
305    
306   case "${SRCFILE##*.}" in   case "${SRCFILE##*.}" in
307   bz2)   bz2)
308   IFTAR="$(basename $SRCFILE .bz2)"   IFTAR="$(basename $SRCFILE .bz2)"
309   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
310   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
311   then   then
312   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
313   fi   fi
# Line 297  munpack() { Line 315  munpack() {
315   gz)   gz)
316   IFTAR="$(basename $SRCFILE .gz)"   IFTAR="$(basename $SRCFILE .gz)"
317   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
318   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
319   then   then
320   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
321   fi   fi
# Line 314  munpack() { Line 332  munpack() {
332   esac   esac
333  }  }
334    
335  mpatch() {  mpatch()
336    {
337   local PATCHOPTS   local PATCHOPTS
338   local PATCHFILE   local PATCHFILE
339    
# Line 325  mpatch() { Line 344  mpatch() {
344  }  }
345    
346    
347  minstalldocs() {  minstalldocs()
348    {
349   local docfiles   local docfiles
   
350   docfiles="$@"   docfiles="$@"
351    
352   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
353   then   then
354   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
355   fi   fi
356    
357   for i in ${docfiles}   for i in ${docfiles}
358   do   do
359   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
# Line 343  minstalldocs() { Line 362  minstalldocs() {
362   done   done
363  }  }
364    
365  mstriplibs() {  mstriplibs()
366    {
367   local stripdir="$@"   local stripdir="$@"
368    
369   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
370   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
371  }  }
372    
373  mstripbins() {  mstripbins()
374    {
375   local stripdir="$@"   local stripdir="$@"
376    
377   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
378   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
379  }  }
380    
381  setup_distcc_environment(){  sminclude()
382    {
383     local i
384    
385     if [[ -n "$@" ]]
386     then
387     for i in $@
388     do
389     echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
390     source ${SMAGESCRIPTSDIR}/include/${i}.sminc
391     done
392     echo
393     fi
394    }
395    
396    setup_distcc_environment()
397    {
398   if [ -x /usr/bin/distcc ]   if [ -x /usr/bin/distcc ]
399   then   then
400   echo "Using DistCC for compilation ..."   echo "Using DistCC for compilation ..."
401   export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"   export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
402    
403   #export distcc as compiler   # export distcc as compiler
404  # export CC="distcc"  # export CC="distcc"
405  # export CXX=distcc  # export CXX=distcc
406    
407   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
408    
409     # ccache + distcc together
410   #ccache + distcc together   if [[ ${SMAGE_USE_CCACHE} = true ]]
  if [ "${SMAGE_USE_CCACHE}" == "true" ]  
411   then   then
412   if [ -x /usr/bin/ccache ]   if [ -x /usr/bin/ccache ]
413   then   then
# Line 382  setup_distcc_environment(){ Line 418  setup_distcc_environment(){
418   fi   fi
419   fi   fi
420    
421   #creating distcc tempdir   # creating distcc tempdir
422   install -o distcc -g daemon -d ${DISTCC_DIR}   install -o distcc -g daemon -d ${DISTCC_DIR}
423   chmod 1777 ${DISTCC_DIR}   chmod 1777 ${DISTCC_DIR}
424   fi   fi
425  }  }
426    
427  setup_ccache_environment(){  setup_ccache_environment()
428    {
429   if [ -x /usr/bin/ccache ]   if [ -x /usr/bin/ccache ]
430   then   then
431   echo "Using CCache for compilation ..."   echo "Using CCache for compilation ..."
# Line 397  setup_ccache_environment(){ Line 434  setup_ccache_environment(){
434   fi   fi
435  }  }
436    
437    
438    # fixes given dependencies to match a MAGE_TARGET
439    # fix_mage_deps -target s/depend # <-- note -target !
440    fix_mage_deps()
441    {
442     local target="$1"
443     local depend="$2"
444     local NDEPEND
445     local sym dep cat pver pname
446    
447     # deps and provides are special
448     # they must be fixed to match the target
449    
450     # run this only if target and depend is not empty
451     if [ -n "${target}" ] && [ -n "${depend}" ]
452     then
453     # fix DEPEND
454     while read sym dep
455     do
456     cat="$(dirname ${dep})"
457     # change if not virtual
458     if [[ ${cat} = virtual ]]
459     then
460     pname="$(basename ${dep})"
461     else
462     # fix pver to target-pver
463     # to get pname-target-pver
464    
465     # doing it backwards !
466     pver="${dep##*-}"
467     # full pver
468     pname="$(basename ${dep/-${pver}/})${target}-${pver}"
469     fi
470    
471     # do not add empty lines
472     if [ -z "${NDEPEND}" ]
473     then
474     NDEPEND="${sym} ${cat}/${pname}"
475     else
476     NDEPEND="${NDEPEND}
477     ${sym} ${cat}/${pname}"
478     fi
479    
480     unset cat pname pver
481     done << EOF
482    ${depend}
483    EOF
484     # set NDEPEND to DEPEND
485     depend="${NDEPEND}"
486     fi
487    
488     echo "${depend}"
489    }
490    
491    # build_mage_script(): helper functions for regen_mage_tree()
492    # generates an mage file with given information in smage file
493    # needs at least:
494    #   PNAME                 name of pkg
495    #   PVER                  version
496    #   PBUILD                revision
497    #   PCATEGORIE            categorie of the pkg
498    #   STATE                 state of pkg stable|unstable|old
499    #   DESCRIPTION           va short description (opt)
500    #   HOMEPAGE              homepage (opt)
501    #   DEPEND                runtime dependencies (opt)
502    #   SDEPEND               add. needed deps to build the pkg (opt)
503    #   PROVIDE               provides a virtual (opt)
504    #
505    # special tags:
506    #   PKGTYPE               type of pkg
507    #   INHERITS              which functions get included
508    #   SPECIAL_FUNCTIONS     special functions wich should also be added
509    #                         warning: they get killed before the build starts !
510    #
511    #   MAGE_TREE_DEST        target destination of the generated tree
512    #   REGEN_MAGE_TREE       set to 'true' to enable this
513    #
514    # gets called with build_mage_script target
515    build_mage_script()
516    {
517     local magefile
518     local dest
519     local target
520     local sym
521     local depname
522    
523     # if MAGE_TREE_DEST not set use BUILDDIR
524     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
525    
526     # determinate which suffix this mage file should get, if any
527     [ -n "$1" ] && target="-$1"
528    
529     # name of magefile
530     magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"
531    
532     # destination to magefile
533     dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"
534    
535     # show what we are doing
536     echo "Generating Mage file:"
537     echo "  ${dest}"
538    
539     install -d "$(dirname ${dest})"
540     # now build the mage file
541     > ${dest}
542    
543     # header
544     echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.41 2006-03-04 23:29:45 niro Exp $' >> ${dest}
545     echo  >> ${dest}
546    
547     # pgkname and state
548     echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest}
549     echo "STATE=\"${STATE}\"" >> ${dest}
550     echo >> ${dest}
551    
552     # description and homepage
553     echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest}
554     echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest}
555     echo >> ${dest}
556    
557     # special tags and vars
558     echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}
559    
560     # echo MAGE_TARGETS ## note -target is needed !
561     echo "MAGE_TARGETS=\"${target}\"" >> ${dest}
562     echo >> ${dest}
563    
564     # add special vars
565     if [ -n "${SPECIAL_VARS}" ]
566     then
567     local i
568     for i in ${SPECIAL_VARS}
569     do
570     # being tricky here :)
571     echo "${i}=\"$(eval echo \$${i})\"" >> ${dest}
572     done
573     echo  >> ${dest}
574     fi
575    
576     # add at least all includes
577     if [ -n "${INHERITS}" ]
578     then
579     echo -n "minclude"  >> ${dest}
580     local i
581     for i in ${INHERITS}
582     do
583     echo -n " ${i}"  >> ${dest}
584     done
585     echo  >> ${dest}
586     fi
587     echo >> ${dest}
588    
589     # deps and provides
590     echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}
591     echo >> ${dest}
592     echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}
593     echo >> ${dest}
594     echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
595     echo >> ${dest}
596    
597     # add special functions
598     if [ -n "${SPECIAL_FUNCTIONS}" ]
599     then
600     local i
601     for i in ${SPECIAL_FUNCTIONS}
602     do
603     # add to mage (quotes needed !)
604     typeset -f "${i}" >> ${dest}
605     echo >> ${dest}
606     # unset to be safe (quotes needed !)
607     #unset "${i}" <-- later to get every target built
608     done
609     echo  >> ${dest}
610     fi
611    
612     # pre|post-install|removes
613     typeset -f preinstall >> ${dest}
614     echo  >> ${dest}
615     typeset -f postinstall >> ${dest}
616     echo  >> ${dest}
617     typeset -f preremove >> ${dest}
618     echo  >> ${dest}
619     typeset -f postremove >> ${dest}
620     echo  >> ${dest}
621    }
622    
623    regen_mage_tree()
624    {
625     local i
626    
627     # build them only if requested
628     if [[ ${REGEN_MAGE_TREE} = true ]]
629     then
630     # run it without targets
631     if [ -z "${MAGE_TARGETS}" ]
632     then
633     echo
634     build_mage_script
635     echo
636     else
637    
638     # build for each target an mage file
639     # run it with several targets
640     for i in ${MAGE_TARGETS}
641     do
642     echo
643     build_mage_script "${i}"
644     echo
645     done
646     fi
647     fi
648    
649     # now unset all uneeded vars to be safe
650     # unset PKGNAME <-- don't do that; smage needs this var
651     # unset to be safe (quotes needed !)
652     for i in ${SPECIAL_FUNCTIONS}
653     do
654     unset "${i}"
655     done
656     unset SPECIAL_FUNCTIONS
657     for i in ${SPECIAL_VARS}
658     do
659     unset "${i}"
660     done
661     unset SPECIAL_VARS
662     unset STATE
663     unset DESCRIPTION
664     unset HOMEPAGE
665     unset PKGTYPE
666     unset INHERITS
667     unset DEPEND
668     unset SDEPEND
669     unset PROVIDE
670     unset preinstall
671     unset postinstall
672     unset preremove
673     unset postremove
674    }
675    
676    export_inherits()
677    {
678     local include="$1"
679     shift
680    
681     while [ "$1" ]
682     do
683     local functions="$1"
684    
685     # sanity checks
686     [ -z "${include}" ] && die "export_inherits(): \$include not given."
687     [ -z "${functions}" ] && die "export_inherits(): \$functions not given."
688    
689     eval "${functions}() { ${include}_${functions} ; }"
690    
691     # debug
692     [[ ${MAGEDEBUG} = on ]] && typeset -f "${functions}"
693    
694     shift
695     done
696    }
697    
698    generate_package_md5sum()
699    {
700     local dest
701     local pcat
702     local pname
703     local pver
704     local pbuild
705     local parch
706     local target
707     local pkgname
708    
709     # very basic getops
710     for i in $*
711     do
712     case $1 in
713     --pcat|-c) shift; pcat="$1" ;;
714     --pname|-n) shift; pname="$1" ;;
715     --pver|-v) shift; pver="$1" ;;
716     --pbuild|-b) shift; pbuild="$1" ;;
717     --parch|a) shift; parch="$1" ;;
718     --target|t) shift; target="$1" ;;
719     esac
720     shift
721     done
722    
723     # sanity checks; abort if not given
724     [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given."
725     [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given."
726     [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given."
727     [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given."
728     [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given."
729    
730     # check needed global vars
731     [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
732     [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
733    
734     # fix target as it may be empty !
735     [ -n "${target}" ] && target="-${target}"
736    
737     # build pkgname
738     pkgname="${pname}${target}-${pver}-${parch}-${pbuild}"
739    
740     # build pkg-md5-sum only if requested
741     if [[ ${REGEN_MAGE_TREE} = true ]]
742     then
743     echo -n "Generating a md5sum for ${pkgname}.${PKGSUFFIX} ... "
744    
745     # abort if not exist
746     if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ]
747     then
748     echo "! exists"
749     return 0
750     fi
751    
752     # if MAGE_TREE_DEST not set use BUILDDIR
753     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
754    
755     # setup md5 dir
756     dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
757     install -d ${dest}
758    
759     # gen md5sum
760     ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \
761     > ${dest}/${pkgname}.md5
762     echo "done"
763     fi
764    }
765    
766  # print out our version  # print out our version
767  showversion  showversion
768  echo  echo
# Line 408  then Line 774  then
774   exit 1   exit 1
775  fi  fi
776    
777  #updating smage2-scripts  # updating smage2-scripts
778  if [ "$1" == "update" ]  if [[ $1 = update ]]
779  then  then
780   if [ ! -d ${SOURCEDIR} ]   if [ ! -d ${SOURCEDIR} ]
781   then   then
# Line 419  then Line 785  then
785   exit 0   exit 0
786  fi  fi
787    
788  #creates md5sums for smages to given dir  # creates md5sums for smages to given dir
789  if [ "$1" == "calcmd5" ]  if [[ $1 = calcmd5 ]]
790  then  then
791   if [ $# -ge 3 ]   if [ $# -ge 3 ]
792   then   then
# Line 472  then Line 838  then
838   unset my_SRC_URI_MIRROR   unset my_SRC_URI_MIRROR
839   unset my_SOURCEDIR   unset my_SOURCEDIR
840   done   done
841    
842   echo   echo
843   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
844   echo   echo
# Line 485  then Line 851  then
851   echo   echo
852   exit 1   exit 1
853   fi   fi
854    
855   exit 0   exit 0
856  fi  fi
857    
858  #download sources  # download sources
859  if [ "$1" == "download" -a -n "$2" ]  if [ "$1" == "download" -a -n "$2" ]
860  then  then
  showversion  
861   if [ ! -d ${SMAGESCRIPTSDIR} ]   if [ ! -d ${SMAGESCRIPTSDIR} ]
862   then   then
863   install -d ${SMAGESCRIPTSDIR}   install -d ${SMAGESCRIPTSDIR}
# Line 507  then Line 872  then
872   exit 0   exit 0
873  fi  fi
874    
875  if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]  # regen-mage-tree
876  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}`" ]  
 then  
  die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."  
 fi  
   
 if [ -z "${SOURCEDIR}" ]  
 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}" ]  
877  then  then
878   echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."   # set correct SMAGENAME
879   exit 1   SMAGENAME="$2"
880  fi   MD5DIR="$(dirname ${SMAGENAME})/md5"
881     source ${SMAGENAME} || die "regen: smage2 not found"
882    
883  if [ -z "${BINDIR}" ]   regen_mage_tree
 then  
  die "no BINDIR variable found in /etc/mage.rc"  
 fi  
884    
885  if [ -z "${CHOST}" ]   # build md5sum for existing packages
886  then   generate_package_md5sum \
887   die "no CHOST variable found in /etc/mage.rc"   --pcat "${PCATEGORIE}" \
888  fi   --pname "${PNAME}" \
889     --pver "${PVER}" \
890     --pbuild "${PBUILD}" \
891     --parch "${ARCH}" \
892     --target "${target}"
893    
894  if [ -z "${CFLAGS}" ]   exit 0
 then  
  die "no CFLAGS variable found in /etc/mage.rc"  
 fi  
   
 if [ -z "${CXXFLAGS}" ]  
 then  
  die "no CXXFLAGS variable found in /etc/mage.rc"  
895  fi  fi
896    
897    [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
898    [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
899     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
900    [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your mage.rc correctly."
901    [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."
902    [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."
903    [ -z "${BINDIR}" ] && die "no BINDIR variable found in /etc/mage.rc"
904    [ -z "${CHOST}" ] && die "no CHOST variable found in /etc/mage.rc"
905    [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in /etc/mage.rc"
906    [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in /etc/mage.rc"
907    
908  source ${SMAGENAME} || die "source failed"  source ${SMAGENAME} || die "source failed"
909  PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"  PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}"
910  MD5DIR="$(dirname ${SMAGENAME})/md5"  MD5DIR="$(dirname ${SMAGENAME})/md5"
911    
912  xtitle "Compiling ${PKGNAME}"  xtitle "Compiling ${PKGNAME}"
913  echo "Compiling ${PKGNAME}"  echo "Compiling ${PKGNAME}"
914    
915  #download sources  # auto regen mage tree if requested
916    regen_mage_tree
917    
918    # download sources
919  download_sources  download_sources
920    
921  #fixes some issues with these functions  # fixes some issues with these functions
922  export -f src_prepare || die "src_prepare export failed"  export -f src_prepare || die "src_prepare export failed"
923  export -f src_compile || die "src_compile export failed"  export -f src_compile || die "src_compile export failed"
924  export -f src_install || die "src_install export failed"  export -f src_install || die "src_install export failed"
925    
926  #fixes some compile issues  # fixes some compile issues
927  export CHOST="${CHOST}" || die "CHOST export failed"  export CHOST="${CHOST}" || die "CHOST export failed"
928  export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"  export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
929  export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"  export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
# Line 577  export BINDIR="${BINDIR}" || die "BINDIR Line 931  export BINDIR="${BINDIR}" || die "BINDIR
931  export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"  export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
932    
933    
934  #setup distcc  # setup distcc
935  #distcc mus be setup *before* ccache, as ccache need to be before distcc in path  # distcc mus be setup *before* ccache, as ccache need to be before distcc in path
936  if [ "${SMAGE_USE_DISTCC}" == "true" ]  [[ ${SMAGE_USE_DISTCC} = true ]] && setup_distcc_environment
 then  
  setup_distcc_environment  
 fi  
   
 #setup ccache  
 if [ "${SMAGE_USE_CCACHE}" == "true" ]  
 then  
  setup_ccache_environment  
 fi  
937    
938    # setup ccache
939    [[ ${SMAGE_USE_CCACHE} = true ]] && setup_ccache_environment
940    
941  # small sleep to show our settings  # small sleep to show our settings
942  sleep 1  sleep 1
# Line 605  sleep 1 Line 952  sleep 1
952  #read  #read
953  #debug end  #debug end
954    
955  #cleans up build if a previously one exists  # cleans up build if a previously one exists
956  if [ -d ${BUILDDIR} ]  if [ -d ${BUILDDIR} ]
957  then  then
958   rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."   rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
959  fi  fi
960  install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."  install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
961    
962  #cleans up srcdir if a previously unpacked one exists  # cleans up srcdir if a previously unpacked one exists
963  if [ -d ${SRCDIR} ]  if [ -d ${SRCDIR} ]
964  then  then
965   rm -rf ${SRCDIR}   rm -rf ${SRCDIR}
966  fi  fi
967    
968  #cleans up bindir if a previous build exists or creates a new one  # cleans up bindir if a previous build exists or creates a new one
969  if [ -d ${BINDIR} ]  if [ -d ${BINDIR} ]
970  then  then
971   rm -rf ${BINDIR}   rm -rf ${BINDIR}
972  fi  fi
973  install -d ${BINDIR} || die "couldn't create \$BINDIR."  install -d ${BINDIR} || die "couldn't create \$BINDIR."
974    
975  #cleans up package temp dir if a previous build exists  # cleans up package temp dir if a previous build exists
976  if [ -d ${BUILDDIR}/${PKGNAME} ]  if [ -d ${BUILDDIR}/${PKGNAME} ]
977  then  then
978   rm -rf ${BUILDDIR}/${PKGNAME}   rm -rf ${BUILDDIR}/${PKGNAME}
979  fi  fi
980    
981  #cleans up timestamp if one exists  # cleans up timestamp if one exists
982  if [ -f /var/tmp/timestamp ]  if [ -f /var/tmp/timestamp ]
983  then  then
984   mage rmstamp   mage rmstamp
# Line 642  src_compile || die "src_compile failed" Line 989  src_compile || die "src_compile failed"
989  src_install || die "src_install failed"  src_install || die "src_install failed"
990    
991    
992  #compressing doc, info & man files  # compressing doc, info & man files
993  echo -e "Compressing man-pages ..."  echo -e "Compressing man-pages ..."
994  if [ -d ${BUILDDIR}/builded/usr/share/man ]  if [ -d ${BUILDDIR}/builded/usr/share/man ]
995  then  then
# Line 668  case ${NOSTRIP} in Line 1015  case ${NOSTRIP} in
1015   ;;   ;;
1016  esac  esac
1017    
1018  #the new buildpkg command  # the new buildpkg command
1019  case ${NOPKGBUILD} in  case ${NOPKGBUILD} in
1020   true|TRUE|yes|y)   true|TRUE|yes|y)
1021   echo -e "NOPGKBUILD=true detected; Package will not be build ..."   echo -e "NOPGKBUILD=true detected; Package will not be build ..."
1022   ;;   ;;
1023   *)   *)
1024   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"   # build several targets
1025   echo -e "\nPackage ${PKGNAME} successfully builded.\n"   if [ -n "${MAGE_TARGETS}" ]
1026     then
1027     for target in ${MAGE_TARGETS}
1028     do
1029     # check if an special target_pkgbuild exists
1030     if typeset -f ${target}_pkgbuild > /dev/null
1031     then
1032     # run it
1033     ${target}_pkgbuild
1034     fi
1035     # now create the target package
1036     ${MLIBDIR}/pkgbuild_dir.sh \
1037     "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \
1038     ${BINDIR} || die "target: ${target} package-build failed"
1039    
1040     # build pkg-md5-sum if requested
1041     generate_package_md5sum \
1042     --pcat "${PCATEGORIE}" \
1043     --pname "${PNAME}" \
1044     --pver "${PVER}" \
1045     --pbuild "${PBUILD}" \
1046     --parch "${ARCH}" \
1047     --target "${target}"
1048    
1049     echo -e "\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n"
1050     done
1051     else
1052     ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
1053    
1054     # build pkg-md5-sum if requested
1055     generate_package_md5sum \
1056     --pcat "${PCATEGORIE}" \
1057     --pname "${PNAME}" \
1058     --pver "${PVER}" \
1059     --pbuild "${PBUILD}" \
1060     --parch "${ARCH}"
1061    
1062     echo -e "\nPackage ${PKGNAME} successfully builded.\n"
1063     fi
1064   ;;   ;;
1065  esac  esac
1066    
1067  #for sure  # for sure
1068  unset NOPKGBUILD  unset NOPKGBUILD
1069  unset NOSTRIP  unset NOSTRIP
1070    

Legend:
Removed from v.169  
changed lines
  Added in v.347