4 |
# builds packages from given dir |
# builds packages from given dir |
5 |
# |
# |
6 |
|
|
7 |
# version: 0.3.6-r13 |
# $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 [ -z "$1" ] |
if [[ ${NOCOLORS} = true ]] |
29 |
then |
then |
30 |
echo "No package name given. Aborting." |
COLRED="" |
31 |
|
COLGREEN="" |
32 |
|
COLYELLOW="" |
33 |
|
COLBLUE="" |
34 |
|
COLMAGENTA="" |
35 |
|
COLWHITE="" |
36 |
|
COLGRAY="" |
37 |
|
COLBOLD="" |
38 |
|
COLDEFAULT="" |
39 |
fi |
fi |
40 |
|
|
41 |
if [ -z "$2" ] |
# export default C locale |
42 |
then |
export LC_ALL=C |
43 |
echo "No source dir given. Aborting." |
|
44 |
fi |
[[ -z $1 ]] && echo "No package name given. Aborting." && exit 1 |
45 |
|
[[ -z $2 ]] && echo "No source dir given. Aborting." && exit 1 |
46 |
|
|
47 |
|
source /etc/mage.rc.global |
48 |
|
[[ -f ${MAGERC} ]] && source ${MAGERC} |
49 |
|
source ${MLIBDIR}/mage4.functions.sh |
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} |
69 |
touch ${BUILDDIR}/${PKGNAME}/.files |
touch ${BUILDDIR}/${PKGNAME}/.files |
70 |
touch ${BUILDDIR}/${PKGNAME}/.pipes |
touch ${BUILDDIR}/${PKGNAME}/.pipes |
71 |
touch ${BUILDDIR}/${PKGNAME}/.char |
touch ${BUILDDIR}/${PKGNAME}/.char |
72 |
|
touch ${BUILDDIR}/${PKGNAME}/.fifo |
73 |
} |
} |
74 |
|
|
75 |
build_postinstall() { |
build_postinstall() |
76 |
|
{ |
77 |
echo |
echo -e "${COLBLUE}===${COLGREEN} fetching files for package '${PKGNAME}' ...${COLDEFAULT}" |
78 |
echo "Fetching files for package '${PKGNAME}' ..." |
|
79 |
|
# md5sums will only be generated for files: $M_MD5SUM |
80 |
#md5sums will only be generated for files: $M_MD5SUM |
|
81 |
|
# sets mtime to same value of the $BINDIR: $M_MTIME |
82 |
#sets mtime to same value of the $BINDIR: $M_MTIME |
# only needed for files and symlinks |
|
#only needed for files and symlinks |
|
83 |
M_MTIME=$(stat -c %Y ${BINDIR}) |
M_MTIME=$(stat -c %Y ${BINDIR}) |
84 |
|
|
85 |
#install mtime to package (needed for later checks) |
# install mtime to package (needed for later checks) |
86 |
echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime |
echo "${M_MTIME}" > ${BUILDDIR}/${PKGNAME}/.mtime |
87 |
|
|
88 |
#!! we use § as field seperator !! |
# !! we use § as field seperator !! |
89 |
# doing so prevent us to get errors by filenames with spaces |
# doing so prevent us to get errors by filenames with spaces |
90 |
BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§) |
BUILD_TODELFILES=$(find ${SEARCHDIRS} -printf %p§) |
91 |
|
|
92 |
#sets fieldseperator to "§" instead of " " |
# sets fieldseperator to "§" instead of " " |
93 |
IFS=§ |
IFS=§ |
94 |
|
|
95 |
for I in $BUILD_TODELFILES |
for I in $BUILD_TODELFILES |
103 |
FILEOWNER="$(stat -c %U $I)" |
FILEOWNER="$(stat -c %U $I)" |
104 |
FILEGROUP="$(stat -c %G $I)" |
FILEGROUP="$(stat -c %G $I)" |
105 |
|
|
106 |
if [ "${FILEOWNER}" == "UNKNOWN" ] |
[[ ${FILEOWNER} = UNKNOWN ]] && FILEOWNER="root" |
107 |
then |
[[ ${FILEGROUP} = UNKNOWN ]] && FILEGROUP="root" |
|
FILEOWNER="root" |
|
|
fi |
|
|
|
|
|
if [ "${FILEGROUP}" == "UNKNOWN" ] |
|
|
then |
|
|
FILEGROUP="root" |
|
|
fi |
|
108 |
|
|
109 |
case "${FILETYPE}" in |
case "${FILETYPE}" in |
110 |
"directory") |
"directory") |
111 |
if [ "$I" != "${SEARCHDIRS}" ] |
if [[ $I != ${SEARCHDIRS} ]] |
112 |
then |
then |
113 |
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs |
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.dirs |
114 |
fi |
fi |
115 |
;; |
;; |
116 |
|
|
117 |
"symbolic link") |
"symbolic link") |
118 |
LNKDEST="$(readlink $I)" |
LNKDEST="$(readlink $I)" |
119 |
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks |
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${LNKDEST#${SEARCHDIRS}*}§${M_MTIME}" >> ${BUILDDIR}/${PKGNAME}/.symlinks |
137 |
install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR} |
install -d ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR} |
138 |
cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR} |
cp ${I} ${BUILDDIR}/${PKGNAME}/binfiles/${FILEDIR} |
139 |
;; |
;; |
140 |
|
|
141 |
"block special file") |
"block special file") |
142 |
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.pipes |
# convert hex2dec |
143 |
|
# printf '%d' 0x12 -> 18 |
144 |
|
local CHAR_MAJOR="$(printf 0x$(stat -c %t $I))" |
145 |
|
local CHAR_MINOR="$(printf 0x$(stat -c %T $I))" |
146 |
|
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEPOSIX}§${CHAR_MAJOR}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.pipes |
147 |
;; |
;; |
148 |
|
|
149 |
"character special file") |
"character special file") |
150 |
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}" >> ${BUILDDIR}/${PKGNAME}/.char |
# convert hex2dec |
151 |
|
# printf '%d' 0x12 -> 18 |
152 |
|
local CHAR_MAJOR="$(printf 0x$(stat -c %t $I))" |
153 |
|
local CHAR_MINOR="$(printf 0x$(stat -c %T $I))" |
154 |
|
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${CHAR_MAJOR}§${CHAR_MINOR}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.char |
155 |
;; |
;; |
156 |
|
|
157 |
|
"fifo") |
158 |
|
echo "${I#${SEARCHDIRS}*}§${FILEPOSIX}§${FILEOWNER}§${FILEGROUP}" >> ${BUILDDIR}/${PKGNAME}/.fifo |
159 |
|
;; |
160 |
|
|
161 |
*) |
*) |
162 |
echo "What I am ? -- $I" |
echo "What I am ? -- $I" |
163 |
echo "$0 paused ... Press Enter" |
echo "$0 paused ... Press Enter" |
166 |
esac |
esac |
167 |
fi |
fi |
168 |
done |
done |
169 |
|
|
170 |
#very important: unsetting the '§' fieldseperator |
# very important: unsetting the '§' fieldseperator |
171 |
unset IFS |
unset IFS |
172 |
|
|
173 |
#forcing mtime to same value |
# forcing mtime to same value |
174 |
echo -n "Forcing mtime to the same value ..." |
echo -e "${COLBLUE}===${COLGREEN} forcing mtime to the same value ...${COLDEFAULT}" |
175 |
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 |
|
|
|
|
176 |
} |
} |
177 |
|
|
178 |
build_rmtimestamp() { |
build_rmtimestamp() |
179 |
|
{ |
180 |
rm /var/tmp/timestamp |
rm /var/tmp/timestamp |
181 |
} |
} |
182 |
|
|
183 |
|
build_package() |
184 |
build_package() { |
{ |
185 |
echo "Building Package ..." |
echo -e "${COLBLUE}===${COLGREEN} building package tarball ...${COLDEFAULT}" |
186 |
cd ${BUILDDIR} |
cd ${BUILDDIR} |
187 |
tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME} |
tar cvjf ${PKGNAME}.tar.bz2 ./${PKGNAME} |
188 |
install -d ${PKGDIR} |
install -d ${PKGDIR} |
189 |
mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX} |
mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.${PKGSUFFIX} |
190 |
} |
} |
191 |
|
|
|
|
|
192 |
build_preinstall |
build_preinstall |
193 |
build_postinstall |
build_postinstall |
194 |
build_package |
build_package |