Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 60 - (show annotations) (download) (as text)
Tue Feb 15 22:59:14 2005 UTC (19 years, 2 months ago) by niro
File MIME type: application/x-sh
File size: 3890 byte(s)
rev bump to 0.3.6-r13

1 #!/bin/bash
2
3 #
4 # builds packages from given dir
5 #
6
7 # version: 0.3.6-r13
8
9 PKGSUFFIX="mpk"
10 PKGNAME="$1"
11 SEARCHDIRS="$2"
12 MLIBDIR=/usr/lib/mage
13
14 COLRED="\033[1;6m\033[31m"
15 COLGREEN="\033[1;6m\033[32m"
16 COLDEFAULT="\033[0m"
17
18 if [ -z "$1" ]
19 then
20 echo "No package name given. Aborting."
21 fi
22
23 if [ -z "$2" ]
24 then
25 echo "No source dir given. Aborting."
26 fi
27
28 if [ -f /etc/mage.rc ]
29 then
30 source /etc/mage.rc
31 else
32 echo "Your /etc/mage.rc is missing. Aborting."
33 exit 1
34 fi
35 source ${MLIBDIR}/mage3.functions.sh
36
37 build_preinstall() {
38 if [ -d ${BUILDDIR}/${PKGNAME} ]
39 then
40 rm -rf ${BUILDDIR}/${PKGNAME}
41 fi
42
43 install -d ${BUILDDIR}/${PKGNAME}/binfiles
44 touch ${BUILDDIR}/${PKGNAME}/.dirs
45 touch ${BUILDDIR}/${PKGNAME}/.symlinks
46 touch ${BUILDDIR}/${PKGNAME}/.files
47 touch ${BUILDDIR}/${PKGNAME}/.pipes
48 touch ${BUILDDIR}/${PKGNAME}/.char
49 }
50
51 build_postinstall() {
52
53 echo
54 echo "Fetching files for package '${PKGNAME}' ..."
55
56 #md5sums will only be generated for files: $M_MD5SUM
57
58 #sets mtime to same value of the $BINDIR: $M_MTIME
59 #only needed for files and symlinks
60 M_MTIME=$(stat -c %Y ${BINDIR})
61
62 #install mtime to package (needed for later checks)
63 echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime
64
65 #!! we use § as field seperator !!
66 # doing so prevent us to get errors by filenames with spaces
67 BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§)
68
69 #sets fieldseperator to "§" instead of " "
70 IFS=§
71
72 for I in $BUILD_TODELFILES
73 do
74 CHECK_SRCDIR="$(echo ${I#${SEARCHDIRS}*}|grep $BUILDDIR)"
75
76 if [ -z "$CHECK_SRCDIR" ]
77 then
78 FILETYPE="$(stat -c %F $I)"
79 FILEPOSIX="$(stat -c %a $I)"
80 FILEOWNER="$(stat -c %U $I)"
81 FILEGROUP="$(stat -c %G $I)"
82
83 if [ "${FILEOWNER}" == "UNKNOWN" ]
84 then
85 FILEOWNER="root"
86 fi
87
88 if [ "${FILEGROUP}" == "UNKNOWN" ]
89 then
90 FILEGROUP="root"
91 fi
92
93 case "${FILETYPE}" in
94 "directory")
95 if [ "$I" != "${SEARCHDIRS}" ]
96 then
97 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs
98 fi
99 ;;
100
101 "symbolic link")
102 LNKDEST="$(readlink $I)"
103 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks
104 ;;
105
106
107 "regular empty file")
108 FILEDIR="$(dirname $I)"
109 FILEDIR="${FILEDIR#${SEARCHDIRS}*}"
110 M_MD5SUM="$(md5sum ${I}|cut -d' ' -f1)"
111 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}§${M_MTIME}§${M_MD5SUM}" >> ${BUILDDIR}/${PKGNAME}/.files
112 install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
113 cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
114 ;;
115
116 "regular file" )
117 FILEDIR="$(dirname $I)"
118 FILEDIR="${FILEDIR#${SEARCHDIRS}*}"
119 M_MD5SUM="$(md5sum ${I}|cut -d' ' -f1)"
120 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}§${M_MTIME}§${M_MD5SUM}" >> ${BUILDDIR}/${PKGNAME}/.files
121 install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
122 cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR}
123 ;;
124
125 "block special file")
126 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.pipes
127 ;;
128
129 "character special file")
130 echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.char
131 ;;
132
133 *)
134 echo "What I am ? -- $I"
135 echo "$0 paused ... Press Enter"
136 read
137 ;;
138 esac
139 fi
140 done
141
142 #very important: unsetting the '§' fieldseperator
143 unset IFS
144
145 #forcing mtime to same value
146 echo -n "Forcing mtime to the same value ..."
147 find ${BUILDDIR}/${PKGNAME}/binfiles \
148 -exec touch -m -r ${BUILDDIR}/${PKGNAME}/.mtime '{}' ';' \
149 && echo done || echo false
150
151 }
152
153 build_rmtimestamp() {
154 rm /var/tmp/timestamp
155 }
156
157
158 build_package() {
159 echo "Building Package ..."
160 cd ${BUILDDIR}
161 tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME}
162 install -d ${PKGDIR}
163 mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX}
164 }
165
166
167 build_preinstall
168 build_postinstall
169 build_package

Properties

Name Value
svn:executable *