Contents of /trunk/mage-buildroot/mage-buildroot.sh
Parent Directory | Revision Log
Revision 309 -
(show annotations)
(download)
(as text)
Sun Jan 1 17:20:46 2006 UTC (18 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 5811 byte(s)
Sun Jan 1 17:20:46 2006 UTC (18 years, 8 months ago) by niro
File MIME type: application/x-sh
File size: 5811 byte(s)
initial version
1 | #!/bin/bash |
2 | # $Header: /home/cvsd/magellan-cvs/magellan-src/mage-buildroot/mage-buildroot.sh,v 1.1 2006-01-01 17:20:46 niro Exp $ |
3 | # |
4 | # mage buildroot |
5 | # create buildroot to compile programms |
6 | # may get later into mage |
7 | # |
8 | |
9 | # default die function |
10 | die() |
11 | { |
12 | echo -e ${COLRED}"$@"${COLDEFAULT} |
13 | exit 1 |
14 | } |
15 | |
16 | [[ $(id -u ) != 0 ]] && die "you must be root" |
17 | |
18 | # i need some settings and functions from mage |
19 | [ -f /etc/rc.d/init.d/functions ] && \ |
20 | source /etc/rc.d/init.d/functions || \ |
21 | die "Your /etc/mage.rc is missing. Aborting." |
22 | |
23 | [ -f /etc/mage.rc.global ] && \ |
24 | source /etc/mage.rc.global || \ |
25 | die "/etc/mage.rc.global missing" |
26 | |
27 | [ -f /etc/mage.rc ] && source /etc/mage.rc || \ |
28 | die "Your /etc/mage.rc is missing. Aborting." |
29 | |
30 | [ -f ${MLIBDIR}/mage4.functions.sh ] && \ |
31 | source ${MLIBDIR}/mage4.functions.sh || \ |
32 | die "mage functions missing" |
33 | |
34 | installrc() |
35 | { |
36 | local var="$1" |
37 | |
38 | # sanity checks |
39 | [ -z "${MROOT}" ] && die "\$MROOT not given." |
40 | echo "${var}" >> ${MROOT}/.installrc || die "add_initrc() adding \$var" |
41 | } |
42 | |
43 | enter_chroot() |
44 | { |
45 | [ ! -d ${MROOT}/proc ] && install -d ${MROOT}/proc |
46 | [ ! -d ${MROOT}/dev ] && install -d ${MROOT}/dev |
47 | [ ! -d ${MROOT}/sys ] && install -d ${MROOT}/sys |
48 | |
49 | mount -t proc proc ${MROOT}/proc |
50 | mount -t sysfs sysfs ${MROOT}/sys |
51 | mount -o bind /dev ${MROOT}/dev |
52 | |
53 | # chroot ${MROOT} /bin/bash -i /.installrc |
54 | chroot ${MROOT} /usr/bin/env -i \ |
55 | HOME=/root \ |
56 | TERM="${TERM}" \ |
57 | PS1='\u:\w\$ ' \ |
58 | PATH=/bin:/usr/bin:/sbin:/usr/sbin \ |
59 | /bin/bash -i /.installrc #|| die "chr00ting" |
60 | |
61 | umount ${MROOT}/dev |
62 | umount ${MROOT}/proc |
63 | umount ${MROOT}/sys |
64 | |
65 | #[ -f ${MROOT}/.installrc ] && rm ${MROOT}/.installrc |
66 | } |
67 | |
68 | # some sane defaults |
69 | MROOT="$1" |
70 | TARGET_PKG="$2" |
71 | #MAGERC="/etc/mage.rc" |
72 | MAGERC="/home/tjoke/mage.rc-buildroot" |
73 | MAGE_PROFILE="$(basename $(readlink /etc/mage-profile))" |
74 | TOOLCHAIN=toolchain |
75 | BASESYSTEM=common-devutils |
76 | |
77 | # first install a toolchain and some common dev-utils using bootstrap2 |
78 | # only if not already builded |
79 | if [ ! -f ${MROOT}/.buildroot_build_ok-${TOOLCHAIN}-${BASESYSTEM} ] |
80 | then |
81 | #mage-bootstrap \ |
82 | /home/tjoke/alx-cvs/magellan-src/bootstrap/scripts/mage-bootstrap.sh \ |
83 | --root "${MROOT}" \ |
84 | --magerc "${MAGERC}" \ |
85 | --profile "${MAGE_PROFILE}" \ |
86 | --toolchain "${TOOLCHAIN}" \ |
87 | --basesystem "${BASESYSTEM}" \ |
88 | || die "bootstrapping toolchain" |
89 | |
90 | # mark this as builded |
91 | touch ${MROOT}/.buildroot_build_ok-${TOOLCHAIN}-${BASESYSTEM} || die "touch ok" |
92 | fi |
93 | |
94 | ##################################################### |
95 | # setup a chroot environment # |
96 | ##################################################### |
97 | echo > ${MROOT}/.installrc || die |
98 | |
99 | # some needed env-vars and functions |
100 | installrc 'unset MROOT' |
101 | installrc 'env-rebuild' |
102 | installrc 'source /etc/profile' |
103 | installrc 'die() { echo -e ${COLRED}"$@"${COLDEFAULT}; exit 1; }' |
104 | installrc '[ -f /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions' # || die "Your /etc/mage.rc is missing. Aborting."' |
105 | installrc '[ -f /etc/mage.rc.global ] && . /etc/mage.rc.global' # || die "/etc/mage.rc.global missing"' |
106 | installrc '[ -f /etc/mage.rc ] && . /etc/mage.rc' # || die "Your /etc/mage.rc is missing. Aborting."' |
107 | installrc '[ -f ${MLIBDIR}/mage4.functions.sh ] && . ${MLIBDIR}/mage4.functions.sh' # || die "mage functions missing"' |
108 | installrc "export FAKE_MROOT=\"${MROOT}\"" |
109 | installrc "export TARGET_PKG=\"${TARGET_PKG}\"" |
110 | |
111 | # update mage only if buildroot already exists |
112 | [ -f ${MROOT}/.buildroot_build_ok-${TOOLCHAIN}-${BASESYSTEM} ] && installrc 'mage update' |
113 | installrc 'smage2 update' |
114 | |
115 | # run part |
116 | cat >> ${MROOT}/.installrc << "EOF" |
117 | |
118 | ##################################################### |
119 | # now calculate the src-dependencies for TARGET_PKG # |
120 | ##################################################### |
121 | |
122 | # before anything run mage_setup |
123 | mage_setup || die "error in mage_setup()" |
124 | |
125 | # first of all get the right pkg which going to be installed |
126 | PCAT="$(pname2pcat ${TARGET_PKG})" |
127 | |
128 | # package does not exists |
129 | [ -z "${PCAT}" ] && die "Package '${TARGET_PKG}' does not exist." |
130 | |
131 | # source the highest magefile of this pkg |
132 | PKGNAME=$(get_value_from_magefile PKGNAME $(get_highest_magefile ${PCAT} ${TARGET_PKG})) |
133 | |
134 | # convert PKGNAME to PNAME/PVER/PBUILD |
135 | # we're working *only* with these three vars from here on |
136 | PNAME="$(pkgname2pname ${PKGNAME})" |
137 | PVER="$(pkgname2pver ${PKGNAME})" |
138 | PBUILD="$(pkgname2pbuild ${PKGNAME})" |
139 | |
140 | if is_installed ${PCAT}/${PNAME}-${PVER}-${PBUILD} |
141 | then |
142 | echo -en "Package " |
143 | echo -en "${COLRED}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT}" |
144 | echo -e " already installed." |
145 | exit 3 |
146 | fi |
147 | |
148 | # get all dependencies of this package |
149 | ALLDEPS="$(${MLIBDIR}/depwalker.sh \ |
150 | --method srcinstall \ |
151 | --pcat ${PCAT} \ |
152 | --pname ${PNAME} \ |
153 | --pver ${PVER} \ |
154 | --pbuild ${PBUILD})" |
155 | |
156 | # remove TARGET_PKG from list |
157 | SRC_INSTALL_DEPS="$(get_highest_magefile ${PCAT} ${TARGET_PKG})" |
158 | INSTALL_DEPS="${ALLDEPS/${SRC_INSTALL_DEPS}/}" |
159 | |
160 | echo |
161 | echo "---- environment -----" |
162 | echo "MROOT: ${FAKE_MROOT}" |
163 | echo "PKGDIR: ${PKGDIR}" |
164 | echo "BUILDDIR: ${BUILDDIR}" |
165 | echo "BINDIR: ${BINDIR}" |
166 | echo "----------------------" |
167 | echo |
168 | echo "---- dependencies ----" |
169 | echo "SRC_INSTALL_DEPS: ${SRC_INSTALL_DEPS}" |
170 | echo "INSTALL_DEPS: ${INSTALL_DEPS}" |
171 | echo "----------------------" |
172 | |
173 | #read |
174 | |
175 | # now install the packages (no srcinstall, when the user not explcitly want this) |
176 | fetch_packages ${INSTALL_DEPS} || die "fetching packages" |
177 | md5sum_packages ${INSTALL_DEPS} || die "md5 sum packages" |
178 | unpack_packages ${INSTALL_DEPS} || die "unpacking packages" |
179 | install_packages ${INSTALL_DEPS} || die "installing packages" |
180 | |
181 | # whipe out all packages |
182 | mage clean |
183 | |
184 | # now src-install TARGET_PKG |
185 | install_packages --src-install ${SRC_INSTALL_DEPS} || die "src-installing packages" |
186 | |
187 | # done |
188 | echo -e "Package ${COLGREEN}${PCAT}/${PNAME}-${PVER}-${PBUILD}${COLDEFAULT} successfully builded." |
189 | echo "You will find this in ${FAKE_MROOT}/${PKGDIR}." |
190 | EOF |
191 | |
192 | # run this stuff |
193 | enter_chroot |
Properties
Name | Value |
---|---|
svn:executable | * |