Magellan Linux

Diff of /tags/mage-0_4_23/usr/lib/mage/pkgbuild_dir.sh

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

trunk/mage/usr/lib/mage/pkgbuild_dir.sh revision 169 by niro, Sun Jul 31 11:57:05 2005 UTC tags/mage-0_4_23/usr/lib/mage/pkgbuild_dir.sh revision 1210 by niro, Fri Jan 28 21:30:39 2011 UTC
# Line 4  Line 4 
4  # builds packages from given dir  # builds packages from given dir
5  #  #
6    
7  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/pkgbuild_dir.sh,v 1.8 2005-07-31 11:56:55 niro Exp $  # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/pkgbuild_dir.sh,v 1.15 2007-03-19 19:24:46 niro Exp $
8    
9    # set default user mage.rc
10    : ${MAGERC="/etc/mage.rc"}
11    
12  PKGSUFFIX="mpk"  PKGSUFFIX="mpk"
13  PKGNAME="$1"  PKGNAME="$1"
14  SEARCHDIRS="$2"  SEARCHDIRS="$2"
15  MLIBDIR=/usr/lib/mage  MLIBDIR=/usr/lib/mage
16    
17    ## only for tests -> normally in /etc/rc.d/init.d/functions
18  COLRED="\033[1;6m\033[31m"  COLRED="\033[1;6m\033[31m"
19  COLGREEN="\033[1;6m\033[32m"  COLGREEN="\033[1;6m\033[32m"
20    COLYELLOW="\033[1;6m\033[33m"
21    COLBLUE="\033[1;6m\033[34m"
22    COLMAGENTA="\033[1;6m\033[35m"
23    COLWHITE="\033[1;6m\033[37m"
24    COLGRAY="\033[0;6m\033[37m"
25    COLBOLD="\033[1m"
26  COLDEFAULT="\033[0m"  COLDEFAULT="\033[0m"
27    
28    if [[ ${NOCOLORS} = true ]]
29    then
30     COLRED=""
31     COLGREEN=""
32     COLYELLOW=""
33     COLBLUE=""
34     COLMAGENTA=""
35     COLWHITE=""
36     COLGRAY=""
37     COLBOLD=""
38     COLDEFAULT=""
39    fi
40    
41  # export default C locale  # export default C locale
42  export LC_ALL=C  export LC_ALL=C
43    
44  if [ -z "$1" ]  [[ -z $1 ]] && echo "No package name given. Aborting." && exit 1
45  then  [[ -z $2 ]] && echo "No source dir given. Aborting." && exit 1
  echo "No package name given. Aborting."  
 fi  
46    
47  if [ -z "$2" ]  source /etc/mage.rc.global
48  then  [[ -f ${MAGERC} ]] && source ${MAGERC}
49   echo "No source dir given. Aborting."  source ${MLIBDIR}/mage4.functions.sh
 fi  
50    
51  if [ -f /etc/mage.rc ]  # set PKGDIR and BUILDDIR and BINDIR to MROOT
52    if [[ -n ${MROOT} ]]
53  then  then
54   source /etc/mage.rc   export PKGDIR=${MROOT}/${PKGDIR}
55  else   export BUILDDIR=${MROOT}/${BUILDDIR}
56   echo "Your /etc/mage.rc is missing. Aborting."   export BINDIR=${MROOT}/${BINDIR}
  exit 1  
57  fi  fi
 source ${MLIBDIR}/mage3.functions.sh  
58    
59  build_preinstall() {  build_preinstall()
60    {
61   if [ -d ${BUILDDIR}/${PKGNAME} ]   if [ -d ${BUILDDIR}/${PKGNAME} ]
62   then   then
63   rm -rf ${BUILDDIR}/${PKGNAME}   rm -rf ${BUILDDIR}/${PKGNAME}
# Line 51  build_preinstall() { Line 71  build_preinstall() {
71   touch ${BUILDDIR}/${PKGNAME}/.char   touch ${BUILDDIR}/${PKGNAME}/.char
72  }  }
73    
74  build_postinstall() {  build_postinstall()
75    {
76   echo   echo -e "${COLBLUE}===${COLGREEN} fetching files for package '${PKGNAME}' ...${COLDEFAULT}"
77   echo "Fetching files for package '${PKGNAME}' ..."  
78     # md5sums will only be generated for files: $M_MD5SUM
79   #md5sums will only be generated for files: $M_MD5SUM  
80     # sets mtime to same value of the $BINDIR: $M_MTIME
81   #sets mtime to same value of the $BINDIR: $M_MTIME   # only needed for files and symlinks
  #only needed for files and symlinks  
82   M_MTIME=$(stat -c %Y ${BINDIR})   M_MTIME=$(stat -c %Y ${BINDIR})
83    
84   #install mtime to package (needed for later checks)   # install mtime to package (needed for later checks)
85   echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime   echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime
86    
87   #!! we use § as field seperator !!   # !! we use § as field seperator !!
88   # doing so prevent us to get errors by filenames with spaces   # doing so prevent us to get errors by filenames with spaces
89   BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§)   BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§)
90    
91   #sets fieldseperator to "§" instead of " "   # sets fieldseperator to "§" instead of " "
92   IFS=§   IFS=§
93    
94   for I in $BUILD_TODELFILES   for I in $BUILD_TODELFILES
# Line 83  build_postinstall() { Line 102  build_postinstall() {
102   FILEOWNER="$(stat -c %U $I)"   FILEOWNER="$(stat -c %U $I)"
103   FILEGROUP="$(stat -c %G $I)"   FILEGROUP="$(stat -c %G $I)"
104    
105   if [ "${FILEOWNER}" == "UNKNOWN" ]   [[ ${FILEOWNER} = UNKNOWN ]] && FILEOWNER="root"
106   then   [[ ${FILEGROUP} = UNKNOWN ]] && FILEGROUP="root"
  FILEOWNER="root"  
  fi  
   
  if [ "${FILEGROUP}" == "UNKNOWN" ]  
  then  
  FILEGROUP="root"  
  fi  
107    
108   case "${FILETYPE}" in   case "${FILETYPE}" in
109   "directory")   "directory")
110   if [ "$I" != "${SEARCHDIRS}" ]   if [[ $I != ${SEARCHDIRS} ]]
111   then   then
112   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs
113   fi   fi
114   ;;   ;;
115    
116   "symbolic link")   "symbolic link")
117   LNKDEST="$(readlink $I)"   LNKDEST="$(readlink $I)"
118   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks
# Line 124  build_postinstall() { Line 136  build_postinstall() {
136   install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}   install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
137   cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}   cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
138   ;;   ;;
139    
140   "block special file")   "block special file")
141   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.pipes   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.pipes
142   ;;   ;;
143    
144   "character special file")   "character special file")
145   echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.char   # convert hex2dec
146     #  printf '%d' 0x12 -> 18
147     local CHAR_MAJOR="$(printf 0x$(stat -c %t $I))"
148     local CHAR_MINOR="$(printf 0x$(stat -c %T $I))"
149     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${CHAR_MAJOR}§${CHAR_MINOR}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.char
150     ;;
151    
152     "fifo")
153     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.fifo
154   ;;   ;;
155    
156   *)   *)
157   echo "What I am ? -- $I"   echo "What I am ? -- $I"
158   echo "$0 paused ... Press Enter"   echo "$0 paused ... Press Enter"
# Line 141  build_postinstall() { Line 161  build_postinstall() {
161   esac   esac
162   fi   fi
163   done   done
164    
165   #very important: unsetting the '§' fieldseperator   # very important: unsetting the '§' fieldseperator
166   unset IFS   unset IFS
167    
168   #forcing mtime to same value   # forcing mtime to same value
169   echo -n "Forcing mtime to the same value ..."   echo -e "${COLBLUE}===${COLGREEN} forcing mtime to the same value ...${COLDEFAULT}"
170   find ${BUILDDIR}/${PKGNAME}/binfiles \   find ${BUILDDIR}/${PKGNAME}/binfiles -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';'
  -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';' \  
  && echo done || echo false  
   
171  }  }
172    
173  build_rmtimestamp() {  build_rmtimestamp()
174    {
175   rm /var/tmp/timestamp   rm /var/tmp/timestamp
176  }  }
177    
178    build_package()
179  build_package() {  {
180   echo "Building Package ..."   echo -e "${COLBLUE}===${COLGREEN} building package tarball ...${COLDEFAULT}"
181   cd ${BUILDDIR}   cd ${BUILDDIR}
182   tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME}   tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME}
183   install -d ${PKGDIR}   install -d ${PKGDIR}
184   mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX}   mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX}
185  }  }
186    
   
187  build_preinstall  build_preinstall
188  build_postinstall  build_postinstall
189  build_package  build_package

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