Magellan Linux

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

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

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

Legend:
Removed from v.59  
changed lines
  Added in v.875