Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1210 - (hide annotations) (download) (as text)
Fri Jan 28 21:30:39 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 4996 byte(s)
tagged 'mage-0_4_23'
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 niro 1208 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.pipes
142 niro 24 ;;
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 1208 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${CHAR_MAJOR}§${CHAR_MINOR}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.char
150 niro 24 ;;
151 niro 272
152 niro 1208 "fifo")
153     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.fifo
154     ;;
155    
156 niro 24 *)
157     echo "What I am ? -- $I"
158     echo "$0 paused ... Press Enter"
159     read
160     ;;
161     esac
162     fi
163     done
164 niro 272
165     # very important: unsetting the '§' fieldseperator
166 niro 24 unset IFS
167 niro 272
168     # forcing mtime to same value
169 niro 440 echo -e "${COLBLUE}===${COLGREEN} forcing mtime to the same value ...${COLDEFAULT}"
170     find ${BUILDDIR}/${PKGNAME}/binfiles -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';'
171 niro 24 }
172    
173 niro 272 build_rmtimestamp()
174     {
175 niro 24 rm /var/tmp/timestamp
176     }
177    
178 niro 272 build_package()
179     {
180 niro 440 echo -e "${COLBLUE}===${COLGREEN} building package tarball ...${COLDEFAULT}"
181 niro 24 cd ${BUILDDIR}
182     tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME}
183     install -d ${PKGDIR}
184     mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX}
185     }
186    
187     build_preinstall
188     build_postinstall
189     build_package

Properties

Name Value
svn:executable *