Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 443 - (hide annotations) (download) (as text)
Mon Mar 19 19:24:46 2007 UTC (17 years, 1 month ago) by niro
Original Path: trunk/mage/usr/lib/mage/pkgbuild_dir.sh
File MIME type: application/x-sh
File size: 4820 byte(s)
fixed missing colors and fixed mage.rc inherit

1 niro 24 #!/bin/bash
2    
3     #
4     # builds packages from given dir
5     #
6    
7 niro 443 # $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 niro 24
9 niro 419 # set default user mage.rc
10     : ${MAGERC="/etc/mage.rc"}
11    
12 niro 24 PKGSUFFIX="mpk"
13     PKGNAME="$1"
14     SEARCHDIRS="$2"
15     MLIBDIR=/usr/lib/mage
16    
17 niro 443 ## only for tests -> normally in /etc/rc.d/init.d/functions
18 niro 24 COLRED="\033[1;6m\033[31m"
19     COLGREEN="\033[1;6m\033[32m"
20 niro 443 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 niro 24 COLDEFAULT="\033[0m"
27    
28 niro 443 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 niro 169 # export default C locale
42     export LC_ALL=C
43    
44 niro 272 [[ -z $1 ]] && echo "No package name given. Aborting." && exit 1
45     [[ -z $2 ]] && echo "No source dir given. Aborting." && exit 1
46 niro 24
47 niro 440 source /etc/mage.rc.global
48 niro 443 [[ -f ${MAGERC} ]] && source ${MAGERC}
49 niro 272 source ${MLIBDIR}/mage4.functions.sh
50 niro 24
51 niro 312 # set PKGDIR and BUILDDIR and BINDIR to MROOT
52 niro 347 if [[ -n ${MROOT} ]]
53     then
54     export PKGDIR=${MROOT}/${PKGDIR}
55     export BUILDDIR=${MROOT}/${BUILDDIR}
56     export BINDIR=${MROOT}/${BINDIR}
57     fi
58 niro 312
59 niro 272 build_preinstall()
60     {
61 niro 24 if [ -d ${BUILDDIR}/${PKGNAME} ]
62     then
63     rm -rf ${BUILDDIR}/${PKGNAME}
64     fi
65    
66     install -d ${BUILDDIR}/${PKGNAME}/binfiles
67     touch ${BUILDDIR}/${PKGNAME}/.dirs
68     touch ${BUILDDIR}/${PKGNAME}/.symlinks
69     touch ${BUILDDIR}/${PKGNAME}/.files
70     touch ${BUILDDIR}/${PKGNAME}/.pipes
71     touch ${BUILDDIR}/${PKGNAME}/.char
72     }
73    
74 niro 272 build_postinstall()
75     {
76 niro 440 echo -e "${COLBLUE}===${COLGREEN} fetching files for package '${PKGNAME}' ...${COLDEFAULT}"
77 niro 24
78 niro 272 # md5sums will only be generated for files: $M_MD5SUM
79    
80     # sets mtime to same value of the $BINDIR: $M_MTIME
81     # only needed for files and symlinks
82 niro 24 M_MTIME=$(stat -c %Y ${BINDIR})
83 niro 272
84     # install mtime to package (needed for later checks)
85 niro 24 echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime
86    
87 niro 272 # !! we use § as field seperator !!
88 niro 24 # doing so prevent us to get errors by filenames with spaces
89     BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§)
90 niro 272
91     # sets fieldseperator to "§" instead of " "
92 niro 24 IFS=§
93    
94     for I in $BUILD_TODELFILES
95     do
96     CHECK_SRCDIR="$(echo ${I#${SEARCHDIRS}*}|grep $BUILDDIR)"
97    
98     if [ -z "$CHECK_SRCDIR" ]
99     then
100     FILETYPE="$(stat -c %F $I)"
101     FILEPOSIX="$(stat -c %a $I)"
102     FILEOWNER="$(stat -c %U $I)"
103     FILEGROUP="$(stat -c %G $I)"
104    
105 niro 272 [[ ${FILEOWNER} = UNKNOWN ]] && FILEOWNER="root"
106     [[ ${FILEGROUP} = UNKNOWN ]] && FILEGROUP="root"
107 niro 24
108     case "${FILETYPE}" in
109     "directory")
110 niro 272 if [[ $I != ${SEARCHDIRS} ]]
111 niro 24 then
112     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs
113     fi
114     ;;
115 niro 272
116 niro 24 "symbolic link")
117     LNKDEST="$(readlink $I)"
118     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks
119     ;;
120    
121    
122     "regular empty file")
123     FILEDIR="$(dirname $I)"
124     FILEDIR="${FILEDIR#${SEARCHDIRS}*}"
125     M_MD5SUM="$(md5sum ${I}|cut -d' ' -f1)"
126     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}§${M_MTIME}§${M_MD5SUM}" >> ${BUILDDIR}/${PKGNAME}/.files
127     install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
128     cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
129     ;;
130    
131     "regular file" )
132     FILEDIR="$(dirname $I)"
133     FILEDIR="${FILEDIR#${SEARCHDIRS}*}"
134     M_MD5SUM="$(md5sum ${I}|cut -d' ' -f1)"
135     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}§${M_MTIME}§${M_MD5SUM}" >> ${BUILDDIR}/${PKGNAME}/.files
136     install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
137     cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
138     ;;
139 niro 272
140 niro 24 "block special file")
141     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.pipes
142     ;;
143    
144     "character special file")
145 niro 315 # 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 niro 312 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${CHAR_MAJOR}§${CHAR_MINOR}" >> ${BUILDDIR}/${PKGNAME}/.char
150 niro 24 ;;
151 niro 272
152 niro 24 *)
153     echo "What I am ? -- $I"
154     echo "$0 paused ... Press Enter"
155     read
156     ;;
157     esac
158     fi
159     done
160 niro 272
161     # very important: unsetting the '§' fieldseperator
162 niro 24 unset IFS
163 niro 272
164     # forcing mtime to same value
165 niro 440 echo -e "${COLBLUE}===${COLGREEN} forcing mtime to the same value ...${COLDEFAULT}"
166     find ${BUILDDIR}/${PKGNAME}/binfiles -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';'
167 niro 24 }
168    
169 niro 272 build_rmtimestamp()
170     {
171 niro 24 rm /var/tmp/timestamp
172     }
173    
174 niro 272 build_package()
175     {
176 niro 440 echo -e "${COLBLUE}===${COLGREEN} building package tarball ...${COLDEFAULT}"
177 niro 24 cd ${BUILDDIR}
178     tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME}
179     install -d ${PKGDIR}
180     mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX}
181     }
182    
183     build_preinstall
184     build_postinstall
185     build_package

Properties

Name Value
svn:executable *