1 |
#!/bin/bash |
#!/bin/bash |
2 |
# $Header: /home/cvsd/magellan-cvs/magellan-src/bootstrap/scripts/mage-bootstrap.sh,v 1.7 2008-03-20 11:55:44 niro Exp $ |
# $Id$ |
3 |
|
|
4 |
TOOLCHAIN="" |
TOOLCHAIN="" |
5 |
BASESYSTEM="" |
BASESYSTEM="" |
8 |
ABORT_AFTER_STAGE1=false |
ABORT_AFTER_STAGE1=false |
9 |
MY_MAGEDIR="" |
MY_MAGEDIR="" |
10 |
MY_PKGDIR="" |
MY_PKGDIR="" |
11 |
|
MAGEUPDATE=true |
12 |
|
MAGEUPDATETARBALL=false |
13 |
|
|
14 |
die() |
die() |
15 |
{ |
{ |
79 |
|
|
80 |
enter_chroot() |
enter_chroot() |
81 |
{ |
{ |
82 |
mount -t proc proc ${MROOT}/proc || die "mount proc" |
is_loc_mounted "${MROOT}/proc" || mount -t proc proc ${MROOT}/proc |
83 |
mount -o bind /dev ${MROOT}/dev || die "mount dev" |
is_loc_mounted "${MROOT}/sys" || mount -t sysfs sysfs ${MROOT}/sys |
84 |
|
is_loc_mounted "${MROOT}/dev" || mount -o bind /dev ${MROOT}/dev |
85 |
|
|
86 |
chroot ${MROOT} /bin/bash -i /.installrc || die "chr00ting" |
chroot ${MROOT} /bin/bash -i /.installrc || die "chr00ting" |
87 |
|
|
88 |
umount ${MROOT}/dev ${MROOT}/proc || die "mount proc/dev" |
is_loc_mounted "${MROOT}/dev" && umount ${MROOT}/dev |
89 |
|
is_loc_mounted "${MROOT}/sys" && umount ${MROOT}/sys |
90 |
|
is_loc_mounted "${MROOT}/proc" && umount ${MROOT}/proc |
91 |
|
|
92 |
[ -f ${MROOT}/.installrc ] && rm ${MROOT}/.installrc |
[ -f ${MROOT}/.installrc ] && rm ${MROOT}/.installrc |
93 |
} |
} |
108 |
{ |
{ |
109 |
is_loc_mounted "${MROOT}/dev" && umount ${MROOT}/dev |
is_loc_mounted "${MROOT}/dev" && umount ${MROOT}/dev |
110 |
is_loc_mounted "${MROOT}/proc" && umount ${MROOT}/proc |
is_loc_mounted "${MROOT}/proc" && umount ${MROOT}/proc |
111 |
|
is_loc_mounted "${MROOT}/sys" && umount ${MROOT}/sys |
112 |
is_loc_mounted "${MY_MAGEDIR}" && umount ${MY_MAGEDIR} |
is_loc_mounted "${MY_MAGEDIR}" && umount ${MY_MAGEDIR} |
113 |
is_loc_mounted "${MY_PKGDIR}" && umount ${MY_PKGDIR} |
is_loc_mounted "${MY_PKGDIR}" && umount ${MY_PKGDIR} |
114 |
echo "bootstrap aborted" |
echo "bootstrap aborted" |
121 |
echo "Usage: $(basename $0) --opt arg ..." |
echo "Usage: $(basename $0) --opt arg ..." |
122 |
echo |
echo |
123 |
echo "Options:" |
echo "Options:" |
124 |
echo " --profile, -p -- select a profile (needed)" |
echo " --profile, -p -- select a profile (needed)" |
125 |
echo " --root, -r -- location to new root (needed)" |
echo " --root, -r -- location to new root (needed)" |
126 |
echo " --magerc, -m -- location of mage.rc (needed)" |
echo " --magerc, -m -- location of mage.rc (needed)" |
127 |
echo |
echo |
128 |
echo " --toolchain, -t -- select other toolchain than from profile" |
echo " --toolchain, -t -- select other toolchain than from profile" |
129 |
echo " --basesystem, -b -- select other basesystem than from profile" |
echo " --basesystem, -b -- select other basesystem than from profile" |
130 |
echo " --stage1, -s1 -- if set, abort after stage1 (toolchain)" |
echo " --stage1, -s1 -- if set, abort after stage1 (toolchain)" |
131 |
echo " --help, -h -- prints this help" |
echo " --update-tarball, -ut -- update via tarball not rsync" |
132 |
|
echo " --no-update, -u -- do not update the mage tree" |
133 |
|
echo " --help, -h -- prints this help" |
134 |
echo |
echo |
135 |
|
|
136 |
exit 1 |
exit 1 |
152 |
--root|-r) shift; MROOT="$1" ;; |
--root|-r) shift; MROOT="$1" ;; |
153 |
--stage1|-s1) ABORT_AFTER_STAGE1=true ;; |
--stage1|-s1) ABORT_AFTER_STAGE1=true ;; |
154 |
--magerc|-m) shift; MAGERC="$1" ;; |
--magerc|-m) shift; MAGERC="$1" ;; |
155 |
|
--update-tarball|-ut) MAGEUPDATETARBALL=true ;; |
156 |
|
--no-update|-u) MAGEUPDATE=false ;; |
157 |
--help|-h) print_usage ;; |
--help|-h) print_usage ;; |
158 |
'') shift;; |
'') shift;; |
159 |
*) echo "Unkown option '$1', use --help or -h to get more info."; exit 1 ;; |
*) echo "Unkown option '$1', use --help or -h to get more info."; exit 1 ;; |
195 |
ln -snf ${MY_MAGEDIR}/profiles/${PROFILE} /etc/mage-profile || die "link profile" |
ln -snf ${MY_MAGEDIR}/profiles/${PROFILE} /etc/mage-profile || die "link profile" |
196 |
|
|
197 |
# update mage tree |
# update mage tree |
198 |
mage update || die "update mage-tree" |
if [[ ${MAGEUPDATE} = true ]] |
199 |
|
then |
200 |
|
if [[ ${MAGEUPDATETARBALL} = true ]] |
201 |
|
then |
202 |
|
MAGERC="${MAGERC}" mage update-tarball || die "update mage-tree" |
203 |
|
else |
204 |
|
MAGERC="${MAGERC}" mage update || die "update mage-tree" |
205 |
|
fi |
206 |
|
fi |
207 |
|
|
208 |
# now get the toolchain and the basesystem layout file |
# now get the toolchain and the basesystem layout file |
209 |
# [ -z "${TOOLCHAIN}" ] && TOOLCHAIN="toolchain.defaults" |
# [ -z "${TOOLCHAIN}" ] && TOOLCHAIN="toolchain.defaults" |
218 |
[ -z "${BASESYSTEM}" ] && BASESYSTEM="$(< ${MY_MAGEDIR}/profiles/${PROFILE}/basesystem.defaults)" |
[ -z "${BASESYSTEM}" ] && BASESYSTEM="$(< ${MY_MAGEDIR}/profiles/${PROFILE}/basesystem.defaults)" |
219 |
|
|
220 |
# install toolchain |
# install toolchain |
221 |
CONFIG_PROTECT="-*" MROOT="${MROOT}" MAGERC="${MAGERC}" mage install ${TOOLCHAIN} || die "toolchain install" |
if ! MROOT="${MROOT}" MAGERC="${MAGERC}" magequery -n ${TOOLCHAIN} |
222 |
|
then |
223 |
|
CONFIG_PROTECT="-*" MROOT="${MROOT}" MAGERC="${MAGERC}" mage install ${TOOLCHAIN} || die "toolchain install" |
224 |
|
fi |
225 |
|
|
226 |
# umount dirs, they are not needed anymore |
# umount dirs, they are not needed anymore |
227 |
umount ${MY_MAGEDIR} ${MY_PKGDIR} || die "umount mage/pkgdir" |
umount ${MY_MAGEDIR} ${MY_PKGDIR} || die "umount mage/pkgdir" |