Magellan Linux

Diff of /branches/mage-next/src/smage2.in

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

revision 63 by niro, Wed Feb 16 01:00:39 2005 UTC revision 635 by niro, Wed Nov 28 10:47:50 2007 UTC
# Line 4  Line 4 
4  # needs pkgbuild_dir (mage)  # needs pkgbuild_dir (mage)
5    
6  # SMAGE2  # SMAGE2
7  # version: 0.3.6-r14  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.62 2007-11-28 10:47:50 niro Exp $
8    
9  #01.10.2004  #01.10.2004
10  # added ccache support  # added ccache support
11  # added distcc support  # added distcc support
12    
13    # set default user mage.rc
14    : ${MAGERC="/etc/mage.rc"}
15    
16  ## setup ##  ## setup ##
 SMAGEVERSION=0.3.6-r14  
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    
135   local EOA=${#SRC_URI[*]}   local EOA=${#SRC_URI[*]}
136   local MY_SRC_URI   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"   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   # get MD5 sum from database   # 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   # if an mirrored file than replace first the mirror uri
175   if [ -n "$(echo ${SRC_URI[${i}]} | 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="$(echo ${SRC_URI[${i}]} | sed "s|mirror:/|${mirror}/sources|g")"   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   #echo "DEBUG: ${MY_SRC_URI}"   if [[ ${FETCHING} = true ]]
  if [[ ${FETCHING} == true ]]  
230   then   then
231   echo "==> fetching ${MY_SRC_URI}"   echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
232   wget \   wget \
233   --passive-ftp \   --passive-ftp \
234   --tries 3 \   --tries 3 \
235   --continue \   --continue \
236   --progress bar \   --progress bar \
237   --directory-prefix="${SOURCEDIR}/${PNAME}" \   --directory-prefix="${my_SOURCEDIR}" \
238   "${MY_SRC_URI}"   "${my_SRC_URI_MIRROR}"
239   if [ "$?" == "0" ]   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   then
289   break   break
290   else   else
# Line 154  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 ${SRC_URI[${i}]}"   echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI}${COLDEFAULT}"
299   wget \   wget \
300   --passive-ftp \   --passive-ftp \
301   --tries 3 \   --tries 3 \
302   --continue \   --continue \
303   --progress bar \   --progress bar \
304   --directory-prefix="${SOURCEDIR}/${PNAME}" \   --directory-prefix="${my_SOURCEDIR}" \
305   "${MY_SRC_URI}"   "${my_SRC_URI}"
  if [ "$?" == "0" ]  
  then  
  break  
  else  
  continue  
  fi  
306   fi   fi
307   fi   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   done
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 187  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 ${DEST} > /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     if [[ -f ${DEST}/${SRCFILE/.rpm/.tar.gz} ]]
459     then
460     rm ${DEST}/${SRCFILE/.rpm/.tar.gz}
461     fi
462   ;;   ;;
463   *)   *)
464   die "munpack failed"   die "munpack failed"
# Line 291  munpack() { Line 466  munpack() {
466   esac   esac
467  }  }
468    
469  mpatch() {  mpatch()
470    {
471   local PATCHOPTS   local PATCHOPTS
472   local PATCHFILE   local PATCHFILE
473     local i
474    
475   PATCHOPTS=$1   PATCHOPTS=$1
476   PATCHFILE=$2   PATCHFILE=$2
477    
478     if [[ -z $2 ]]
479     then
480     PATCHFILE=$1
481    
482     ## patch level auto-detection, get patch level
483     for ((i=0; i < 10; i++))
484     do
485     patch --dry-run -Np${i} -i ${SOURCEDIR}/${PNAME}/${PATCHFILE} > /dev/null
486     if [[ $? = 0 ]]
487     then
488     PATCHOPTS="-Np${i}"
489     break
490     fi
491     done
492     fi
493    
494     echo -e "${COLBLUE}*** ${COLGREEN}Applying patch '${PATCHFILE}'${COLDEFAULT}"
495   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
496  }  }
497    
498    mlibtoolize()
499    {
500     local opts="$@"
501     [[ -z ${opts} ]] && opts="--copy --force"
502    
503     libtoolize ${opts} || die "running: mlibtoolize ${opts}"
504    }
505    
506  minstalldocs() {  minstalldocs()
507    {
508   local docfiles   local docfiles
   
509   docfiles="$@"   docfiles="$@"
510    
511   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
512   then   then
513   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
514   fi   fi
515    
516   for i in ${docfiles}   for i in ${docfiles}
517   do   do
518   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
# Line 320  minstalldocs() { Line 521  minstalldocs() {
521   done   done
522  }  }
523    
524  setup_distcc_environment(){  mstriplibs()
525   if [ -x /usr/bin/distcc ]  {
526     local stripdir="$@"
527    
528     [ -z "${stripdir}" ] && stripdir=${BINDIR}
529     find ${stripdir} | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
530    }
531    
532    mstripbins()
533    {
534     local stripdir="$@"
535    
536     [ -z "${stripdir}" ] && stripdir=${BINDIR}
537     find ${stripdir} | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
538    }
539    
540    sminclude()
541    {
542     local i
543    
544     if [[ -n "$@" ]]
545   then   then
546   echo "Using DistCC for compilation ..."   for i in $@
547   export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"   do
548     echo "--- Including ${SMAGESCRIPTSDIR}/include/${i}.sminc"
549     source ${SMAGESCRIPTSDIR}/include/${i}.sminc
550     done
551     echo
552     fi
553    }
554    
555   #export distcc as compiler  setup_distcc_environment()
556  # export CC="distcc"  {
557  # export CXX=distcc   if [ -x /usr/bin/distcc ]
558     then
559     echo -e "${COLBLUE}---${COLGREEN} Using DistCC for compilation ...${COLDEFAULT}"
560     export PATH=/usr/$(mlibdir)/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
561    
562   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
563    
564     # creating distcc tempdir
565     install -o distcc -g daemon -d ${DISTCC_DIR}
566     chmod 1777 ${DISTCC_DIR}
567     fi
568    }
569    
570    setup_ccache_environment()
571    {
572     if [ -x /usr/bin/ccache ]
573     then
574     echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"
575     export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
576     fi
577    }
578    
579   #ccache + distcc together  
580   if [ "${SMAGE_USE_CCACHE}" == "true" ]  # fixes given dependencies to match a MAGE_TARGET
581   then  # fix_mage_deps -target s/depend # <-- note -target !
582   if [ -x /usr/bin/ccache ]  fix_mage_deps()
583    {
584     local target="$1"
585     local depend="$2"
586     local NDEPEND
587     local sym dep cat pver pname
588    
589     # deps and provides are special
590     # they must be fixed to match the target
591    
592     # run this only if target and depend is not empty
593     if [ -n "${target}" ] && [ -n "${depend}" ]
594     then
595     # fix DEPEND
596     while read sym dep
597     do
598     # ignore empty lines
599     [[ -z ${dep} ]] && continue
600    
601     cat="$(dirname ${dep})"
602     # change if not virtual
603     if [[ ${cat} = virtual ]]
604   then   then
605   echo "Preparing DistCC to work together with CCache ..."   pname="$(basename ${dep})"
606   #export CCACHE_PREFIX="distcc" || die "distcc: could not set ccach_prefix"   else
607  # export CC="ccache distcc"   # fix pver to target-pver
608  # export CXX="ccache distcc"   # to get pname-target-pver
609    
610     # doing it backwards !
611     pver="${dep##*-}"
612     # full pver
613     pname="$(basename ${dep/-${pver}/})${target}-${pver}"
614   fi   fi
615    
616     # do not add empty lines
617     if [ -z "${NDEPEND}" ]
618     then
619     NDEPEND="${sym} ${cat}/${pname}"
620     else
621     NDEPEND="${NDEPEND}
622     ${sym} ${cat}/${pname}"
623     fi
624    
625     unset cat pname pver
626     done << EOF
627    ${depend}
628    EOF
629     # set NDEPEND to DEPEND
630     depend="${NDEPEND}"
631     fi
632    
633     echo "${depend}"
634    }
635    
636    # build_mage_script(): helper functions for regen_mage_tree()
637    # generates an mage file with given information in smage file
638    # needs at least:
639    #   PNAME                 name of pkg
640    #   PVER                  version
641    #   PBUILD                revision
642    #   PCATEGORIE            categorie of the pkg
643    #   STATE                 state of pkg stable|unstable|old
644    #   DESCRIPTION           va short description (opt)
645    #   HOMEPAGE              homepage (opt)
646    #   DEPEND                runtime dependencies (opt)
647    #   SDEPEND               add. needed deps to build the pkg (opt)
648    #   PROVIDE               provides a virtual (opt)
649    #
650    # special tags:
651    #   PKGTYPE               type of pkg
652    #   INHERITS              which functions get included
653    #   SPECIAL_FUNCTIONS     special functions wich should also be added
654    #                         warning: they get killed before the build starts !
655    #
656    #   MAGE_TREE_DEST        target destination of the generated tree
657    #   REGEN_MAGE_TREE       set to 'true' to enable this
658    #
659    # gets called with build_mage_script target
660    build_mage_script()
661    {
662     local magefile
663     local dest
664     local target
665     local sym
666     local depname
667    
668     # if MAGE_TREE_DEST not set use BUILDDIR
669     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
670    
671     # determinate which suffix this mage file should get, if any
672     [ -n "$1" ] && target="-$1"
673    
674     # name of magefile
675     magefile="${PNAME}${target}-${PVER}-${PBUILD}.mage"
676    
677     # destination to magefile
678     dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"
679    
680     # show what we are doing
681     echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"
682     echo "${dest}"
683    
684     install -d "$(dirname ${dest})"
685     # now build the mage file
686     > ${dest}
687    
688     # header
689     echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.62 2007-11-28 10:47:50 niro Exp $' >> ${dest}
690     echo  >> ${dest}
691    
692     # pgkname and state
693     echo "PKGNAME=\"${PNAME}${target}-${PVER}-\${ARCH}-${PBUILD}\"" >> ${dest}
694     echo "STATE=\"${STATE}\"" >> ${dest}
695     echo >> ${dest}
696    
697     # description and homepage
698     echo "DESCRIPTION=\"${DESCRIPTION}\"" >> ${dest}
699     echo "HOMEPAGE=\"${HOMEPAGE}\"" >> ${dest}
700     echo >> ${dest}
701    
702     # special tags and vars
703     echo "PKGTYPE=\"${PKGTYPE}\""  >> ${dest}
704    
705     # echo MAGE_TARGETS ## note -target is needed !
706     echo "MAGE_TARGETS=\"${target}\"" >> ${dest}
707     echo >> ${dest}
708    
709     # add special vars
710     if [ -n "${SPECIAL_VARS}" ]
711     then
712     local i
713     for i in ${SPECIAL_VARS}
714     do
715     # being tricky here :)
716     echo "${i}=\"$(eval echo \$${i})\"" >> ${dest}
717     done
718     echo  >> ${dest}
719     fi
720    
721     # add at least all includes
722     if [ -n "${INHERITS}" ]
723     then
724     echo -n "minclude"  >> ${dest}
725     local i
726     for i in ${INHERITS}
727     do
728     echo -n " ${i}"  >> ${dest}
729     done
730     echo  >> ${dest}
731     fi
732     echo >> ${dest}
733    
734     # deps and provides
735     echo "DEPEND=\"$(fix_mage_deps "${target}" "${DEPEND}")\"" >> ${dest}
736     echo >> ${dest}
737     echo "SDEPEND=\"$(fix_mage_deps "${target}" "${SDEPEND}")\"" >> ${dest}
738     echo >> ${dest}
739     echo "PROVIDE=\"${PROVIDE}\"" >> ${dest}
740     echo >> ${dest}
741    
742     # add special functions
743     if [ -n "${SPECIAL_FUNCTIONS}" ]
744     then
745     local i
746     for i in ${SPECIAL_FUNCTIONS}
747     do
748     # add to mage (quotes needed !)
749     typeset -f "${i}" >> ${dest}
750     echo >> ${dest}
751     # unset to be safe (quotes needed !)
752     #unset "${i}" <-- later to get every target built
753     done
754     echo  >> ${dest}
755     fi
756    
757     # pre|post-install|removes
758     typeset -f preinstall >> ${dest}
759     echo  >> ${dest}
760     typeset -f postinstall >> ${dest}
761     echo  >> ${dest}
762     typeset -f preremove >> ${dest}
763     echo  >> ${dest}
764     typeset -f postremove >> ${dest}
765     echo  >> ${dest}
766    }
767    
768    regen_mage_tree()
769    {
770     local i
771    
772     # build them only if requested
773     if [[ ${REGEN_MAGE_TREE} = true ]]
774     then
775     # run it without targets
776     if [ -z "${MAGE_TARGETS}" ]
777     then
778     echo
779     build_mage_script
780     echo
781     else
782    
783     # build for each target an mage file
784     # run it with several targets
785     for i in ${MAGE_TARGETS}
786     do
787     echo
788     build_mage_script "${i}"
789     echo
790     done
791   fi   fi
792     fi
793    
794   #creating distcc tempdir   # now unset all uneeded vars to be safe
795   install -o distcc -g daemon -d ${DISTCC_DIR}   # unset PKGNAME <-- don't do that; smage needs this var
796   chmod 1777 ${DISTCC_DIR}   # unset to be safe (quotes needed !)
797    # for i in ${SPECIAL_FUNCTIONS}
798    # do
799    # unset "${i}"
800    # done
801     unset SPECIAL_FUNCTIONS
802    # for i in ${SPECIAL_VARS}
803    # do
804    # unset "${i}"
805    # done
806     unset SPECIAL_VARS
807     unset STATE
808     unset DESCRIPTION
809     unset HOMEPAGE
810     unset PKGTYPE
811     unset INHERITS
812     unset DEPEND
813     unset SDEPEND
814     unset PROVIDE
815     unset preinstall
816     unset postinstall
817     unset preremove
818     unset postremove
819    }
820    
821    export_inherits()
822    {
823     local include="$1"
824     shift
825    
826     while [ "$1" ]
827     do
828     local functions="$1"
829    
830     # sanity checks
831     [ -z "${include}" ] && die "export_inherits(): \$include not given."
832     [ -z "${functions}" ] && die "export_inherits(): \$functions not given."
833    
834     eval "${functions}() { ${include}_${functions} ; }"
835    
836     # debug
837     [[ ${MAGEDEBUG} = on ]] && typeset -f "${functions}"
838    
839     shift
840     done
841    }
842    
843    generate_package_md5sum()
844    {
845     local dest
846     local pcat
847     local pname
848     local pver
849     local pbuild
850     local parch
851     local target
852     local pkgname
853    
854     # very basic getops
855     for i in $*
856     do
857     case $1 in
858     --pcat|-c) shift; pcat="$1" ;;
859     --pname|-n) shift; pname="$1" ;;
860     --pver|-v) shift; pver="$1" ;;
861     --pbuild|-b) shift; pbuild="$1" ;;
862     --parch|a) shift; parch="$1" ;;
863     --target|t) shift; target="$1" ;;
864     esac
865     shift
866     done
867    
868     # sanity checks; abort if not given
869     [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given."
870     [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given."
871     [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given."
872     [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given."
873     [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given."
874    
875     # check needed global vars
876     [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
877     [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
878    
879     # fix target as it may be empty !
880     [ -n "${target}" ] && target="-${target}"
881    
882     # build pkgname
883     pkgname="${pname}${target}-${pver}-${parch}-${pbuild}"
884    
885     # build pkg-md5-sum only if requested
886     if [[ ${REGEN_MAGE_TREE} = true ]]
887     then
888     echo -ne "${COLBLUE}===${COLGREEN} generating md5's for ${pkgname}.${PKGSUFFIX} ... ${COLDEFAULT}"
889    
890     # abort if not exist
891     if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ]
892     then
893     echo -e "${COLRED}! exists${COLDEFAULT}"
894     return 0
895     fi
896    
897     # if MAGE_TREE_DEST not set use BUILDDIR
898     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
899    
900     # setup md5 dir
901     dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
902     install -d ${dest}
903    
904     # gen md5sum
905     ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \
906     > ${dest}/${pkgname}.md5
907     echo -e "${COLGREEN}done${COLDEFAULT}"
908   fi   fi
909  }  }
910    
911  setup_ccache_environment(){  source_pkg_build()
912   if [ -x /usr/bin/ccache ]  {
913     if [[ ${PKGTYPE} = virtual ]]
914     then
915     echo "Virtual package detected; src-pkg-tarball not necessary ..."
916     return 0
917     fi
918    
919     if [[ ! -d ${SOURCEDIR}/${PNAME} ]]
920   then   then
921   echo "Using CCache for compilation ..."   echo "No SRC_URI defined; src-pkg-tarball not necessary ..."
922   export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"   return 0
  #unset CC CXX  
923   fi   fi
924    
925     [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly."
926    
927     echo -e "${COLGREEN}Creating source package tarball ... ${COLDEFAULT}"
928    
929     # include the smage2 file
930     cp ${SMAGENAME} ${SOURCEDIR}/${PNAME}
931    
932     ( cd ${SOURCEDIR}; tar cvjf ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${PNAME}; )
933     [[ ! -d ${SRCPKGDIR} ]] && install -d ${SRCPKGDIR}
934     mv ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${SRCPKGDIR}/${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}
935    
936     echo -e "${COLGREEN}Source package ${COLBLUE}${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ${COLGREEN}successfully builded.${COLDEFAULT}"
937  }  }
938    
939    
940  # print out our version  # print out our version
941  showversion  showversion
942  echo  echo
# Line 371  then Line 948  then
948   exit 1   exit 1
949  fi  fi
950    
951  #updating smage2-scripts  # updating smage2-scripts
952  if [ "$1" == "update" ]  if [[ $1 = update ]]
953  then  then
954   if [ ! -d ${SOURCEDIR} ]   if [ ! -d ${SOURCEDIR} ]
955   then   then
# Line 382  then Line 959  then
959   exit 0   exit 0
960  fi  fi
961    
962  #creates md5sums for smages to given dir  # creates md5sums for smages to given dir
963  if [ "$1" == "calcmd5" ]  if [[ $1 = calcmd5 ]]
964  then  then
965   if [ $# -ge 3 ]   if [ $# -ge 3 ]
966   then   then
  # overridable sourcedir  
  CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"  
   
967   SMAGENAME="$2"   SMAGENAME="$2"
968   MD5DIR="$3"   MD5DIR="$3"
969   source ${SMAGENAME} || die "download source failed"   source ${SMAGENAME} || die "download source failed"
970    
971     # overridable sourcedir; must be declared after source of the smage2
972     CALC_SOURCEDIR="${CALC_SOURCEDIR:="${SOURCEDIR}/${PNAME}"}"
973    
974   [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."   [ -z "${SRC_URI}" ] && die "Nothing declared to calculate."
975    
976   # end of array   # end of array
# Line 407  then Line 984  then
984    
985   for ((i=0; i < EOA; i++))   for ((i=0; i < EOA; i++))
986   do   do
987   MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"   # url to file
988     my_SRC_URI="$(echo ${SRC_URI[${i}]} | cut -d' ' -f1)"
989    
990     # subdir in sources dir; the my_SRCI_URI file goes to there
991     my_SRC_URI_DEST="$(echo ${SRC_URI[${i}]} | cut -d' ' -f2)"
992    
993     # if my_src_uri_dest is not equal my_src_uri; than an other dir is used
994     if [[ ${my_SRC_URI_DEST} != ${my_SRC_URI} ]]
995     then
996     MY_SRC_FILE="${my_SRC_URI_DEST}/$(basename ${SRC_URI[${i}]})"
997     else
998     MY_SRC_FILE="$(basename ${SRC_URI[${i}]})"
999     fi
1000    
1001   if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]   if [ -e "${CALC_SOURCEDIR}/${MY_SRC_FILE}" ]
1002   then   then
1003   echo "calculating $(basename ${MY_SRC_FILE}) ..."   echo "calculating $(basename ${MY_SRC_FILE}) ..."
# Line 415  then Line 1005  then
1005   else   else
1006   echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."   echo "WARNING: File '$(basename ${MY_SRC_FILE}) not found in ${CALC_SOURCEDIR}."
1007   fi   fi
1008    
1009     # unset them to be shure
1010     unset my_SRC_URI
1011     unset my_SRC_URI_DEST
1012     unset my_SRC_URI_MIRROR
1013     unset my_SOURCEDIR
1014   done   done
1015    
1016   echo   echo
1017   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
1018   echo   echo
# Line 429  then Line 1025  then
1025   echo   echo
1026   exit 1   exit 1
1027   fi   fi
1028    
1029   exit 0   exit 0
1030  fi  fi
1031    
1032  #download sources  # download sources
1033  if [ "$1" == "download" -a -n "$2" ]  if [ "$1" == "download" -a -n "$2" ]
1034  then  then
  showversion  
1035   if [ ! -d ${SMAGESCRIPTSDIR} ]   if [ ! -d ${SMAGESCRIPTSDIR} ]
1036   then   then
1037   install -d ${SMAGESCRIPTSDIR}   install -d ${SMAGESCRIPTSDIR}
# Line 451  then Line 1046  then
1046   exit 0   exit 0
1047  fi  fi
1048    
1049  if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]  # regen-mage-tree
1050    if [ "$1" == "only-regen-tree" -a -n "$2" ]
1051  then  then
1052   die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."   # set correct SMAGENAME
1053  fi   SMAGENAME="$2"
1054     MD5DIR="$(dirname ${SMAGENAME})/md5"
1055     source ${SMAGENAME} || die "regen: smage2 not found"
1056    
1057  if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]   regen_mage_tree
 then  
  die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."  
 fi  
1058    
1059  if [ -z "${SOURCEDIR}" ]   # build md5sum for existing packages
1060  then   generate_package_md5sum \
1061   die "\$SOURCEDIR not found. Please setup your mage.rc correctly."   --pcat "${PCATEGORIE}" \
1062  fi   --pname "${PNAME}" \
1063     --pver "${PVER}" \
1064     --pbuild "${PBUILD}" \
1065     --parch "${ARCH}" \
1066     --target "${target}"
1067    
1068  if [ -z "${SMAGESCRIPTSDIR}" ]   exit 0
 then  
  die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."  
1069  fi  fi
1070    
1071  if [ -z "${SMAGE2RSYNC}" ]  if [ "$1" == "--create-src-tarball" -a -n "$2" ]
1072  then  then
1073   echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."   # set correct SMAGENAME
1074   exit 1   SMAGENAME="$2"
1075  fi   MD5DIR="$(dirname ${SMAGENAME})/md5"
1076    
1077  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  
1078    
1079  if [ -z "${CHOST}" ]   source ${SMAGENAME} || die "regen: smage2 not found"
 then  
  die "no CHOST variable found in /etc/mage.rc"  
 fi  
1080    
1081  if [ -z "${CFLAGS}" ]   if [[ -d ${SOURCEDIR}/${PNAME} ]]
1082  then   then
1083   die "no CFLAGS variable found in /etc/mage.rc"   echo -e "${COLGREEN}Deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1084     rm -rf ${SOURCEDIR}/${PKGNAME}
1085     fi
1086    
1087     download_sources
1088     source_pkg_build ${SMAGENAME}
1089     exit 0
1090  fi  fi
1091    
1092  if [ -z "${CXXFLAGS}" ]  if [ "$1" == "--src-tarball" -a -n "$2" ] || [ "$1" == "-st" -a -n "$2" ]
1093  then  then
1094   die "no CXXFLAGS variable found in /etc/mage.rc"   SRCPKGTARBALL="${2}"
1095     USE_SRC_PKG_TARBALL=true
1096    
1097     # abort if given file is not a source pkg
1098     [[ ${SRCPKGTARBALL##*.} != ${SRCPKGSUFFIX} ]] && die "${SRCPKGTARBALL} is not a valid src-pkg file."
1099    
1100     # set correct SMAGENAME; use the one that the src_pkg provide
1101     # /path/to/SOURCEDIR/PNAME/SMAGENAME
1102     SMAGENAME="${SOURCEDIR}/$(basename ${SRCPKGTARBALL%-*-*})/$(basename ${SRCPKGTARBALL} .${SRCPKGSUFFIX}).${SMAGESUFFIX}"
1103    
1104     echo -e "${COLGREEN}Using src-tarball ${COLBLUE}${SRCPKGTARBALL}${COLGREEN} ...${COLDEFAULT}"
1105    
1106     [[ ! -d ${SOURCEDIR} ]] && install -d ${SOURCEDIR}
1107    
1108     # unpack srctarball
1109     [[ ! -f ${SRCPKGTARBALL} ]] && die "Error: ${SRCPKGTARBALL} does not exist. Aborting."
1110    
1111     tar xvjf ${SRCPKGTARBALL} -C ${SOURCEDIR} || die  "Error unpackung src-tarball ${SRCPKGTARBALL}"
1112    
1113     [[ ! -f ${SMAGENAME} ]] && die "Included smage2 file in src-tarball not found: ${SMAGENAME}"
1114  fi  fi
1115    
1116    
1117    [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
1118    [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
1119     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
1120    [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your ${MAGERC} correctly."
1121    [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your ${MAGERC} correctly."
1122    [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your ${MAGERC} correctly."
1123    [ -z "${BINDIR}" ] && die "no BINDIR variable found in ${MAGERC}"
1124    [ -z "${CHOST}" ] && die "no CHOST variable found in ${MAGERC}"
1125    [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in ${MAGERC}"
1126    [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in ${MAGERC}"
1127    
1128  source ${SMAGENAME} || die "source failed"  source ${SMAGENAME} || die "source failed"
1129  PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"  PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}"
1130  MD5DIR="$(dirname ${SMAGENAME})/md5"  MD5DIR="$(dirname ${SMAGENAME})/md5"
1131    
1132  xtitle "Compiling ${PKGNAME}"  xtitle "Compiling ${PKGNAME}"
1133  echo "Compiling ${PKGNAME}"  echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}"
1134    
1135    # auto regen mage tree if requested
1136    regen_mage_tree
1137    
1138    if [[ ${CREATE_SRC_PKG_TARBALL} = true ]]
1139    then
1140     if [[ -d ${SOURCEDIR}/${PNAME} ]]
1141     then
1142     echo -e "${COLBLUE}===${COLGREEN} deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1143     rm -rf ${SOURCEDIR}/${PNAME}
1144     fi
1145    fi
1146    
1147  #download sources  # download sources
1148  download_sources  [[ ${USE_SRC_PKG_TARBALL} != true ]] && download_sources
1149    
1150  #fixes some issues with these functions  # fixes some issues with these functions
1151  export -f src_prepare || die "src_prepare export failed"  export -f src_prepare || die "src_prepare export failed"
1152  export -f src_compile || die "src_compile export failed"  export -f src_compile || die "src_compile export failed"
1153  export -f src_install || die "src_install export failed"  export -f src_install || die "src_install export failed"
1154    
1155  #fixes some compile issues  # fixes some compile issues
1156  export CHOST="${CHOST}" || die "CHOST export failed"  export CHOST="${CHOST}" || die "CHOST export failed"
1157  export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"  export CFLAGS="${CFLAGS}" || die "CFLAGS export failed"
1158  export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"  export CXXFLAGS="${CFLAGS}" || die "CXXFLAGS export failed"
# Line 521  export BINDIR="${BINDIR}" || die "BINDIR Line 1160  export BINDIR="${BINDIR}" || die "BINDIR
1160  export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"  export MAKEOPTS="${MAKEOPTS}" || die "MAKEOPTS export failed"
1161    
1162    
1163  #setup distcc  # setup distcc
1164  #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
1165  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  
1166    
1167    # setup ccache
1168    [[ ${SMAGE_USE_CCACHE} = true ]] && setup_ccache_environment
1169    
1170  # small sleep to show our settings  # small sleep to show our settings
1171  sleep 1  sleep 1
1172    
1173  #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  
1174  if [ -d ${BUILDDIR} ]  if [ -d ${BUILDDIR} ]
1175  then  then
1176   rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."   rm -rf ${BUILDDIR}/* || die "couldn't cleanup \$BUILDDIR."
1177  fi  fi
1178  install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."  install -d ${BUILDDIR} || die "couldn't create \$BUILDDIR."
1179    
1180  #cleans up srcdir if a previously unpacked one exists  # cleans up srcdir if a previously unpacked one exists
1181  if [ -d ${SRCDIR} ]  if [ -d ${SRCDIR} ]
1182  then  then
1183   rm -rf ${SRCDIR}   rm -rf ${SRCDIR}
1184  fi  fi
1185    
1186  #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
1187  if [ -d ${BINDIR} ]  if [ -d ${BINDIR} ]
1188  then  then
1189   rm -rf ${BINDIR}   rm -rf ${BINDIR}
1190  fi  fi
1191  install -d ${BINDIR} || die "couldn't create \$BINDIR."  install -d ${BINDIR} || die "couldn't create \$BINDIR."
1192    
1193  #cleans up package temp dir if a previous build exists  # cleans up package temp dir if a previous build exists
1194  if [ -d ${BUILDDIR}/${PKGNAME} ]  if [ -d ${BUILDDIR}/${PKGNAME} ]
1195  then  then
1196   rm -rf ${BUILDDIR}/${PKGNAME}   rm -rf ${BUILDDIR}/${PKGNAME}
1197  fi  fi
1198    
1199  #cleans up timestamp if one exists  # cleans up timestamp if one exists
1200  if [ -f /var/tmp/timestamp ]  if [ -f /var/tmp/timestamp ]
1201  then  then
1202   mage rmstamp   mage rmstamp
# Line 586  src_compile || die "src_compile failed" Line 1207  src_compile || die "src_compile failed"
1207  src_install || die "src_install failed"  src_install || die "src_install failed"
1208    
1209    
1210  #compressing doc, info & man files  # compressing doc, info & man files
 echo -e "Compressing man-pages ..."  
1211  if [ -d ${BUILDDIR}/builded/usr/share/man ]  if [ -d ${BUILDDIR}/builded/usr/share/man ]
1212  then  then
1213     echo -e "${COLBLUE}===${COLGREEN} compressing man-pages ...${COLDEFAULT}"
1214   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man
1215  fi  fi
1216    
 echo -e "Compressing info-pages ..."  
1217  if [ -d ${BUILDDIR}/builded/usr/share/info ]  if [ -d ${BUILDDIR}/builded/usr/share/info ]
1218  then  then
1219     echo -e "${COLBLUE}===${COLGREEN} compressing info-pages ...${COLDEFAULT}"
1220   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info
1221  fi  fi
1222    
1223  #the new buildpkg command  # stripping all bins and libs
1224    case ${NOSTRIP} in
1225     true|TRUE|yes|y)
1226     echo -e "NOSTRIP=true detected; Package will not be stripped ..."
1227     ;;
1228     *)
1229     echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
1230     mstripbins ${BINDIR}
1231     echo -e "${COLBLUE}===${COLGREEN} stripping libraries ...${COLDEFAULT}"
1232     mstriplibs ${BINDIR}
1233     ;;
1234    esac
1235    
1236    # the new buildpkg command
1237  case ${NOPKGBUILD} in  case ${NOPKGBUILD} in
1238   true|TRUE|yes|y)   true|TRUE|yes|y)
1239   echo -e "NOPGKBUILD=true detected; Package will not be build ..."   echo -e "NOPGKBUILD=true detected; Package will not be build ..."
1240   ;;   ;;
1241   *)   *)
1242   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"   # build several targets
1243   echo -e "\nPackage ${PKGNAME} successfully builded.\n"   if [ -n "${MAGE_TARGETS}" ]
1244     then
1245     for target in ${MAGE_TARGETS}
1246     do
1247     # check if an special target_pkgbuild exists
1248     if typeset -f ${target}_pkgbuild > /dev/null
1249     then
1250     # run it
1251     ${target}_pkgbuild
1252     fi
1253     # now create the target package
1254     ${MLIBDIR}/pkgbuild_dir.sh \
1255     "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \
1256     ${BINDIR} || die "target: ${target} package-build failed"
1257    
1258     # build pkg-md5-sum if requested
1259     generate_package_md5sum \
1260     --pcat "${PCATEGORIE}" \
1261     --pname "${PNAME}" \
1262     --pver "${PVER}" \
1263     --pbuild "${PBUILD}" \
1264     --parch "${ARCH}" \
1265     --target "${target}"
1266    
1267     echo -e "${COLGREEN}\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n${COLDEFAULT}"
1268     done
1269     else
1270     ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
1271    
1272     # build pkg-md5-sum if requested
1273     generate_package_md5sum \
1274     --pcat "${PCATEGORIE}" \
1275     --pname "${PNAME}" \
1276     --pver "${PVER}" \
1277     --pbuild "${PBUILD}" \
1278     --parch "${ARCH}"
1279    
1280     echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
1281     fi
1282    
1283     # build src-pkg-tarball if requested
1284     [[ ${CREATE_SRC_PKG_TARBALL} = true ]] && source_pkg_build ${SMAGENAME}
1285   ;;   ;;
1286  esac  esac
1287    
1288  #for sure  # for sure
1289  unset NOPKGBUILD  unset NOPKGBUILD
1290    unset NOSTRIP
1291    
1292  xtitleclean  xtitleclean
 #echo -e "\nPackage ${PKGNAME} successfully builded.\n"  

Legend:
Removed from v.63  
changed lines
  Added in v.635