Magellan Linux

Annotation of /trunk/mage/usr/lib/mage/pkgbuild_dir.sh

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1215 - (hide annotations) (download) (as text)
Fri Jan 28 21:50:22 2011 UTC (13 years, 3 months ago) by niro
File MIME type: application/x-sh
File size: 5032 byte(s)
- add empty fifo
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 niro 1215 touch ${BUILDDIR}/${PKGNAME}/.fifo
73 niro 24 }
74    
75 niro 272 build_postinstall()
76     {
77 niro 440 echo -e "${COLBLUE}===${COLGREEN} fetching files for package '${PKGNAME}' ...${COLDEFAULT}"
78 niro 24
79 niro 272 # md5sums will only be generated for files: $M_MD5SUM
80    
81     # sets mtime to same value of the $BINDIR: $M_MTIME
82     # only needed for files and symlinks
83 niro 24 M_MTIME=$(stat -c %Y ${BINDIR})
84 niro 272
85     # install mtime to package (needed for later checks)
86 niro 24 echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime
87    
88 niro 272 # !! we use § as field seperator !!
89 niro 24 # doing so prevent us to get errors by filenames with spaces
90     BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§)
91 niro 272
92     # sets fieldseperator to "§" instead of " "
93 niro 24 IFS=§
94    
95     for I in $BUILD_TODELFILES
96     do
97     CHECK_SRCDIR="$(echo ${I#${SEARCHDIRS}*}|grep $BUILDDIR)"
98    
99     if [ -z "$CHECK_SRCDIR" ]
100     then
101     FILETYPE="$(stat -c %F $I)"
102     FILEPOSIX="$(stat -c %a $I)"
103     FILEOWNER="$(stat -c %U $I)"
104     FILEGROUP="$(stat -c %G $I)"
105    
106 niro 272 [[ ${FILEOWNER} = UNKNOWN ]] && FILEOWNER="root"
107     [[ ${FILEGROUP} = UNKNOWN ]] && FILEGROUP="root"
108 niro 24
109     case "${FILETYPE}" in
110     "directory")
111 niro 272 if [[ $I != ${SEARCHDIRS} ]]
112 niro 24 then
113     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs
114     fi
115     ;;
116 niro 272
117 niro 24 "symbolic link")
118     LNKDEST="$(readlink $I)"
119     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks
120     ;;
121    
122    
123     "regular empty file")
124     FILEDIR="$(dirname $I)"
125     FILEDIR="${FILEDIR#${SEARCHDIRS}*}"
126     M_MD5SUM="$(md5sum ${I}|cut -d' ' -f1)"
127     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}§${M_MTIME}§${M_MD5SUM}" >> ${BUILDDIR}/${PKGNAME}/.files
128     install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
129     cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
130     ;;
131    
132     "regular file" )
133     FILEDIR="$(dirname $I)"
134     FILEDIR="${FILEDIR#${SEARCHDIRS}*}"
135     M_MD5SUM="$(md5sum ${I}|cut -d' ' -f1)"
136     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}§${M_MTIME}§${M_MD5SUM}" >> ${BUILDDIR}/${PKGNAME}/.files
137     install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
138     cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
139     ;;
140 niro 272
141 niro 24 "block special file")
142 niro 1208 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.pipes
143 niro 24 ;;
144    
145     "character special file")
146 niro 315 # convert hex2dec
147     # printf '%d' 0x12 -> 18
148     local CHAR_MAJOR="$(printf 0x$(stat -c %t $I))"
149     local CHAR_MINOR="$(printf 0x$(stat -c %T $I))"
150 niro 1208 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${CHAR_MAJOR}§${CHAR_MINOR}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.char
151 niro 24 ;;
152 niro 272
153 niro 1208 "fifo")
154     echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.fifo
155     ;;
156    
157 niro 24 *)
158     echo "What I am ? -- $I"
159     echo "$0 paused ... Press Enter"
160     read
161     ;;
162     esac
163     fi
164     done
165 niro 272
166     # very important: unsetting the '§' fieldseperator
167 niro 24 unset IFS
168 niro 272
169     # forcing mtime to same value
170 niro 440 echo -e "${COLBLUE}===${COLGREEN} forcing mtime to the same value ...${COLDEFAULT}"
171     find ${BUILDDIR}/${PKGNAME}/binfiles -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';'
172 niro 24 }
173    
174 niro 272 build_rmtimestamp()
175     {
176 niro 24 rm /var/tmp/timestamp
177     }
178    
179 niro 272 build_package()
180     {
181 niro 440 echo -e "${COLBLUE}===${COLGREEN} building package tarball ...${COLDEFAULT}"
182 niro 24 cd ${BUILDDIR}
183     tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME}
184     install -d ${PKGDIR}
185     mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX}
186     }
187    
188     build_preinstall
189     build_postinstall
190     build_package

Properties

Name Value
svn:executable *