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

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