Magellan Linux

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

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

revision 90 by niro, Tue Jun 28 20:39:35 2005 UTC revision 600 by niro, Mon Nov 5 17:08:33 2007 UTC
# Line 4  Line 4 
4  # needs pkgbuild_dir (mage)  # needs pkgbuild_dir (mage)
5    
6  # SMAGE2  # SMAGE2
7  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.13 2005-06-28 20:39:35 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.60 2007-11-05 17:08:33 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-r17  
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  source /etc/mage.rc  ## 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.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  # $1 filename
116  get_db_md5_sum() {  get_db_md5_sum()
117    {
118   local DB_FILE   local DB_FILE
119   local MD5_FILE   local MD5_FILE
120   local i   local i
# Line 98  get_db_md5_sum() { Line 127  get_db_md5_sum() {
127   echo "${i}"   echo "${i}"
128  }  }
129    
130  download_sources() {  download_sources()
131    {
132    
133   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
134    
# Line 110  download_sources() { Line 140  download_sources() {
140   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
141   local FETCHING   local FETCHING
142   local i mirror   local i mirror
   
143    
144   #install SRCDIR/PNAME if not exist  
145     # install SRCDIR/PNAME if not exist
146   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}
147    
148   # check if FETCHING is needed   # check if FETCHING is needed
149   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )
150   if [[ $? == 0 ]]   if [[ $? = 0 ]]
151   then   then
152   # md5's ok, not fetching needed   # md5's ok, no fetching needed
153   FETCHING=false   FETCHING=false
154   else   else
155   FETCHING=true   FETCHING=true
156   fi   fi
157    
158   for ((i=0; i < EOA; i++))   for ((i=0; i < EOA; i++))
159   do   do
160   # url to file   # url to file
# Line 142  download_sources() { Line 172  download_sources() {
172   fi   fi
173    
174   # if an mirrored file than replace first the mirror uri   # if an mirrored file than replace first the mirror uri
175   if [ -n "$(echo ${my_SRC_URI} | grep 'mirror://')" ]   if [[ -n $(echo ${my_SRC_URI} | grep 'mirror://') ]]
176   then   then
177   for mirror in ${MIRRORS}   for mirror in ${MIRRORS}
178   do   do
179   my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"   my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"
180    
181   #echo "DEBUG: ${MY_SRC_URI}"   if [[ ${FETCHING} = true ]]
182   if [[ ${FETCHING} == true ]]   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   then
255   echo "==> fetching ${my_SRC_URI_MIRROR}"   echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
256   wget \   wget \
257   --passive-ftp \   --passive-ftp \
258   --tries 3 \   --tries 3 \
# Line 159  download_sources() { Line 260  download_sources() {
260   --progress bar \   --progress bar \
261   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
262   "${my_SRC_URI_MIRROR}"   "${my_SRC_URI_MIRROR}"
263   if [ "$?" == "0" ]   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   then
289   break   break
290   else   else
# Line 168  download_sources() { Line 293  download_sources() {
293   fi   fi
294   done   done
295   else   else
296   #echo "DEBUG: ${SRC_URI[${i}]}"   if [[ ${FETCHING} = true ]]
  if [[ ${FETCHING} == true ]]  
297   then   then
298   echo "==> fetching ${my_SRC_URI}"   echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI}${COLDEFAULT}"
299   wget \   wget \
300   --passive-ftp \   --passive-ftp \
301   --tries 3 \   --tries 3 \
# Line 179  download_sources() { Line 303  download_sources() {
303   --progress bar \   --progress bar \
304   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
305   "${my_SRC_URI}"   "${my_SRC_URI}"
 # only needed to run through a list of mirrors  
 # if [ "$?" == "0" ]  
 # then  
 # break  
 # else  
 # continue  
 # fi  
306   fi   fi
307   fi   fi
308    
309   # unset them to be shure   # unset them to be shure
310   unset my_SRC_URI   unset my_SRC_URI
311   unset my_SRC_URI_DEST   unset my_SRC_URI_DEST
# Line 198  download_sources() { Line 315  download_sources() {
315    
316   # recheck md5 sums   # recheck md5 sums
317   echo   echo
318   echo ">== Checking MD5 sums:"   echo -e "${COLBLUE}===${COLGREEN} Checking MD5 sums:${COLDEFAULT}"
319   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed"   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed"
320   echo   echo
321    
# Line 207  download_sources() { Line 324  download_sources() {
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|mpks|mpk)
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|xpi)
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 311  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 340  minstalldocs() { Line 518  minstalldocs() {
518   done   done
519  }  }
520    
521  mstriplibs() {  mstriplibs()
522    {
523   local stripdir="$@"   local stripdir="$@"
524    
525   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -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   find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
527  }  }
528    
529  mstripbins() {  mstripbins()
530    {
531   local stripdir="$@"   local stripdir="$@"
532    
533   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
534   find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null   find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
535  }  }
536    
537  setup_distcc_environment(){  sminclude()
538   if [ -x /usr/bin/distcc ]  {
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
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   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.60 2007-11-05 17:08:33 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   then
912   echo "Using CCache for compilation ..."   echo "Virtual package detected; src-pkg-tarball not necessary ..."
913   export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"   return 0
  #unset CC CXX  
914   fi   fi
915    
916     if [[ ! -d ${SOURCEDIR}/${PNAME} ]]
917     then
918     echo "No SRC_URI defined; src-pkg-tarball not necessary ..."
919     return 0
920     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  # print out our version
938  showversion  showversion
939  echo  echo
# Line 405  then Line 945  then
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   if [ ! -d ${SOURCEDIR} ]   if [ ! -d ${SOURCEDIR} ]
952   then   then
# Line 416  then Line 956  then
956   exit 0   exit 0
957  fi  fi
958    
959  #creates md5sums for smages to given dir  # creates md5sums for smages to given dir
960  if [ "$1" == "calcmd5" ]  if [[ $1 = calcmd5 ]]
961  then  then
962   if [ $# -ge 3 ]   if [ $# -ge 3 ]
963   then   then
# Line 469  then Line 1009  then
1009   unset my_SRC_URI_MIRROR   unset my_SRC_URI_MIRROR
1010   unset my_SOURCEDIR   unset my_SOURCEDIR
1011   done   done
1012    
1013   echo   echo
1014   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
1015   echo   echo
# Line 482  then Line 1022  then
1022   echo   echo
1023   exit 1   exit 1
1024   fi   fi
1025    
1026   exit 0   exit 0
1027  fi  fi
1028    
1029  #download sources  # download sources
1030  if [ "$1" == "download" -a -n "$2" ]  if [ "$1" == "download" -a -n "$2" ]
1031  then  then
  showversion  
1032   if [ ! -d ${SMAGESCRIPTSDIR} ]   if [ ! -d ${SMAGESCRIPTSDIR} ]
1033   then   then
1034   install -d ${SMAGESCRIPTSDIR}   install -d ${SMAGESCRIPTSDIR}
# Line 504  then Line 1043  then
1043   exit 0   exit 0
1044  fi  fi
1045    
1046  if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]  # regen-mage-tree
1047    if [ "$1" == "only-regen-tree" -a -n "$2" ]
1048  then  then
1049   die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."   # set correct SMAGENAME
1050  fi   SMAGENAME="$2"
1051     MD5DIR="$(dirname ${SMAGENAME})/md5"
1052     source ${SMAGENAME} || die "regen: smage2 not found"
1053    
1054  if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]   regen_mage_tree
 then  
  die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."  
 fi  
1055    
1056  if [ -z "${SOURCEDIR}" ]   # build md5sum for existing packages
1057  then   generate_package_md5sum \
1058   die "\$SOURCEDIR not found. Please setup your mage.rc correctly."   --pcat "${PCATEGORIE}" \
1059  fi   --pname "${PNAME}" \
1060     --pver "${PVER}" \
1061     --pbuild "${PBUILD}" \
1062     --parch "${ARCH}" \
1063     --target "${target}"
1064    
1065  if [ -z "${SMAGESCRIPTSDIR}" ]   exit 0
 then  
  die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."  
1066  fi  fi
1067    
1068  if [ -z "${SMAGE2RSYNC}" ]  if [ "$1" == "--create-src-tarball" -a -n "$2" ]
1069  then  then
1070   echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."   # set correct SMAGENAME
1071   exit 1   SMAGENAME="$2"
1072  fi   MD5DIR="$(dirname ${SMAGENAME})/md5"
1073    
1074  if [ -z "${BINDIR}" ]   echo -e "${COLGREEN}create-src-tarball called for ${COLBLUE}${SMAGENAME}${COLGREEN} ...${COLDEFAULT}"
 then  
  die "no BINDIR variable found in /etc/mage.rc"  
 fi  
1075    
1076  if [ -z "${CHOST}" ]   source ${SMAGENAME} || die "regen: smage2 not found"
 then  
  die "no CHOST variable found in /etc/mage.rc"  
 fi  
1077    
1078  if [ -z "${CFLAGS}" ]   if [[ -d ${SOURCEDIR}/${PNAME} ]]
1079  then   then
1080   die "no CFLAGS variable found in /etc/mage.rc"   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"  MD5DIR="$(dirname ${SMAGENAME})/md5"
1128    
1129  xtitle "Compiling ${PKGNAME}"  xtitle "Compiling ${PKGNAME}"
1130  echo "Compiling ${PKGNAME}"  echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}"
1131    
1132  #download sources  # auto regen mage tree if requested
1133  download_sources  regen_mage_tree
1134    
1135  #fixes some issues with these functions  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 574  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 639  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    
# Line 658  case ${NOSTRIP} in Line 1223  case ${NOSTRIP} in
1223   echo -e "NOSTRIP=true detected; Package will not be stripped ..."   echo -e "NOSTRIP=true detected; Package will not be stripped ..."
1224   ;;   ;;
1225   *)   *)
1226   echo -e "Stripping binaries ..."   echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
1227   mstripbins ${BINDIR}   mstripbins ${BINDIR}
1228   echo -e "Stripping libraries ..."   echo -e "${COLBLUE}===${COLGREEN} stripping libraries ...${COLDEFAULT}"
1229   mstriplibs ${BINDIR}   mstriplibs ${BINDIR}
1230   ;;   ;;
1231  esac  esac
1232    
1233  #the new buildpkg command  # 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  unset NOSTRIP
1288    
1289  xtitleclean  xtitleclean
 #echo -e "\nPackage ${PKGNAME} successfully builded.\n"  

Legend:
Removed from v.90  
changed lines
  Added in v.600