Magellan Linux

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

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

revision 253 by niro, Sun Oct 2 14:23:11 2005 UTC revision 441 by niro, Mon Mar 19 19:21:40 2007 UTC
# Line 4  Line 4 
4  # needs pkgbuild_dir (mage)  # needs pkgbuild_dir (mage)
5    
6  # SMAGE2  # SMAGE2
7  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.37 2005-10-02 14:23:11 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.54 2007-03-19 19:21:40 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 ##
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)"  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() {  xtitle()
77   if [ ${TERM} == "xterm" ]  {
78     if [[ ${TERM} = xterm ]]
79   then   then
80   echo -ne "\033]0;[sMage: $@]\007"   echo -ne "\033]0;[sMage: $@]\007"
81   fi   fi
82   return 0   return 0
83  }  }
84    
85  xtitleclean() {  xtitleclean()
86   if [ ${TERM} == "xterm" ]  {
87     if [[ ${TERM} = xterm ]]
88   then   then
89   echo -ne "\033]0;\007"   echo -ne "\033]0;\007"
90   fi   fi
91   return 0   return 0
92  }  }
93    
94  syncsmage2() {  syncsmage2()
95    {
96   xtitle "Updating smage2-script tree ..."   xtitle "Updating smage2-script tree ..."
97   local i   local i
98   for i in ${SMAGE2RSYNC}   for i in ${SMAGE2RSYNC}
99   do   do
100   rsync \   rsync ${RSYNC_FETCH_OPTIONS} ${i} ${SMAGESCRIPTSDIR}
101   --recursive \   if [[ $? = 0 ]]
  --links \  
  --perms \  
  --times \  
  --devices \  
  --timeout=600 \  
  --verbose \  
  --compress \  
  --progress \  
  --stats \  
  --delete \  
  --delete-after \  
  ${i} ${SMAGESCRIPTSDIR}  
   
  if [ "$?" == "0" ]  
102   then   then
103   break   break
104   else   else
105   continue   continue
106   fi   fi
   
107   done   done
108    
109   #clean up backup files (foo~)   # clean up backup files (foo~)
110   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'   find ${SMAGESCRIPTSDIR} -name *~ -exec rm '{}' ';'
111    
112   xtitleclean   xtitleclean
113  }  }
114    
115  # $1 filename  # $1 filename
116  get_db_md5_sum() {  get_db_md5_sum()
117    {
118   local DB_FILE   local DB_FILE
119   local MD5_FILE   local MD5_FILE
120   local i   local i
# Line 101  get_db_md5_sum() { Line 127  get_db_md5_sum() {
127   echo "${i}"   echo "${i}"
128  }  }
129    
130  download_sources() {  download_sources()
131    {
132    
133   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0   [ -z "${SRC_URI}" ] && echo -e "\nNothing declared to download.\n" && return 0
134    
# Line 113  download_sources() { Line 140  download_sources() {
140   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"   local DB_MD5_SUM_FILE="${MD5DIR}/$(basename ${SMAGENAME} .${SMAGESUFFIX}).md5"
141   local FETCHING   local FETCHING
142   local i mirror   local i mirror
   
143    
144   #install SRCDIR/PNAME if not exist  
145     # install SRCDIR/PNAME if not exist
146   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}   [ ! -d ${SOURCEDIR}/${PNAME} ] && install -d ${SOURCEDIR}/${PNAME}
147    
148   # check if FETCHING is needed   # check if FETCHING is needed
149   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} &> /dev/null )
150   if [[ $? == 0 ]]   if [[ $? = 0 ]]
151   then   then
152   # md5's ok, not fetching needed   # md5's ok, no fetching needed
153   FETCHING=false   FETCHING=false
154   else   else
155   FETCHING=true   FETCHING=true
156   fi   fi
157    
158   for ((i=0; i < EOA; i++))   for ((i=0; i < EOA; i++))
159   do   do
160   # url to file   # url to file
# Line 145  download_sources() { Line 172  download_sources() {
172   fi   fi
173    
174   # if an mirrored file than replace first the mirror uri   # if an mirrored file than replace first the mirror uri
175   if [ -n "$(echo ${my_SRC_URI} | grep 'mirror://')" ]   if [[ -n $(echo ${my_SRC_URI} | grep 'mirror://') ]]
176   then   then
177   for mirror in ${MIRRORS}   for mirror in ${MIRRORS}
178   do   do
179   my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"   my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|mirror:/|${mirror}/sources|g")"
180    
181   #echo "DEBUG: ${MY_SRC_URI}"   if [[ ${FETCHING} = true ]]
182   if [[ ${FETCHING} == true ]]   then
183     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
184     wget \
185     --passive-ftp \
186     --tries 3 \
187     --continue \
188     --progress bar \
189     --directory-prefix="${my_SOURCEDIR}" \
190     "${my_SRC_URI_MIRROR}"
191     if [[ $? = 0 ]]
192     then
193     break
194     else
195     continue
196     fi
197     fi
198     done
199     elif [[ -n $(echo ${my_SRC_URI} | grep 'sourceforge://') ]]
200     then
201     for mirror in ${SOURCEFORGE_MIRRORS}
202     do
203     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|sourceforge:/|${mirror}|g")"
204    
205     if [[ ${FETCHING} = true ]]
206   then   then
207   echo "==> fetching ${my_SRC_URI_MIRROR}"   echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
208   wget \   wget \
209   --passive-ftp \   --passive-ftp \
210   --tries 3 \   --tries 3 \
# Line 162  download_sources() { Line 212  download_sources() {
212   --progress bar \   --progress bar \
213   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
214   "${my_SRC_URI_MIRROR}"   "${my_SRC_URI_MIRROR}"
215   if [ "$?" == "0" ]   if [[ $? = 0 ]]
216     then
217     break
218     else
219     continue
220     fi
221     fi
222     done
223     elif [[ -n $(echo ${my_SRC_URI} | grep 'gnu://') ]]
224     then
225     for mirror in ${GNU_MIRRORS}
226     do
227     my_SRC_URI_MIRROR="$(echo ${my_SRC_URI} | sed "s|gnu:/|${mirror}|g")"
228    
229     if [[ ${FETCHING} = true ]]
230     then
231     echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI_MIRROR}${COLDEFAULT}"
232     wget \
233     --passive-ftp \
234     --tries 3 \
235     --continue \
236     --progress bar \
237     --directory-prefix="${my_SOURCEDIR}" \
238     "${my_SRC_URI_MIRROR}"
239     if [[ $? = 0 ]]
240   then   then
241   break   break
242   else   else
# Line 171  download_sources() { Line 245  download_sources() {
245   fi   fi
246   done   done
247   else   else
248   #echo "DEBUG: ${SRC_URI[${i}]}"   if [[ ${FETCHING} = true ]]
  if [[ ${FETCHING} == true ]]  
249   then   then
250   echo "==> fetching ${my_SRC_URI}"   echo -e "${COLBLUE}==>${COLGREEN} fetching ${my_SRC_URI}${COLDEFAULT}"
251   wget \   wget \
252   --passive-ftp \   --passive-ftp \
253   --tries 3 \   --tries 3 \
# Line 182  download_sources() { Line 255  download_sources() {
255   --progress bar \   --progress bar \
256   --directory-prefix="${my_SOURCEDIR}" \   --directory-prefix="${my_SOURCEDIR}" \
257   "${my_SRC_URI}"   "${my_SRC_URI}"
 # only needed to run through a list of mirrors  
 # if [ "$?" == "0" ]  
 # then  
 # break  
 # else  
 # continue  
 # fi  
258   fi   fi
259   fi   fi
260    
261   # unset them to be shure   # unset them to be shure
262   unset my_SRC_URI   unset my_SRC_URI
263   unset my_SRC_URI_DEST   unset my_SRC_URI_DEST
# Line 201  download_sources() { Line 267  download_sources() {
267    
268   # recheck md5 sums   # recheck md5 sums
269   echo   echo
270   echo ">== Checking MD5 sums:"   echo -e "${COLBLUE}===${COLGREEN} Checking MD5 sums:${COLDEFAULT}"
271   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed"   ( cd ${SOURCEDIR}/${PNAME}; md5sum --check ${DB_MD5_SUM_FILE} ) || die "md5 failed"
272   echo   echo
273    
# Line 210  download_sources() { Line 276  download_sources() {
276  }  }
277    
278  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
279  src_prepare() {  src_prepare()
280    {
281   echo "no src_prepare defined"   echo "no src_prepare defined"
282   sleep 2   sleep 2
283   return 0   return 0
284  }  }
285    
286  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
287  src_compile() {  src_compile()
288    {
289   echo "no src_compile defined"   echo "no src_compile defined"
290   sleep 2   sleep 2
291   return 0   return 0
292  }  }
293    
294  # dummy function, used if that not exist in smage file  # dummy function, used if that not exist in smage file
295  src_install() {  src_install()
296    {
297   echo "no src_install defined"   echo "no src_install defined"
298   sleep 2   sleep 2
299   return 0   return 0
300  }  }
301    
302  mconfigure() {  mlibdir()
303    {
304     local libdir=lib
305     [[ ${ARCH} = x86_64 ]] && libdir=lib64
306    
307     echo "${libdir}"
308    }
309    
310    mconfigure()
311    {
312   if [ -x ./configure ]   if [ -x ./configure ]
313   then   then
314   ./configure \   ./configure \
315   --prefix=/usr \   --prefix=/usr \
316   --host=${CHOST} \   --host=${CHOST} \
317   --mandir=/usr/share/man \   --mandir=/usr/share/man \
318   --infodir=/usr/share/info \   --infodir=/usr/share/info \
319   --datadir=/usr/share \   --datadir=/usr/share \
320   --sysconfdir=/etc \   --sysconfdir=/etc \
321   --localstatedir=/var/lib \   --localstatedir=/var/lib \
322   "$@" || die "mconfigure failed"   --libdir=/usr/$(mlibdir) \
323     "$@" || die "mconfigure failed"
324   else   else
325   echo "configure is not an executable ..."   echo "configure is not an executable ..."
326   exit 1   exit 1
327   fi   fi
328  }  }
329    
330  minstall() {  minstall()
331   if [ -f ./[mM]akefile -o -f ./GNUmakefile ] ; then  {
332     if [ -f ./[mM]akefile -o -f ./GNUmakefile ]
333     then
334   make prefix=${BINDIR}/usr \   make prefix=${BINDIR}/usr \
335   datadir=${BINDIR}/usr/share \   datadir=${BINDIR}/usr/share \
336   infodir=${BINDIR}/usr/share/info \   infodir=${BINDIR}/usr/share/info \
337   localstatedir=${BINDIR}/var/lib \   localstatedir=${BINDIR}/var/lib \
338   mandir=${BINDIR}/usr/share/man \   mandir=${BINDIR}/usr/share/man \
339   sysconfdir=${BINDIR}/etc \   sysconfdir=${BINDIR}/etc \
340     libdir=${BINDIR}/usr/$(mlibdir) \
341   "$@" install || die "minstall failed"   "$@" install || die "minstall failed"
342          else          else
343                  die "no Makefile found"                  die "no Makefile found"
344          fi          fi
345  }  }
346    
347  mmake() {  mmake()
348    {
349   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"   make ${MAKEOPTS} ${EXTRA_EMAKE} "$@"
350  }  }
351    
352  munpack() {  munpack()
353    {
354   local SRCFILE   local SRCFILE
355   local IFTAR   local IFTAR
356   local DEST   local DEST
357    
358   SRCFILE=$1   SRCFILE=$1
359    
360   if [ -z "$2" ]   if [ -z "$2" ]
361   then   then
362   DEST=${BUILDDIR}   DEST=${BUILDDIR}
363   else   else
364   DEST=$2   DEST=$2
365   fi   fi
366    
367     [[ ! -d ${DEST} ]] && install -d ${DEST}
368    
369   case "${SRCFILE##*.}" in   case "${SRCFILE##*.}" in
370   bz2)   bz2)
371   IFTAR="$(basename $SRCFILE .bz2)"   IFTAR="$(basename $SRCFILE .bz2)"
372   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
373   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
374   then   then
375   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvjf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
376   fi   fi
# Line 292  munpack() { Line 378  munpack() {
378   gz)   gz)
379   IFTAR="$(basename $SRCFILE .gz)"   IFTAR="$(basename $SRCFILE .gz)"
380   IFTAR="${IFTAR##*.}"   IFTAR="${IFTAR##*.}"
381   if [ "${IFTAR}" == "tar" ]   if [[ ${IFTAR} = tar ]]
382   then   then
383   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}   tar --no-same-owner -xvzf ${SOURCEDIR}/${PNAME}/${SRCFILE} -C ${DEST}
384   fi   fi
# Line 309  munpack() { Line 395  munpack() {
395   esac   esac
396  }  }
397    
398  mpatch() {  mpatch()
399    {
400   local PATCHOPTS   local PATCHOPTS
401   local PATCHFILE   local PATCHFILE
402    
403   PATCHOPTS=$1   PATCHOPTS=$1
404   PATCHFILE=$2   PATCHFILE=$2
405    
406     echo -e "${COLBLUE}*** ${COLGREEN}Applying patch '${PATCHFILE}'${COLDEFAULT}"
407   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}   patch "${PATCHOPTS}" -i ${SOURCEDIR}/${PNAME}/${PATCHFILE}
408  }  }
409    
410    
411  minstalldocs() {  minstalldocs()
412    {
413   local docfiles   local docfiles
   
414   docfiles="$@"   docfiles="$@"
415    
416   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]   if [ ! -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} ]
417   then   then
418   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."   install -d ${BINDIR}/usr/share/doc/${PNAME}-${PVER} || die "creating doc dirs."
419   fi   fi
420    
421   for i in ${docfiles}   for i in ${docfiles}
422   do   do
423   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."   cat ${i} | gzip -9c > ${i}.gz || die "gzipping docs."
# Line 338  minstalldocs() { Line 426  minstalldocs() {
426   done   done
427  }  }
428    
429  mstriplibs() {  mstriplibs()
430    {
431   local stripdir="$@"   local stripdir="$@"
432    
433   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
434   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
435  }  }
436    
437  mstripbins() {  mstripbins()
438    {
439   local stripdir="$@"   local stripdir="$@"
440    
441   [ -z "${stripdir}" ] && stripdir=${BINDIR}   [ -z "${stripdir}" ] && stripdir=${BINDIR}
442   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
443  }  }
444    
445  sminclude() {  sminclude()
446    {
447   local i   local i
448    
449   if [[ -n "$@" ]]   if [[ -n "$@" ]]
# Line 366  sminclude() { Line 457  sminclude() {
457   fi   fi
458  }  }
459    
460  setup_distcc_environment(){  setup_distcc_environment()
461    {
462   if [ -x /usr/bin/distcc ]   if [ -x /usr/bin/distcc ]
463   then   then
464   echo "Using DistCC for compilation ..."   echo -e "${COLBLUE}---${COLGREEN} Using DistCC for compilation ...${COLDEFAULT}"
465   export PATH=/usr/lib/distcc/bin:${PATH} || die "distcc: could not export new $PATH"   export PATH=/usr/$(mlibdir)/distcc/bin:${PATH} || die "distcc: could not export new $PATH"
   
  #export distcc as compiler  
 # export CC="distcc"  
 # export CXX=distcc  
466    
467   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"   export DISTCC_DIR="${DISTCC_DIR}" || die "distcc_dir export failed"
468    
469     # creating distcc tempdir
  #ccache + distcc together  
  if [ "${SMAGE_USE_CCACHE}" == "true" ]  
  then  
  if [ -x /usr/bin/ccache ]  
  then  
  echo "Preparing DistCC to work together with CCache ..."  
  #export CCACHE_PREFIX="distcc" || die "distcc: could not set ccach_prefix"  
 # export CC="ccache distcc"  
 # export CXX="ccache distcc"  
  fi  
  fi  
   
  #creating distcc tempdir  
470   install -o distcc -g daemon -d ${DISTCC_DIR}   install -o distcc -g daemon -d ${DISTCC_DIR}
471   chmod 1777 ${DISTCC_DIR}   chmod 1777 ${DISTCC_DIR}
472   fi   fi
473  }  }
474    
475  setup_ccache_environment(){  setup_ccache_environment()
476    {
477   if [ -x /usr/bin/ccache ]   if [ -x /usr/bin/ccache ]
478   then   then
479   echo "Using CCache for compilation ..."   echo -e "${COLBLUE}---${COLGREEN} Using CCache for compilation ...${COLDEFAULT}"
480   export PATH=/usr/lib/ccache/bin:${PATH} || die "ccache: could not export new $PATH"   export PATH=/usr/$(mlibdir)/ccache/bin:${PATH} || die "ccache: could not export new $PATH"
  #unset CC CXX  
481   fi   fi
482  }  }
483    
484    
485  # fixes given dependencies to match a MAGE_TARGET  # fixes given dependencies to match a MAGE_TARGET
486  # fix_mage_deps -target s/depend # <-- note -target !  # fix_mage_deps -target s/depend # <-- note -target !
487  fix_mage_deps() {  fix_mage_deps()
488    {
489   local target="$1"   local target="$1"
490   local depend="$2"   local depend="$2"
491   local NDEPEND   local NDEPEND
# Line 424  fix_mage_deps() { Line 500  fix_mage_deps() {
500   # fix DEPEND   # fix DEPEND
501   while read sym dep   while read sym dep
502   do   do
503     # ignore empty lines
504     [[ -z ${dep} ]] && continue
505    
506   cat="$(dirname ${dep})"   cat="$(dirname ${dep})"
507   # change if not virtual   # change if not virtual
508   if [[ ${cat} = virtual ]]   if [[ ${cat} = virtual ]]
# Line 504  build_mage_script() Line 583  build_mage_script()
583   dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"   dest="${MAGE_TREE_DEST}/${PCATEGORIE}/${PNAME}${target}/${magefile}"
584    
585   # show what we are doing   # show what we are doing
586   echo "Generating Mage file:"   echo -e "${COLBLUE}===${COLGREEN} generating mage file:${COLDEFAULT}"
587   echo "  ${dest}"   echo "${dest}"
588    
589   install -d "$(dirname ${dest})"   install -d "$(dirname ${dest})"
590   # now build the mage file   # now build the mage file
591   > ${dest}   > ${dest}
592    
593   # header   # header
594   echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.37 2005-10-02 14:23:11 niro Exp $' >> ${dest}   echo '# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/smage2.sh,v 1.54 2007-03-19 19:21:40 niro Exp $' >> ${dest}
595   echo  >> ${dest}   echo  >> ${dest}
596    
597   # pgkname and state   # pgkname and state
# Line 666  export_inherits() Line 745  export_inherits()
745   done   done
746  }  }
747    
748    generate_package_md5sum()
749    {
750     local dest
751     local pcat
752     local pname
753     local pver
754     local pbuild
755     local parch
756     local target
757     local pkgname
758    
759     # very basic getops
760     for i in $*
761     do
762     case $1 in
763     --pcat|-c) shift; pcat="$1" ;;
764     --pname|-n) shift; pname="$1" ;;
765     --pver|-v) shift; pver="$1" ;;
766     --pbuild|-b) shift; pbuild="$1" ;;
767     --parch|a) shift; parch="$1" ;;
768     --target|t) shift; target="$1" ;;
769     esac
770     shift
771     done
772    
773     # sanity checks; abort if not given
774     [ -z "${pcat}" ] && die "generate_package_md5sum() \$pcat not given."
775     [ -z "${pname}" ] && die "generate_package_md5sum() \$pname not given."
776     [ -z "${pver}" ] && die "generate_package_md5sum() \$pver not given."
777     [ -z "${pbuild}" ] && die "generate_package_md5sum() \$pbuild not given."
778     [ -z "${parch}" ] && die "generate_package_md5sum() \$parch not given."
779    
780     # check needed global vars
781     [ -z "${PKGDIR}" ] && die "generate_package_md5sum() \$PKGDIR not set."
782     [ -z "${PKGSUFFIX}" ] && die "generate_package_md5sum() \$PKGSUFFIX not set."
783    
784     # fix target as it may be empty !
785     [ -n "${target}" ] && target="-${target}"
786    
787     # build pkgname
788     pkgname="${pname}${target}-${pver}-${parch}-${pbuild}"
789    
790     # build pkg-md5-sum only if requested
791     if [[ ${REGEN_MAGE_TREE} = true ]]
792     then
793     echo -ne "${COLBLUE}===${COLGREEN} generating md5's for ${pkgname}.${PKGSUFFIX} ... ${COLDEFAULT}"
794    
795     # abort if not exist
796     if [ ! -f ${PKGDIR}/${pkgname}.${PKGSUFFIX} ]
797     then
798     echo -e "${COLRED}! exists${COLDEFAULT}"
799     return 0
800     fi
801    
802     # if MAGE_TREE_DEST not set use BUILDDIR
803     : ${MAGE_TREE_DEST=${BUILDDIR}/mage-tree}
804    
805     # setup md5 dir
806     dest="${MAGE_TREE_DEST}/${pcat}/${pname}/md5"
807     install -d ${dest}
808    
809     # gen md5sum
810     ( cd ${PKGDIR}; md5sum "${pkgname}.${PKGSUFFIX}" ) \
811     > ${dest}/${pkgname}.md5
812     echo -e "${COLGREEN}done${COLDEFAULT}"
813     fi
814    }
815    
816    source_pkg_build()
817    {
818     if [[ ${PKGTYPE} = virtual ]]
819     then
820     echo "Virtual package detected; src-pkg-tarball not necessary ..."
821     return 0
822     fi
823    
824     if [[ ! -d ${SOURCEDIR}/${PNAME} ]]
825     then
826     echo "No SRC_URI defined; src-pkg-tarball not necessary ..."
827     return 0
828     fi
829    
830     [ -z "${SRCPKGDIR}" ] && die "\$SRCPKGDIR not found. Please setup your ${MAGERC} correctly."
831    
832     echo -e "${COLGREEN}Creating source package tarball ... ${COLDEFAULT}"
833    
834     # include the smage2 file
835     cp ${SMAGENAME} ${SOURCEDIR}/${PNAME}
836    
837     ( cd ${SOURCEDIR}; tar cvjf ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${PNAME}; )
838     [[ ! -d ${SRCPKGDIR} ]] && install -d ${SRCPKGDIR}
839     mv ${BUILDDIR}/${PNAME}-${PVER}-${PBUILD}.tar.bz2 ${SRCPKGDIR}/${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX}
840    
841     echo -e "${COLGREEN}Source package ${COLBLUE}${PNAME}-${PVER}-${PBUILD}.${SRCPKGSUFFIX} ${COLGREEN}successfully builded.${COLDEFAULT}"
842    }
843    
844    
845  # print out our version  # print out our version
846  showversion  showversion
847  echo  echo
# Line 678  then Line 854  then
854  fi  fi
855    
856  # updating smage2-scripts  # updating smage2-scripts
857  if [ "$1" == "update" ]  if [[ $1 = update ]]
858  then  then
859   if [ ! -d ${SOURCEDIR} ]   if [ ! -d ${SOURCEDIR} ]
860   then   then
# Line 689  then Line 865  then
865  fi  fi
866    
867  # creates md5sums for smages to given dir  # creates md5sums for smages to given dir
868  if [ "$1" == "calcmd5" ]  if [[ $1 = calcmd5 ]]
869  then  then
870   if [ $# -ge 3 ]   if [ $# -ge 3 ]
871   then   then
# Line 741  then Line 917  then
917   unset my_SRC_URI_MIRROR   unset my_SRC_URI_MIRROR
918   unset my_SOURCEDIR   unset my_SOURCEDIR
919   done   done
920    
921   echo   echo
922   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."   echo "Calculating of md5 sums for '$(basename ${SMAGENAME} .${SMAGESUFFIX})' done."
923   echo   echo
# Line 754  then Line 930  then
930   echo   echo
931   exit 1   exit 1
932   fi   fi
933    
934   exit 0   exit 0
935  fi  fi
936    
# Line 784  then Line 960  then
960   source ${SMAGENAME} || die "regen: smage2 not found"   source ${SMAGENAME} || die "regen: smage2 not found"
961    
962   regen_mage_tree   regen_mage_tree
963    
964     # build md5sum for existing packages
965     generate_package_md5sum \
966     --pcat "${PCATEGORIE}" \
967     --pname "${PNAME}" \
968     --pver "${PVER}" \
969     --pbuild "${PBUILD}" \
970     --parch "${ARCH}" \
971     --target "${target}"
972    
973   exit 0   exit 0
974  fi  fi
975    
976  if [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ]  if [ "$1" == "--create-src-tarball" -a -n "$2" ]
977  then  then
978   die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."   # set correct SMAGENAME
979  fi   SMAGENAME="$2"
980     MD5DIR="$(dirname ${SMAGENAME})/md5"
981    
982  if [ -z "`basename ${SMAGENAME}|grep .${SMAGESUFFIX}`" ]   echo -e "${COLGREEN}create-src-tarball called for ${COLBLUE}${SMAGENAME}${COLGREEN} ...${COLDEFAULT}"
 then  
  die "File '`basename ${SMAGENAME}`' is not a sMage v${SMAGEVERSION} file. Aborting."  
 fi  
983    
984  if [ -z "${SOURCEDIR}" ]   source ${SMAGENAME} || die "regen: smage2 not found"
 then  
  die "\$SOURCEDIR not found. Please setup your mage.rc correctly."  
 fi  
985    
986  if [ -z "${SMAGESCRIPTSDIR}" ]   if [[ -d ${SOURCEDIR}/${PNAME} ]]
987  then   then
988   die "\$SMAGESCRIPTSDIR not found. Please setup your mage.rc correctly."   echo -e "${COLGREEN}Deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
989  fi   rm -rf ${SOURCEDIR}/${PKGNAME}
990     fi
991    
992  if [ -z "${SMAGE2RSYNC}" ]   download_sources
993  then   source_pkg_build ${SMAGENAME}
994   echo "\$SMAGE2RSYNC not found. Please setup your mage.rc correctly."   exit 0
  exit 1  
995  fi  fi
996    
997  if [ -z "${BINDIR}" ]  if [ "$1" == "--src-tarball" -a -n "$2" ] || [ "$1" == "-st" -a -n "$2" ]
998  then  then
999   die "no BINDIR variable found in /etc/mage.rc"   SRCPKGTARBALL="${2}"
1000  fi   USE_SRC_PKG_TARBALL=true
1001    
1002  if [ -z "${CHOST}" ]   # abort if given file is not a source pkg
1003  then   [[ ${SRCPKGTARBALL##*.} != ${SRCPKGSUFFIX} ]] && die "${SRCPKGTARBALL} is not a valid src-pkg file."
  die "no CHOST variable found in /etc/mage.rc"  
 fi  
1004    
1005  if [ -z "${CFLAGS}" ]   # set correct SMAGENAME; use the one that the src_pkg provide
1006  then   # /path/to/SOURCEDIR/PNAME/SMAGENAME
1007   die "no CFLAGS variable found in /etc/mage.rc"   SMAGENAME="${SOURCEDIR}/$(basename ${SRCPKGTARBALL%-*-*})/$(basename ${SRCPKGTARBALL} .${SRCPKGSUFFIX}).${SMAGESUFFIX}"
 fi  
1008    
1009  if [ -z "${CXXFLAGS}" ]   echo -e "${COLGREEN}Using src-tarball ${COLBLUE}${SRCPKGTARBALL}${COLGREEN} ...${COLDEFAULT}"
1010  then  
1011   die "no CXXFLAGS variable found in /etc/mage.rc"   [[ ! -d ${SOURCEDIR} ]] && install -d ${SOURCEDIR}
1012    
1013     # unpack srctarball
1014     [[ ! -f ${SRCPKGTARBALL} ]] && die "Error: ${SRCPKGTARBALL} does not exist. Aborting."
1015    
1016     tar xvjf ${SRCPKGTARBALL} -C ${SOURCEDIR} || die  "Error unpackung src-tarball ${SRCPKGTARBALL}"
1017    
1018     [[ ! -f ${SMAGENAME} ]] && die "Included smage2 file in src-tarball not found: ${SMAGENAME}"
1019  fi  fi
1020    
1021    
1022    [ ! -e ${MLIBDIR}/pkgbuild_dir.sh ] && die "Error: ${MLIBDIR}/pkgbuild_dir.sh not found. Aborting."
1023    [ -z "$(basename ${SMAGENAME} | grep .${SMAGESUFFIX})" ] &&
1024     die "File '$(basename ${SMAGENAME})' is not a sMage v${SMAGEVERSION} file. Aborting."
1025    [ -z "${SOURCEDIR}" ] && die "\$SOURCEDIR not found. Please setup your ${MAGERC} correctly."
1026    [ -z "${SMAGESCRIPTSDIR}" ] && die "\$SMAGESCRIPTSDIR not found. Please setup your ${MAGERC} correctly."
1027    [ -z "${SMAGE2RSYNC}" ] && die "\$SMAGE2RSYNC not found. Please setup your ${MAGERC} correctly."
1028    [ -z "${BINDIR}" ] && die "no BINDIR variable found in ${MAGERC}"
1029    [ -z "${CHOST}" ] && die "no CHOST variable found in ${MAGERC}"
1030    [ -z "${CFLAGS}" ] && die "no CFLAGS variable found in ${MAGERC}"
1031    [ -z "${CXXFLAGS}" ] && die "no CXXFLAGS variable found in ${MAGERC}"
1032    
1033  source ${SMAGENAME} || die "source failed"  source ${SMAGENAME} || die "source failed"
1034  PKGNAME="${PNAME}-${PVER}-${CHOST%%-*}-${PBUILD}"  PKGNAME="${PNAME}-${PVER}-${ARCH}-${PBUILD}"
1035  MD5DIR="$(dirname ${SMAGENAME})/md5"  MD5DIR="$(dirname ${SMAGENAME})/md5"
1036    
1037  xtitle "Compiling ${PKGNAME}"  xtitle "Compiling ${PKGNAME}"
1038  echo "Compiling ${PKGNAME}"  echo -e "${COLGREEN}Compiling ${PKGNAME}${COLDEFAULT}"
1039    
1040  # auto regen mage tree if requested  # auto regen mage tree if requested
1041  regen_mage_tree  regen_mage_tree
1042    
1043    if [[ ${CREATE_SRC_PKG_TARBALL} = true ]]
1044    then
1045     if [[ -d ${SOURCEDIR}/${PNAME} ]]
1046     then
1047     echo -e "${COLBLUE}===${COLGREEN} deleting old sourcefiles ${COLBLUE}${SOURCEDIR}/${PNAME}${COLGREEN} ...${COLDEFAULT}"
1048     rm -rf ${SOURCEDIR}/${PNAME}
1049     fi
1050    fi
1051    
1052  # download sources  # download sources
1053  download_sources  [[ ${USE_SRC_PKG_TARBALL} != true ]] && download_sources
1054    
1055  # fixes some issues with these functions  # fixes some issues with these functions
1056  export -f src_prepare || die "src_prepare export failed"  export -f src_prepare || die "src_prepare export failed"
# Line 861  export MAKEOPTS="${MAKEOPTS}" || die "MA Line 1066  export MAKEOPTS="${MAKEOPTS}" || die "MA
1066    
1067    
1068  # setup distcc  # setup distcc
1069  # 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
1070  if [ "${SMAGE_USE_DISTCC}" == "true" ]  [[ ${SMAGE_USE_DISTCC} = true ]] && setup_distcc_environment
 then  
  setup_distcc_environment  
 fi  
1071    
1072  # setup ccache  # setup ccache
1073  if [ "${SMAGE_USE_CCACHE}" == "true" ]  [[ ${SMAGE_USE_CCACHE} = true ]] && setup_ccache_environment
 then  
  setup_ccache_environment  
 fi  
   
1074    
1075  # small sleep to show our settings  # small sleep to show our settings
1076  sleep 1  sleep 1
1077    
 #debug  
 #echo "CC=${CC}"  
 #echo "CXX=${CXX}"  
 #echo "DISTCC_DIR=${DISTCC_DIR}"  
 #echo "PATH: ${PATH}"  
 #echo "--------------------------------------"  
 #env  
 #echo "--------------------------------------"  
 #read  
 #debug end  
   
1078  # cleans up build if a previously one exists  # cleans up build if a previously one exists
1079  if [ -d ${BUILDDIR} ]  if [ -d ${BUILDDIR} ]
1080  then  then
# Line 926  src_install || die "src_install failed" Line 1113  src_install || die "src_install failed"
1113    
1114    
1115  # compressing doc, info & man files  # compressing doc, info & man files
 echo -e "Compressing man-pages ..."  
1116  if [ -d ${BUILDDIR}/builded/usr/share/man ]  if [ -d ${BUILDDIR}/builded/usr/share/man ]
1117  then  then
1118     echo -e "${COLBLUE}===${COLGREEN} compressing man-pages ...${COLDEFAULT}"
1119   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/man
1120  fi  fi
1121    
 echo -e "Compressing info-pages ..."  
1122  if [ -d ${BUILDDIR}/builded/usr/share/info ]  if [ -d ${BUILDDIR}/builded/usr/share/info ]
1123  then  then
1124     echo -e "${COLBLUE}===${COLGREEN} compressing info-pages ...${COLDEFAULT}"
1125   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info   ${MLIBDIR}/compressdoc -g -9 ${BUILDDIR}/builded/usr/share/info
1126  fi  fi
1127    
# Line 944  case ${NOSTRIP} in Line 1131  case ${NOSTRIP} in
1131   echo -e "NOSTRIP=true detected; Package will not be stripped ..."   echo -e "NOSTRIP=true detected; Package will not be stripped ..."
1132   ;;   ;;
1133   *)   *)
1134   echo -e "Stripping binaries ..."   echo -e "${COLBLUE}===${COLGREEN} stripping binaries ...${COLDEFAULT}"
1135   mstripbins ${BINDIR}   mstripbins ${BINDIR}
1136   echo -e "Stripping libraries ..."   echo -e "${COLBLUE}===${COLGREEN} stripping libraries ...${COLDEFAULT}"
1137   mstriplibs ${BINDIR}   mstriplibs ${BINDIR}
1138   ;;   ;;
1139  esac  esac
# Line 957  case ${NOPKGBUILD} in Line 1144  case ${NOPKGBUILD} in
1144   echo -e "NOPGKBUILD=true detected; Package will not be build ..."   echo -e "NOPGKBUILD=true detected; Package will not be build ..."
1145   ;;   ;;
1146   *)   *)
1147   # build serveral targets   # build several targets
1148   if [ -n "${MAGE_TARGETS}" ]   if [ -n "${MAGE_TARGETS}" ]
1149   then   then
1150   for target in ${MAGE_TARGETS}   for target in ${MAGE_TARGETS}
# Line 970  case ${NOPKGBUILD} in Line 1157  case ${NOPKGBUILD} in
1157   fi   fi
1158   # now create the target package   # now create the target package
1159   ${MLIBDIR}/pkgbuild_dir.sh \   ${MLIBDIR}/pkgbuild_dir.sh \
1160   "${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD}" \   "${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD}" \
1161   ${BINDIR} || die "target: ${target} package-build failed"   ${BINDIR} || die "target: ${target} package-build failed"
1162   echo -e "\nPackage ${PNAME}-${target}-${PVER}-${CHOST%%-*}-${PBUILD} successfully builded.\n"  
1163     # build pkg-md5-sum if requested
1164     generate_package_md5sum \
1165     --pcat "${PCATEGORIE}" \
1166     --pname "${PNAME}" \
1167     --pver "${PVER}" \
1168     --pbuild "${PBUILD}" \
1169     --parch "${ARCH}" \
1170     --target "${target}"
1171    
1172     echo -e "${COLGREEN}\nPackage ${PNAME}-${target}-${PVER}-${ARCH}-${PBUILD} successfully builded.\n${COLDEFAULT}"
1173   done   done
1174   else   else
1175   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"   ${MLIBDIR}/pkgbuild_dir.sh ${PKGNAME} ${BINDIR} || die "package-build failed"
1176   echo -e "\nPackage ${PKGNAME} successfully builded.\n"  
1177     # build pkg-md5-sum if requested
1178     generate_package_md5sum \
1179     --pcat "${PCATEGORIE}" \
1180     --pname "${PNAME}" \
1181     --pver "${PVER}" \
1182     --pbuild "${PBUILD}" \
1183     --parch "${ARCH}"
1184    
1185     echo -e "${COLGREEN}\nPackage ${PKGNAME} successfully builded.\n${COLDEFAULT}"
1186   fi   fi
1187    
1188     # build src-pkg-tarball if requested
1189     [[ ${CREATE_SRC_PKG_TARBALL} = true ]] && source_pkg_build ${SMAGENAME}
1190   ;;   ;;
1191  esac  esac
1192    
1193  # for sure  # for sure
1194  unset NOPKGBUILD  unset NOPKGBUILD
1195  unset NOSTRIP  unset NOSTRIP
1196    
1197  xtitleclean  xtitleclean
 #echo -e "\nPackage ${PKGNAME} successfully builded.\n"  

Legend:
Removed from v.253  
changed lines
  Added in v.441