Magellan Linux

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

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

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

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