Magellan Linux

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

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

revision 40 by niro, Thu Jan 6 23:28:28 2005 UTC revision 881 by niro, Mon Jun 29 18:56:32 2009 UTC
# Line 4  Line 4 
4  # needs pkgbuild_dir (mage)  # needs pkgbuild_dir (mage)
5    
6  # SMAGE2  # SMAGE2
7  # version: 0.3.6-r10  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.62 2007-11-28 10:47:50 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    # set default user mage.rc
14    : ${MAGERC="/etc/mage.rc"}
15    
16  ## setup ##  ## setup ##
 SMAGEVERSION=0.3.6-r10  
17  PKGSUFFIX="mpk"  PKGSUFFIX="mpk"
18    SRCPKGSUFFIX="mpks"
19  SMAGENAME="$1"  SMAGENAME="$1"
20  SMAGESUFFIX="smage2"  SMAGESUFFIX="smage2"
 #SOURCEDIR="/bootstrap/sources"  
 #SMAGESCRIPTSDIR="/bootstrap/smage2-install-scripts"  
 #SMAGE2RSYNC="rsync://192.168.0.2/smage2-scripts"  
21  MLIBDIR=/usr/lib/mage  MLIBDIR=/usr/lib/mage
22    SMAGEVERSION="$( < ${MLIBDIR}/version)"
23    SMAGE_LOG_CMD="tee -a /var/log/smage/${PKGNAME}.log"
24    
25    
26    ## only for tests -> normally in /etc/rc.d/init.d/functions
27    COLRED="\033[1;6m\033[31m"
28    COLGREEN="\033[1;6m\033[32m"
29    COLYELLOW="\033[1;6m\033[33m"
30    COLBLUE="\033[1;6m\033[34m"
31    COLMAGENTA="\033[1;6m\033[35m"
32    COLWHITE="\033[1;6m\033[37m"
33    COLGRAY="\033[0;6m\033[37m"
34    COLBOLD="\033[1m"
35    COLDEFAULT="\033[0m"
36    
37    if [[ ${NOCOLORS} = true ]]
38    then
39     COLRED=""
40     COLGREEN=""
41     COLYELLOW=""
42     COLBLUE=""
43     COLMAGENTA=""
44     COLWHITE=""
45     COLGRAY=""
46     COLBOLD=""
47     COLDEFAULT=""
48    fi
49    
50    # export default C locale
51    export LC_ALL=C
52    
53    source /etc/mage.rc.global
54    source ${MAGERC}
55    
56  source /etc/mage.rc  # set PKGDIR and BUILDDIR and BINDIR to MROOT
57    if [[ -n ${MROOT} ]]
58    then
59     export PKGDIR=${MROOT}/${PKGDIR}
60     export BUILDDIR=${MROOT}/${BUILDDIR}
61     export BINDIR=${MROOT}/${BINDIR}
62    fi
63    
64  showversion() {  showversion()
65    {
66   echo -en "Magellan Source Install v${SMAGEVERSION} "   echo -en "Magellan Source Install v${SMAGEVERSION} "
67   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"   echo -e  "-- Niels Rogalla (niro@magellan-linux.de)"
68  }  }
69    
70  die() {  die()
71    {
72   xtitleclean   xtitleclean
73     echo -e ${COLRED}"Exited ${BASH_SOURCE} at line no ${BASH_LINENO}."${COLDEFAULT}
74   echo "SMAGE failed: $@"   echo "SMAGE failed: $@"
75   exit 1   exit 1
76  }  }
77    
78  xtitle() {  xtitle()
79   if [ ${TERM} == "xterm" ]  {
80     if [[ ${TERM} = xterm ]]
81   then   then
82   echo -ne "\033]0;[sMage: $@]\007"   echo -ne "\033]0;[sMage: $@]\007"
83   fi   fi
84   return 0   return 0
85  }  }
86    
87  xtitleclean() {  xtitleclean()
88   if [ ${TERM} == "xterm" ]  {
89     if [[ ${TERM} = xterm ]]
90   then   then
91   echo -ne "\033]0;\007"   echo -ne "\033]0;\007"
92   fi   fi
93   return 0   return 0
94  }  }
95    
96  syncsmage2() {  syncsmage2()
97    {
98   xtitle "Updating smage2-script tree ..."   xtitle "Updating smage2-script tree ..."
99   local i   local i
100   for i in ${SMAGE2RSYNC}   for i in ${SMAGE2RSYNC}
101   do   do
102   rsync \   rsync ${RSYNC_FETCH_OPTIONS} ${i} ${SMAGESCRIPTSDIR}
103   --recursive \   if [[ $? = 0 ]]
  --links \  
  --perms \  
  --times \  
  --devices \  
  --timeout=600 \  
  --verbose \  
  --compress \  
  --progress \  
  --stats \  
  --delete \  
  --delete-after \  
  ${i} ${SMAGESCRIPTSDIR}  
   
  if [ "$?" == "0" ]  
104   then   then
105   break   break
106   else   else
107   continue   continue
108   fi   fi
   
109   done   done
110    
111   #clean up backup files (foo~)   # clean up backup files (foo~)
112   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
113    
114   xtitleclean   xtitleclean
115  }  }
116    
117    # $1 filename
118    get_db_md5_sum()
119    {
120     local DB_FILE
121     local MD5_FILE
122     local i
123    
124     DB_ENTRY="$(basename $1)"
125     MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} ${SMAGESUFFIX})"
126    
127     i="$(cat ${MD5_FILE}| grep ${DB_ENTRY} | cut -d' ' -f1)"
128    
129     echo "${i}"
130    }
131    
132    download_sources()
133    {
134    
135     [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
136    
137     local EOA=${#SRC_URI[*]}
138     local my_SRC_URI
139     local my_SRC_URI_DEST
140     local my_SRC_URI_MIRROR
141     local my_SOURCEDIR
142     local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
143     local FETCHING
144     local i mirror
145    
146    
147     # install SRCDIR/PNAME if not exist
148     [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}
149    
150     # check if FETCHING is needed
151     ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )
152     if [[ $? = 0 ]]
153     then
154     # md5's ok, no fetching needed
155     FETCHING=false
156     else
157     FETCHING=true
158     fi
159    
160     for ((i=0; i < EOA; i++))
161     do
162     # url to file
163     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
164    
165     # subdir in sources dir; the my_SRCI_URI file goes to there
166     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
167    
168     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
169     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
170     then
171     my_SOURCEDIR="${SOURCEDIR}/${PNAME}/${my_SRC_URI_DEST}"
172     else
173     my_SOURCEDIR="${SOURCEDIR}/${PNAME}"
174     fi
175    
176     # if an mirrored file than replace first the mirror uri
177     if [[ -n $(echo ${my_SRC_URI} | grep 'mirror://') ]]
178     then
179     for mirror in ${MIRRORS}
180     do
181     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"
182    
183     if [[ ${FETCHING} = true ]]
184     then
185     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
186     wget \
187     --passive-ftp \
188     --tries 3 \
189     --continue \
190     --progress bar \
191     --directory-prefix="${my_SOURCEDIR}" \
192     --output-document="$(basename ${my_SRC_URI_MIRROR})" \
193     "${my_SRC_URI_MIRROR}"
194     if [[ $? = 0 ]]
195     then
196     break
197     else
198     continue
199     fi
200     fi
201     done
202     elif [[ -n $(echo ${my_SRC_URI} | grep 'sourceforge://') ]]
203     then
204     for mirror in ${SOURCEFORGE_MIRRORS}
205     do
206     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|sourceforge:/|${mirror}|g")"
207    
208     if [[ ${FETCHING} = true ]]
209     then
210     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
211     wget \
212     --passive-ftp \
213     --tries 3 \
214     --continue \
215     --progress bar \
216     --directory-prefix="${my_SOURCEDIR}" \
217     --output-document="$(basename ${my_SRC_URI_MIRROR})" \
218     "${my_SRC_URI_MIRROR}"
219     if [[ $? = 0 ]]
220     then
221     break
222     else
223     continue
224     fi
225     fi
226     done
227     elif [[ -n $(echo ${my_SRC_URI} | grep 'gnu://') ]]
228     then
229     for mirror in ${GNU_MIRRORS}
230     do
231     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|gnu:/|${mirror}|g")"
232    
233     if [[ ${FETCHING} = true ]]
234     then
235     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
236     wget \
237     --passive-ftp \
238     --tries 3 \
239     --continue \
240     --progress bar \
241     --directory-prefix="${my_SOURCEDIR}" \
242     --output-document="$(basename ${my_SRC_URI_MIRROR})" \
243     "${my_SRC_URI_MIRROR}"
244     if [[ $? = 0 ]]
245     then
246     break
247     else
248     continue
249     fi
250     fi
251     done
252     elif [[ -n $(echo ${my_SRC_URI} | grep 'kde://') ]]
253     then
254     for mirror in ${KDE_MIRRORS}
255     do
256     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|kde:/|${mirror}|g")"
257    
258     if [[ ${FETCHING} = true ]]
259     then
260     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
261     wget \
262     --passive-ftp \
263     --tries 3 \
264     --continue \
265     --progress bar \
266     --directory-prefix="${my_SOURCEDIR}" \
267     --output-document="$(basename ${my_SRC_URI_MIRROR})" \
268     "${my_SRC_URI_MIRROR}"
269     if [[ $? = 0 ]]
270     then
271     break
272     else
273     continue
274     fi
275     fi
276     done
277     elif [[ -n $(echo ${my_SRC_URI} | grep 'gnome://') ]]
278     then
279     for mirror in ${GNOME_MIRRORS}
280     do
281     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|gnome:/|${mirror}|g")"
282    
283     if [[ ${FETCHING} = true ]]
284     then
285     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
286     wget \
287     --passive-ftp \
288     --tries 3 \
289     --continue \
290     --progress bar \
291     --directory-prefix="${my_SOURCEDIR}" \
292     --output-document="$(basename ${my_SRC_URI_MIRROR})" \
293     "${my_SRC_URI_MIRROR}"
294     if [[ $? = 0 ]]
295     then
296     break
297     else
298     continue
299     fi
300     fi
301     done
302     else
303     if [[ ${FETCHING} = true ]]
304     then
305     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI}${COLDEFAULT}"
306     wget \
307     --passive-ftp \
308     --tries 3 \
309     --continue \
310     --progress bar \
311     --directory-prefix="${my_SOURCEDIR}" \
312     --output-document="$(basename ${my_SRC_URI_MIRROR})" \
313     "${my_SRC_URI}"
314     fi
315     fi
316    
317     # unset them to be shure
318     unset my_SRC_URI
319     unset my_SRC_URI_DEST
320     unset my_SRC_URI_MIRROR
321     unset my_SOURCEDIR
322     done
323    
324     # recheck md5 sums
325     echo
326     echo -e "${COLBLUE}===${COLGREEN} Checking MD5 sums:${COLDEFAULT}"
327     ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed"
328     echo
329    
330     # not needed anymore
331     unset SRC_URI
332    }
333    
334  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
335  src_prepare() {  src_prepare()
336    {
337   echo "no src_prepare defined"   echo "no src_prepare defined"
338   sleep 2   sleep 2
339   return 0   return 0
340  }  }
341    
342  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
343  src_compile() {  src_compile()
344    {
345   echo "no src_compile defined"   echo "no src_compile defined"
346   sleep 2   sleep 2
347   return 0   return 0
348  }  }
349    
350  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
351  src_install() {  src_install()
352    {
353   echo "no src_install defined"   echo "no src_install defined"
354   sleep 2   sleep 2
355   return 0   return 0
356  }  }
357    
358    mlibdir()
359    {
360     local libdir=lib
361     [[ ${ARCH} = x86_64 ]] && libdir=lib64
362    
363  build_mage_script() {   echo "${libdir}"
  return 0  
364  }  }
365    
366  mconfigure() {  mconfigure()
367    {
368   if [ -x ./configure ]   if [ -x ./configure ]
369   then   then
370   ./configure \   ./configure \
371   --prefix=/usr \   --prefix=/usr \
372   --host=${CHOST} \   --host=${CHOST} \
373   --mandir=/usr/share/man \   --build=${CHOST} \
374   --infodir=/usr/share/info \   --mandir=/usr/share/man \
375   --datadir=/usr/share \   --infodir=/usr/share/info \
376   --sysconfdir=/etc \   --datadir=/usr/share \
377   --localstatedir=/var/lib \   --sysconfdir=/etc \
378   "$@" || die "mconfigure failed"   --localstatedir=/var/lib \
379     --libdir=/usr/$(mlibdir) \
380     "$@" || die "mconfigure failed"
381   else   else
382   echo "configure is not an executable ..."   echo "configure is not an executable ..."
383   exit 1   exit 1
384   fi   fi
385  }  }
386    
387  minstall() {  minstall()
388   if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then  {
389     if [ -f ./[mM]akefile -o -f ./GNUmakefile ]
390     then
391   make prefix=${BINDIR}/usr \   make prefix=${BINDIR}/usr \
392   datadir=${BINDIR}/usr/share \   datadir=${BINDIR}/usr/share \
393   infodir=${BINDIR}/usr/share/info \   infodir=${BINDIR}/usr/share/info \
394   localstatedir=${BINDIR}/var/lib \   localstatedir=${BINDIR}/var/lib \
395   mandir=${BINDIR}/usr/share/man \   mandir=${BINDIR}/usr/share/man \
396   sysconfdir=${BINDIR}/etc \   sysconfdir=${BINDIR}/etc \
397     libdir=${BINDIR}/usr/$(mlibdir) \
398   "$@" install || die "minstall failed"   "$@" install || die "minstall failed"
399          else          else
400                  die "no Makefile found"                  die "no Makefile found"
401          fi          fi
402  }  }
403    
404  mmake() {  mmake()
405    {
406   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
407  }  }
408    
409  munpack() {  munpack()
410    {
411   local SRCFILE   local SRCFILE
412   local IFTAR   local IFTAR
413   local DEST   local DEST
414    
415   SRCFILE=$1   SRCFILE=$1
416    
417   if [ -z "$2" ]   if [[ -z $2 ]]
418   then   then
419   DEST=${BUILDDIR}   DEST=${BUILDDIR}
420   else   else
421   DEST=$2   DEST=$2
422   fi   fi
423    
424     [[ ! -d ${DEST} ]] && install -d ${DEST}
425    
426   case "${SRCFILE##*.}" in   case "${SRCFILE##*.}" in
427   bz2)   bz2)
428   IFTAR="$(basename $SRCFILE .bz2)"   IFTAR="$(basename $SRCFILE .bz2)"
429   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
430   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
431   then   then
432   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.bz2 unpack failed."
433     else
434     pushd ${DEST} > /dev/null
435     bzcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .bz2) || die ".bz2 unpack failed."
436     popd > /dev/null
437   fi   fi
438   ;;   ;;
439   gz)   gz)
440   IFTAR="$(basename $SRCFILE .gz)"   IFTAR="$(basename $SRCFILE .gz)"
441   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
442   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
443   then   then
444   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tar.gz unpack failed."
445     else
446     pushd ${DEST} > /dev/null
447     zcat ${SOURCEDIR}/${PNAME}/${SRCFILE} > ${DEST}/$(basename ${SRCFILE} .gz) || die ".gz unpack failed."
448     popd > /dev/null
449   fi   fi
450   ;;   ;;
451   tbz2)   tbz2|mpks|mpk)
452   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tbz2 unpack failed."
453   ;;   ;;
454   tgz)   tgz)
455   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST} || die ".tgz unpack failed."
456     ;;
457     rar)
458     unrar x ${SOURCEDIR}/${PNAME}/${SRCFILE} ${DEST}  || die ".rar unpack failed."
459     ;;
460     zip|xpi)
461     unzip ${SOURCEDIR}/${PNAME}/${SRCFILE} -d ${DEST} || die ".zip unpack failed."
462     ;;
463     rpm)
464     pushd ${DEST} > /dev/null
465     rpm2targz ${SOURCEDIR}/${PNAME}/${SRCFILE} || die "rpm2targz: .rpm unpack failed."
466     tar --no-same-owner -xvzf ${SRCFILE/.rpm/.tar.gz} || die "tar: .rpm unpack failed."
467     if [[ -f ${DEST}/${SRCFILE/.rpm/.tar.gz} ]]
468     then
469     rm ${DEST}/${SRCFILE/.rpm/.tar.gz}
470     fi
471   ;;   ;;
472   *)   *)
473   die "munpack failed"   die "munpack failed"
# Line 189  munpack() { Line 475  munpack() {
475   esac   esac
476  }  }
477    
478  mpatch() {  mpatch()
479    {
480   local PATCHOPTS   local PATCHOPTS
481   local PATCHFILE   local PATCHFILE
482     local i
483    
484   PATCHOPTS=$1   PATCHOPTS=$1
485   PATCHFILE=$2   PATCHFILE=$2
486    
487     if [[ -z $2 ]]
488     then
489     PATCHFILE=$1
490    
491     ## patch level auto-detection, get patch level
492     for ((i=0; i < 10; i++))
493     do
494     patch --dry-run -Np${i} -i ${SOURCEDIR}/${PNAME}/${PATCHFILE} > /dev/null
495     if [[ $? = 0 ]]
496     then
497     PATCHOPTS="-Np${i}"
498     break
499     fi
500     done
501     fi
502    
503     echo -e "${COLBLUE}*** ${COLGREEN}Applying patch '${PATCHFILE}'${COLDEFAULT}"
504   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
505  }  }
506    
507    mlibtoolize()
508    {
509     local opts="$@"
510     [[ -z ${opts} ]] && opts="--copy --force"
511    
512     libtoolize ${opts} || die "running: mlibtoolize ${opts}"
513    }
514    
515  minstalldocs() {  minstalldocs()
516    {
517   local docfiles   local docfiles
   
518   docfiles="$@"   docfiles="$@"
519    
520   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
521   then   then
522   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
523   fi   fi
524    
525   for i in ${docfiles}   for i in ${docfiles}
526   do   do
527   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
# Line 218  minstalldocs() { Line 530  minstalldocs() {
530   done   done
531  }  }
532    
533  setup_distcc_environment(){  mstriplibs()
534   if [ -x /usr/bin/distcc ]  {
535     local stripdir="$@"
536    
537     [ -z "${stripdir}" ] && stripdir=${BINDIR}
538     find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
539    }
540    
541    mstripbins()
542    {
543     local stripdir="$@"
544    
545     [ -z "${stripdir}" ] && stripdir=${BINDIR}
546     find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
547    }
548    
549    sminclude()
550    {
551     local i
552    
553     if [[ -n "$@" ]]
554   then   then
555   echo "Using DistCC for compilation ..."   for i in $@
556   export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"   do
557     echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
558     source ${SMAGESCRIPTSDIR}/include/${i}.sminc
559     done
560     echo
561     fi
562    }
563    
564   #export distcc as compiler  setup_distcc_environment()
565  # export CC="distcc"  {
566  # export CXX=distcc   if [ -x /usr/bin/distcc ]
567     then
568     echo -e "${COLBLUE}---${COLGREEN} Using DistCC for compilation ...${COLDEFAULT}"
569     export PATH=/usr/$(mlibdir)/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
570    
571   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
572    
573     # creating distcc tempdir
574     install -o distcc -g daemon -d ${DISTCC_DIR}
575     chmod 1777 ${DISTCC_DIR}
576     fi
577    }
578    
579   #ccache + distcc together  setup_ccache_environment()
580   if [ "${SMAGE_USE_CCACHE}" == "true" ]  {
581   then   if [ -x /usr/bin/ccache ]
582   if [ -x /usr/bin/ccache ]   then
583     echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"
584     export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
585     fi
586    }
587    
588    
589    # fixes given dependencies to match a MAGE_TARGET
590    # fix_mage_deps -target s/depend # <-- note -target !
591    fix_mage_deps()
592    {
593     local target="$1"
594     local depend="$2"
595     local NDEPEND
596     local sym dep cat pver pname
597    
598     # deps and provides are special
599     # they must be fixed to match the target
600    
601     # run this only if target and depend is not empty
602     if [ -n "${target}" ] && [ -n "${depend}" ]
603     then
604     # fix DEPEND
605     while read sym dep
606     do
607     # ignore empty lines
608     [[ -z ${dep} ]] && continue
609    
610     cat="$(dirname ${dep})"
611     # change if not virtual
612     if [[ ${cat} = virtual ]]
613   then   then
614   echo "Preparing DistCC to work together with CCache ..."   pname="$(basename ${dep})"
615   #export CCACHE_PREFIX="distcc" || die "distcc: could not set ccach_prefix"   else
616  # export CC="ccache distcc"   # fix pver to target-pver
617  # export CXX="ccache distcc"   # to get pname-target-pver
618    
619     # doing it backwards !
620     pver="${dep##*-}"
621     # full pver
622     pname="$(basename ${dep/-${pver}/})${target}-${pver}"
623   fi   fi
624    
625     # do not add empty lines
626     if [ -z "${NDEPEND}" ]
627     then
628     NDEPEND="${sym} ${cat}/${pname}"
629     else
630     NDEPEND="${NDEPEND}
631     ${sym} ${cat}/${pname}"
632     fi
633    
634     unset cat pname pver
635     done << EOF
636    ${depend}
637    EOF
638     # set NDEPEND to DEPEND
639     depend="${NDEPEND}"
640     fi
641    
642     echo "${depend}"
643    }
644    
645    # build_mage_script(): helper functions for regen_mage_tree()
646    # generates an mage file with given information in smage file
647    # needs at least:
648    #   PNAME                 name of pkg
649    #   PVER                  version
650    #   PBUILD                revision
651    #   PCATEGORIE            categorie of the pkg
652    #   STATE                 state of pkg stable|unstable|old
653    #   DESCRIPTION           va short description (opt)
654    #   HOMEPAGE              homepage (opt)
655    #   DEPEND                runtime dependencies (opt)
656    #   SDEPEND               add. needed deps to build the pkg (opt)
657    #   PROVIDE               provides a virtual (opt)
658    #
659    # special tags:
660    #   PKGTYPE               type of pkg
661    #   INHERITS              which functions get included
662    #   SPECIAL_FUNCTIONS     special functions which should also be added
663    #                         warning: they get killed before the build starts !
664    #
665    #   MAGE_TREE_DEST        target destination of the generated tree
666    #   REGEN_MAGE_TREE       set to 'true' to enable this
667    #
668    # gets called with build_mage_script target
669    build_mage_script()
670    {
671     local magefile
672     local dest
673     local target
674     local sym
675     local depname
676    
677     # if MAGE_TREE_DEST not set use BUILDDIR
678     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
679    
680     # determinate which suffix this mage file should get, if any
681     [ -n "$1" ] && target="-$1"
682    
683     # name of magefile
684     magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"
685    
686     # destination to magefile
687     dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"
688    
689     # show what we are doing
690     echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"
691     echo "${dest}"
692    
693     install -d "$(dirname ${dest})"
694     # now build the mage file
695     > ${dest}
696    
697     # header
698     echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.62 2007-11-28 10:47:50 niro Exp $' >> ${dest}
699     echo  >> ${dest}
700    
701     # pgkname and state
702     echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest}
703     echo "STATE=\"${STATE}\"" >> ${dest}
704     echo >> ${dest}
705    
706     # description and homepage
707     echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest}
708     echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest}
709     echo >> ${dest}
710    
711     # special tags and vars
712     echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}
713    
714     # echo MAGE_TARGETS ## note -target is needed !
715     echo "MAGE_TARGETS=\"${target}\"" >> ${dest}
716     echo >> ${dest}
717    
718     # add special vars
719     if [ -n "${SPECIAL_VARS}" ]
720     then
721     local i
722     for i in ${SPECIAL_VARS}
723     do
724     # being tricky here :)
725     echo "${i}=\"$(eval echo \$${i})\"" >> ${dest}
726     done
727     echo  >> ${dest}
728     fi
729    
730     # add at least all includes
731     if [ -n "${INHERITS}" ]
732     then
733     echo -n "minclude"  >> ${dest}
734     local i
735     for i in ${INHERITS}
736     do
737     echo -n " ${i}"  >> ${dest}
738     done
739     echo  >> ${dest}
740     fi
741     echo >> ${dest}
742    
743     # deps and provides
744     echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}
745     echo >> ${dest}
746     echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}
747     echo >> ${dest}
748     echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
749     echo >> ${dest}
750    
751     # add special functions
752     if [ -n "${SPECIAL_FUNCTIONS}" ]
753     then
754     local i
755     for i in ${SPECIAL_FUNCTIONS}
756     do
757     # add to mage (quotes needed !)
758     typeset -f "${i}" >> ${dest}
759     echo >> ${dest}
760     # unset to be safe (quotes needed !)
761     #unset "${i}" <-- later to get every target built
762     done
763     echo  >> ${dest}
764     fi
765    
766     # pre|post-install|removes
767     typeset -f preinstall >> ${dest}
768     echo  >> ${dest}
769     typeset -f postinstall >> ${dest}
770     echo  >> ${dest}
771     typeset -f preremove >> ${dest}
772     echo  >> ${dest}
773     typeset -f postremove >> ${dest}
774     echo  >> ${dest}
775    }
776    
777    regen_mage_tree()
778    {
779     local i
780    
781     # build them only if requested
782     if [[ ${REGEN_MAGE_TREE} = true ]]
783     then
784     # run it without targets
785     if [ -z "${MAGE_TARGETS}" ]
786     then
787     echo
788     build_mage_script
789     echo
790     else
791    
792     # build for each target an mage file
793     # run it with several targets
794     for i in ${MAGE_TARGETS}
795     do
796     echo
797     build_mage_script "${i}"
798     echo
799     done
800   fi   fi
801     fi
802    
803   #creating distcc tempdir   # now unset all uneeded vars to be safe
804   install -o distcc -g daemon -d ${DISTCC_DIR}   # unset PKGNAME <-- don't do that; smage needs this var
805   chmod 1777 ${DISTCC_DIR}   # unset to be safe (quotes needed !)
806    # for i in ${SPECIAL_FUNCTIONS}
807    # do
808    # unset "${i}"
809    # done
810     unset SPECIAL_FUNCTIONS
811    # for i in ${SPECIAL_VARS}
812    # do
813    # unset "${i}"
814    # done
815     unset SPECIAL_VARS
816     unset STATE
817     unset DESCRIPTION
818     unset HOMEPAGE
819     unset PKGTYPE
820     unset INHERITS
821     unset DEPEND
822     unset SDEPEND
823     unset PROVIDE
824     unset preinstall
825     unset postinstall
826     unset preremove
827     unset postremove
828    }
829    
830    export_inherits()
831    {
832     local include="$1"
833     shift
834    
835     while [ "$1" ]
836     do
837     local functions="$1"
838    
839     # sanity checks
840     [ -z "${include}" ] && die "export_inherits(): \$include not given."
841     [ -z "${functions}" ] && die "export_inherits(): \$functions not given."
842    
843     eval "${functions}() { ${include}_${functions} ; }"
844    
845     # debug
846     [[ ${MAGEDEBUG} = on ]] && typeset -f "${functions}"
847    
848     shift
849     done
850    }
851    
852    generate_package_md5sum()
853    {
854     local dest
855     local pcat
856     local pname
857     local pver
858     local pbuild
859     local parch
860     local target
861     local pkgname
862    
863     # very basic getops
864     for i in $*
865     do
866     case $1 in
867     --pcat|-c) shift; pcat="$1" ;;
868     --pname|-n) shift; pname="$1" ;;
869     --pver|-v) shift; pver="$1" ;;
870     --pbuild|-b) shift; pbuild="$1" ;;
871     --parch|a) shift; parch="$1" ;;
872     --target|t) shift; target="$1" ;;
873     esac
874     shift
875     done
876    
877     # sanity checks; abort if not given
878     [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given."
879     [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given."
880     [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given."
881     [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given."
882     [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given."
883    
884     # check needed global vars
885     [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
886     [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
887    
888     # fix target as it may be empty !
889     [ -n "${target}" ] && target="-${target}"
890    
891     # build pkgname
892     pkgname="${pname}${target}-${pver}-${parch}-${pbuild}"
893    
894     # build pkg-md5-sum only if requested
895     if [[ ${REGEN_MAGE_TREE} = true ]]
896     then
897     echo -ne "${COLBLUE}===${COLGREEN} generating md5's for ${pkgname}.${PKGSUFFIX} ... ${COLDEFAULT}"
898    
899     # abort if not exist
900     if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ]
901     then
902     echo -e "${COLRED}! exists${COLDEFAULT}"
903     return 0
904     fi
905    
906     # if MAGE_TREE_DEST not set use BUILDDIR
907     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
908    
909     # setup md5 dir
910     dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
911     install -d ${dest}
912    
913     # gen md5sum
914     ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \
915     > ${dest}/${pkgname}.md5
916     echo -e "${COLGREEN}done${COLDEFAULT}"
917   fi   fi
918  }  }
919    
920  setup_ccache_environment(){  source_pkg_build()
921   if [ -x /usr/bin/ccache ]  {
922     if [[ ${PKGTYPE} = virtual ]]
923     then
924     echo "Virtual package detected; src-pkg-tarball not necessary ..."
925     return 0
926     fi
927    
928     if [[ ! -d ${SOURCEDIR}/${PNAME} ]]
929     then
930     echo "No SRC_URI defined; src-pkg-tarball not necessary ..."
931     return 0
932     fi
933    
934     [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly."
935    
936     echo -e "${COLGREEN}Creating source package tarball ... ${COLDEFAULT}"
937    
938     # include the smage2 file
939     cp ${SMAGENAME} ${SOURCEDIR}/${PNAME}
940    
941     ( cd ${SOURCEDIR}; tar cvjf ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${PNAME}; )
942     [[ ! -d ${SRCPKGDIR} ]] && install -d ${SRCPKGDIR}
943     mv ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${SRCPKGDIR}/${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}
944    
945     echo -e "${COLGREEN}Source package ${COLBLUE}${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ${COLGREEN}successfully builded.${COLDEFAULT}"
946    }
947    
948    step_by_step()
949    {
950     if [[ ${STEP_BY_STEP} = true ]]
951   then   then
952   echo "Using CCache for compilation ..."   echo "${COLRED}Step-by-step enabled! Paused after $1.${COLDEFAULT}"
953   export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"   echo "Press [enter] to continue"
954   #unset CC CXX   read
955   fi   fi
956  }  }
957    
958    
959    # print out our version
960    showversion
961    echo
962    
963  if [ -z "$1" ]  if [ -z "$1" ]
964  then  then
  showversion  
  echo  
965   echo "No .smage2 file given. Exiting."   echo "No .smage2 file given. Exiting."
966   echo   echo
967   exit 1   exit 1
968  fi  fi
969    
970  #updating smage2-scripts  # updating smage2-scripts
971  if [ "$1" == "update" ]  if [[ $1 = update ]]
972  then  then
973   showversion   if [ ! -d ${SOURCEDIR} ]
  if [ ! -d ${SMAGESCRIPTSDIR} ]  
974   then   then
975   install -d ${SMAGESCRIPTSDIR}   install -d ${SOURCEDIR}
976   fi   fi
977   syncsmage2   syncsmage2
978   exit 0   exit 0
979  fi  fi
980    
981    # creates md5sums for smages to given dir
982  if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]  if [[ $1 = calcmd5 ]]
983  then  then
984   die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."   if [ $# -ge 3 ]
985  fi   then
986     SMAGENAME="$2"
987     MD5DIR="$3"
988     source ${SMAGENAME} || die "download source failed"
989    
990  if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]   # overridable sourcedir; must be declared after source of the smage2
991  then   CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"
  die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."  
 fi  
992    
993  if [ -z "${SOURCEDIR}" ]   [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."
 then  
  die "\$SOURCEDIR not found. Please setup your mage.rc correctly."  
 fi  
994    
995  if [ -z "${SMAGESCRIPTSDIR}" ]   # end of array
996  then   EOA=${#SRC_URI[*]}
  die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."  
 fi  
997    
998  if [ -z "${SMAGE2RSYNC}" ]   [ ! -d ${MD5DIR} ] && install -d ${MD5DIR}
999  then  
1000   echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."   # clear md5sum file
1001   exit 1   MY_MD5_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
1002     echo -n > ${MY_MD5_FILE}
1003    
1004     for ((i=0; i < EOA; i++))
1005     do
1006     # url to file
1007     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
1008    
1009     # subdir in sources dir; the my_SRCI_URI file goes to there
1010     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
1011    
1012     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
1013     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
1014     then
1015     MY_SRC_FILE="${my_SRC_URI_DEST}/$(basename ${SRC_URI[${i}]})"
1016     else
1017     MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"
1018     fi
1019    
1020     if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]
1021     then
1022     echo "calculating $(basename ${MY_SRC_FILE}) ..."
1023     ( cd ${CALC_SOURCEDIR}; md5sum "${MY_SRC_FILE}" ) >> ${MY_MD5_FILE}
1024     else
1025     echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."
1026     fi
1027    
1028     # unset them to be shure
1029     unset my_SRC_URI
1030     unset my_SRC_URI_DEST
1031     unset my_SRC_URI_MIRROR
1032     unset my_SOURCEDIR
1033     done
1034    
1035     echo
1036     echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
1037     echo
1038     else
1039     echo "Usage: Calculating MD5 Sums:"
1040     echo "    $(basename $0) calcmd5 /path/to/SMAGENAME /path/to/MD5DIR"
1041     echo
1042     echo
1043     echo "Export the CALC_SOURCEDIR variable to override current SOURCEDIRs."
1044     echo
1045     exit 1
1046     fi
1047    
1048     exit 0
1049  fi  fi
1050    
1051  if [ -z "${BINDIR}" ]  # download sources
1052    if [ "$1" == "download" -a -n "$2" ]
1053  then  then
1054   die "no BINDIR variable found in /etc/mage.rc"   if [ ! -d ${SMAGESCRIPTSDIR} ]
1055     then
1056     install -d ${SMAGESCRIPTSDIR}
1057     fi
1058    
1059     # get smage
1060     SMAGENAME="$2"
1061     MD5DIR="$(dirname ${SMAGENAME})/md5"
1062     source ${SMAGENAME} || die "download source failed"
1063    
1064     download_sources
1065     exit 0
1066  fi  fi
1067    
1068  if [ -z "${CHOST}" ]  # regen-mage-tree
1069    if [ "$1" == "only-regen-tree" -a -n "$2" ]
1070  then  then
1071   die "no CHOST variable found in /etc/mage.rc"   # set correct SMAGENAME
1072     SMAGENAME="$2"
1073     MD5DIR="$(dirname ${SMAGENAME})/md5"
1074     source ${SMAGENAME} || die "regen: smage2 not found"
1075    
1076     regen_mage_tree
1077    
1078     # build md5sum for existing packages
1079     generate_package_md5sum \
1080     --pcat "${PCATEGORIE}" \
1081     --pname "${PNAME}" \
1082     --pver "${PVER}" \
1083     --pbuild "${PBUILD}" \
1084     --parch "${ARCH}" \
1085     --target "${target}"
1086    
1087     exit 0
1088  fi  fi
1089    
1090  if [ -z "${CFLAGS}" ]  if [ "$1" == "--create-src-tarball" -a -n "$2" ]
1091  then  then
1092   die "no CFLAGS variable found in /etc/mage.rc"   # set correct SMAGENAME
1093     SMAGENAME="$2"
1094     MD5DIR="$(dirname ${SMAGENAME})/md5"
1095    
1096     echo -e "${COLGREEN}create-src-tarball called for ${COLBLUE}${SMAGENAME}${COLGREEN} ...${COLDEFAULT}"
1097    
1098     source ${SMAGENAME} || die "regen: smage2 not found"
1099    
1100     if [[ -d ${SOURCEDIR}/${PNAME} ]]
1101     then
1102     echo -e "${COLGREEN}Deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1103     rm -rf ${SOURCEDIR}/${PKGNAME}
1104     fi
1105    
1106     download_sources
1107     source_pkg_build ${SMAGENAME}
1108     exit 0
1109  fi  fi
1110    
1111  if [ -z "${CXXFLAGS}" ]  if [ "$1" == "--src-tarball" -a -n "$2" ] || [ "$1" == "-st" -a -n "$2" ]
1112  then  then
1113   die "no CXXFLAGS variable found in /etc/mage.rc"   SRCPKGTARBALL="${2}"
1114     USE_SRC_PKG_TARBALL=true
1115    
1116     # abort if given file is not a source pkg
1117     [[ ${SRCPKGTARBALL##*.} != ${SRCPKGSUFFIX} ]] && die "${SRCPKGTARBALL} is not a valid src-pkg file."
1118    
1119     # set correct SMAGENAME; use the one that the src_pkg provide
1120     # /path/to/SOURCEDIR/PNAME/SMAGENAME
1121     SMAGENAME="${SOURCEDIR}/$(basename ${SRCPKGTARBALL%-*-*})/$(basename ${SRCPKGTARBALL} .${SRCPKGSUFFIX}).${SMAGESUFFIX}"
1122    
1123     echo -e "${COLGREEN}Using src-tarball ${COLBLUE}${SRCPKGTARBALL}${COLGREEN} ...${COLDEFAULT}"
1124    
1125     [[ ! -d ${SOURCEDIR} ]] && install -d ${SOURCEDIR}
1126    
1127     # unpack srctarball
1128     [[ ! -f ${SRCPKGTARBALL} ]] && die "Error: ${SRCPKGTARBALL} does not exist. Aborting."
1129    
1130     tar xvjf ${SRCPKGTARBALL} -C ${SOURCEDIR} || die  "Error unpackung src-tarball ${SRCPKGTARBALL}"
1131    
1132     [[ ! -f ${SMAGENAME} ]] && die "Included smage2 file in src-tarball not found: ${SMAGENAME}"
1133  fi  fi
1134    
1135    
1136    [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
1137    [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
1138     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
1139    [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your ${MAGERC} correctly."
1140    [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your ${MAGERC} correctly."
1141    [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your ${MAGERC} correctly."
1142    [ -z "${BINDIR}" ] && die "no BINDIR variable found in ${MAGERC}"
1143    [ -z "${CHOST}" ] && die "no CHOST variable found in ${MAGERC}"
1144    [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in ${MAGERC}"
1145    [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in ${MAGERC}"
1146    
1147  source ${SMAGENAME} || die "source failed"  source ${SMAGENAME} || die "source failed"
1148  PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"  PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}"
1149    MD5DIR="$(dirname ${SMAGENAME})/md5"
1150    
1151  xtitle "Compiling ${PKGNAME}"  xtitle "Compiling ${PKGNAME}"
1152  #fixes some issues with these functions  echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}"
1153    
1154    # auto regen mage tree if requested
1155    regen_mage_tree
1156    
1157    if [[ ${CREATE_SRC_PKG_TARBALL} = true ]]
1158    then
1159     if [[ -d ${SOURCEDIR}/${PNAME} ]]
1160     then
1161     echo -e "${COLBLUE}===${COLGREEN} deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1162     rm -rf ${SOURCEDIR}/${PNAME}
1163     fi
1164    fi
1165    
1166    # download sources
1167    [[ ${USE_SRC_PKG_TARBALL} != true ]] && download_sources
1168    
1169    # fixes some issues with these functions
1170  export -f src_prepare || die "src_prepare export failed"  export -f src_prepare || die "src_prepare export failed"
1171  export -f src_compile || die "src_compile export failed"  export -f src_compile || die "src_compile export failed"
1172  export -f src_install || die "src_install export failed"  export -f src_install || die "src_install export failed"
1173    
1174  #fixes some compile issues  # fixes some compile issues
1175  export CHOST="${CHOST}" || die "CHOST export failed"  export CHOST="${CHOST}" || die "CHOST export failed"
1176  export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"  export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
1177  export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"  export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
# Line 344  export BINDIR="${BINDIR}" || die "BINDIR Line 1179  export BINDIR="${BINDIR}" || die "BINDIR
1179  export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"  export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
1180    
1181    
1182  #setup distcc  # setup distcc
1183  #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
1184  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  
1185    
1186    # setup ccache
1187    [[ ${SMAGE_USE_CCACHE} = true ]] && setup_ccache_environment
1188    
1189  # small sleep to show our settings  # small sleep to show our settings
1190  sleep 1  sleep 1
1191    
1192  #debug  # cleans up build if a previously one exists
 #echo "CC=${CC}"  
 #echo "CXX=${CXX}"  
 #echo "DISTCC_DIR=${DISTCC_DIR}"  
 #echo "PATH: ${PATH}"  
 #echo "--------------------------------------"  
 #env  
 #echo "--------------------------------------"  
 #read  
 #debug end  
   
 #cleans up build if a previously one exists  
1193  if [ -d ${BUILDDIR} ]  if [ -d ${BUILDDIR} ]
1194  then  then
1195   rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."   rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
1196  fi  fi
1197  install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."  install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
1198    
1199  #cleans up srcdir if a previously unpacked one exists  # cleans up srcdir if a previously unpacked one exists
1200  if [ -d ${SRCDIR} ]  if [ -d ${SRCDIR} ]
1201  then  then
1202   rm -rf ${SRCDIR}   rm -rf ${SRCDIR}
1203  fi  fi
1204    
1205  #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
1206  if [ -d ${BINDIR} ]  if [ -d ${BINDIR} ]
1207  then  then
1208   rm -rf ${BINDIR}   rm -rf ${BINDIR}
1209  fi  fi
1210  install -d ${BINDIR} || die "couldn't create \$BINDIR."  install -d ${BINDIR} || die "couldn't create \$BINDIR."
1211    
1212  #cleans up package temp dir if a previous build exists  # cleans up package temp dir if a previous build exists
1213  if [ -d ${BUILDDIR}/${PKGNAME} ]  if [ -d ${BUILDDIR}/${PKGNAME} ]
1214  then  then
1215   rm -rf ${BUILDDIR}/${PKGNAME}   rm -rf ${BUILDDIR}/${PKGNAME}
1216  fi  fi
1217    
1218  #cleans up timestamp if one exists  # cleans up timestamp if one exists
1219  if [ -f /var/tmp/timestamp ]  if [ -f /var/tmp/timestamp ]
1220  then  then
1221   mage rmstamp   mage rmstamp
1222  fi  fi
1223    
1224  src_prepare || die "src_prepare failed"  # setup build loggins
1225  src_compile || die "src_compile failed"  [[ ! -d /var/log/smage ]] && install -d /var/log/smage
1226  src_install || die "src_install failed"  echo -e "### Build started on $(date) ###\n" > /var/log/smage/${PKGNAME}.log
1227    
1228    src_prepare || die "src_prepare failed" | ${SMAGE_LOG_CMD}
1229    step_by_step $_
1230    src_compile || die "src_compile failed" | ${SMAGE_LOG_CMD}
1231    step_by_step $_
1232    src_install || die "src_install failed" | ${SMAGE_LOG_CMD}
1233    step_by_step $_
1234    
1235    
1236  #compressing doc, info & man files  # compressing doc, info & man files
 echo -e "Compressing man-pages ..."  
1237  if [ -d ${BUILDDIR}/builded/usr/share/man ]  if [ -d ${BUILDDIR}/builded/usr/share/man ]
1238  then  then
1239     echo -e "${COLBLUE}===${COLGREEN} compressing man-pages ...${COLDEFAULT}"
1240   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man
1241  fi  fi
1242    
 echo -e "Compressing info-pages ..."  
1243  if [ -d ${BUILDDIR}/builded/usr/share/info ]  if [ -d ${BUILDDIR}/builded/usr/share/info ]
1244  then  then
1245     echo -e "${COLBLUE}===${COLGREEN} compressing info-pages ...${COLDEFAULT}"
1246   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info
1247  fi  fi
1248    
1249  #the new buildpkg command  # stripping all bins and libs
1250    case ${NOSTRIP} in
1251     true|TRUE|yes|y)
1252     echo -e "NOSTRIP=true detected; Package will not be stripped ..."
1253     ;;
1254     *)
1255     echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
1256     mstripbins ${BINDIR}
1257     echo -e "${COLBLUE}===${COLGREEN} stripping libraries ...${COLDEFAULT}"
1258     mstriplibs ${BINDIR}
1259     ;;
1260    esac
1261    
1262    # the new buildpkg command
1263  case ${NOPKGBUILD} in  case ${NOPKGBUILD} in
1264   true|TRUE|yes|y)   true|TRUE|yes|y)
1265   echo -e "NOPGKBUILD=true detected; Package will not be build ..."   echo -e "NOPGKBUILD=true detected; Package will not be build ..."
1266   ;;   ;;
1267   *)   *)
1268   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"   # build several targets
1269   echo -e "\nPackage ${PKGNAME} successfully builded.\n"   if [ -n "${MAGE_TARGETS}" ]
1270     then
1271     for target in ${MAGE_TARGETS}
1272     do
1273     # check if an special target_pkgbuild exists
1274     if typeset -f ${target}_pkgbuild > /dev/null
1275     then
1276     # run it
1277     ${target}_pkgbuild
1278     fi
1279     # now create the target package
1280     ${MLIBDIR}/pkgbuild_dir.sh \
1281     "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \
1282     ${BINDIR} || die "target: ${target} package-build failed"
1283    
1284     # build pkg-md5-sum if requested
1285     generate_package_md5sum \
1286     --pcat "${PCATEGORIE}" \
1287     --pname "${PNAME}" \
1288     --pver "${PVER}" \
1289     --pbuild "${PBUILD}" \
1290     --parch "${ARCH}" \
1291     --target "${target}"
1292    
1293     echo -e "${COLGREEN}\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n${COLDEFAULT}"
1294     done
1295     else
1296     ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
1297    
1298     # build pkg-md5-sum if requested
1299     generate_package_md5sum \
1300     --pcat "${PCATEGORIE}" \
1301     --pname "${PNAME}" \
1302     --pver "${PVER}" \
1303     --pbuild "${PBUILD}" \
1304     --parch "${ARCH}"
1305    
1306     echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
1307     fi
1308    
1309     # build src-pkg-tarball if requested
1310     [[ ${CREATE_SRC_PKG_TARBALL} = true ]] && source_pkg_build ${SMAGENAME}
1311   ;;   ;;
1312  esac  esac
1313    
1314  #for sure  if [[ ${SMAGE_BUILD_LOGGING} != false ]]
1315    then
1316     bzip2 -9f /var/log/smage/${PKGNAME}.log
1317    else
1318     [[ -f /var/log/smage/${PKGNAME}.log ]] && rm /var/log/smage/${PKGNAME}.log
1319    fi
1320    
1321    # for sure
1322  unset NOPKGBUILD  unset NOPKGBUILD
1323    unset NOSTRIP
1324    
1325  xtitleclean  xtitleclean
 #echo -e "\nPackage ${PKGNAME} successfully builded.\n"  

Legend:
Removed from v.40  
changed lines
  Added in v.881