cookutils annotate cross @ rev 420
cross: improve prebuitl toolchain creation
| author | Christophe Lincoln <pankso@slitaz.org> |
|---|---|
| date | Wed May 16 11:55:25 2012 +0200 (2012-05-16) |
| parents | 97a80eb3cf19 |
| children | 71450d322f7b |
| rev | line source |
|---|---|
| pankso@361 | 1 #!/bin/sh |
| pankso@361 | 2 # |
| pankso@361 | 3 # Cross - Help build a cross toolchain on SliTaz. |
| pankso@361 | 4 # |
| pankso@361 | 5 # Copyright 2012 (C) SliTaz GNU/Linux - BSD License |
| pankso@361 | 6 # Author: Christophe Lincoln <pankso@slitaz.org> |
| pankso@361 | 7 # |
| pankso@361 | 8 . /lib/libtaz.sh |
| pankso@370 | 9 |
| pankso@370 | 10 [ -f "/etc/slitaz/cross.conf" ] && . /etc/slitaz/cross.conf |
| pankso@370 | 11 [ -f "cross.conf" ] && . ./cross.conf |
| pankso@361 | 12 |
| pankso@374 | 13 # Handle --config=/path/to/cross.conf |
| pankso@374 | 14 [ "$config" ] && . $config |
| pankso@412 | 15 source=$WORK/source |
| pankso@412 | 16 logdir=$WORK/log |
| pankso@412 | 17 install=$WORK/install |
| pankso@374 | 18 |
| pankso@361 | 19 # Help and usage. |
| pankso@361 | 20 usage() { |
| pankso@361 | 21 cat << EOT |
| pankso@361 | 22 |
| pankso@361 | 23 Usage: $(basename $0) command --option |
| pankso@361 | 24 |
| pankso@361 | 25 Commands: |
| pankso@361 | 26 howto Man alike and howto |
| paul@382 | 27 info Display cross-tools info |
| pankso@361 | 28 testsuite Execute a small testsuite |
| pankso@361 | 29 check-env Check build host tools |
| pankso@361 | 30 download Download necessary sources |
| pankso@361 | 31 show-log Show a compile log |
| pankso@361 | 32 binutils Compile Binutils |
| pankso@361 | 33 gcc-static Compile GCC static |
| pankso@361 | 34 linux-headers Install Kernel headers |
| pankso@361 | 35 glibc Compile GNU Glibc |
| pankso@361 | 36 gcc-final Compile final GCC |
| pankso@361 | 37 busybox Cross compile Busybox |
| pankso@361 | 38 compile Compile everything at once |
| pankso@419 | 39 clean Clean-up build environment |
| pankso@419 | 40 clean-tools Clean: $PREFIX |
| pankso@419 | 41 gen-prebuilt Create an prebuilt toolchain archive |
| pankso@361 | 42 |
| pankso@361 | 43 EOT |
| pankso@361 | 44 } |
| pankso@361 | 45 |
| pankso@420 | 46 # Prebuilt README |
| pankso@420 | 47 prebuilt_readme() { |
| pankso@420 | 48 echo -n "Creating toolchain README..." |
| pankso@420 | 49 cat >> $package/README << EOT |
| pankso@420 | 50 |
| pankso@420 | 51 SliTaz Prebuilt $ARCH cross toolchain |
| pankso@420 | 52 ================================================================================ |
| pankso@420 | 53 Move this $ARCH cross compilation toolchain to /usr/cross then add tools |
| pankso@420 | 54 to your PATH environment and test the toolchain: |
| pankso@420 | 55 |
| pankso@420 | 56 # mv $ARCH /usr/cross |
| pankso@420 | 57 # export PATH=\$PATH:/usr/cross/$ARCH/bin |
| pankso@420 | 58 |
| pankso@420 | 59 # echo 'int main() { return 0; }' > test.c |
| pankso@420 | 60 # $TARGET-gcc -v -o test.out test.c |
| pankso@420 | 61 # readelf -h test.out |
| pankso@420 | 62 |
| pankso@420 | 63 ================================================================================ |
| pankso@420 | 64 |
| pankso@420 | 65 EOT |
| pankso@420 | 66 status |
| pankso@420 | 67 } |
| pankso@420 | 68 |
| pankso@361 | 69 # Make sure we have all directories. |
| pankso@361 | 70 init_compile() { |
| pankso@361 | 71 export LC_ALL=POSIX LANG=POSIX |
| pankso@403 | 72 [ "$SYSROOT" ] || export PATH=$PATH:$PREFIX/bin |
| pankso@400 | 73 export CROSS_COMPILE=${TARGET}- |
| pankso@361 | 74 mkdir -p $source $logdir $install |
| pankso@361 | 75 cd $source |
| pankso@361 | 76 } |
| pankso@361 | 77 |
| pankso@361 | 78 # Get source if not yet in $SRC. |
| pankso@361 | 79 download_src() { |
| pankso@361 | 80 mkdir -p $SRC && cd $SRC |
| pankso@361 | 81 [ -f "binutils-$BINUTILS_VERSION.tar.bz2" ] || wget $BINUTILS_WGET |
| pankso@361 | 82 [ -f "linux-$LINUX_VERSION.tar.bz2" ] || wget $LINUX_WGET |
| pankso@361 | 83 [ -f "glibc-$GLIBC_VERSION.tar.bz2" ] || wget $GLIBC_WGET |
| pankso@361 | 84 [ -f "gcc-$GCC_VERSION.tar.bz2" ] || wget $GCC_WGET |
| pankso@361 | 85 [ -f "busybox-$BUSYBOX_VERSION.tar.bz2" ] || wget $BUSYBOX_WGET |
| pankso@361 | 86 } |
| pankso@361 | 87 |
| pankso@403 | 88 # Use sysroot or not ? |
| pankso@403 | 89 check_sysroot() { |
| pankso@403 | 90 if [ "$SYSROOT" ]; then |
| pankso@403 | 91 PREFIX=/usr |
| pankso@403 | 92 HDR_PATH=$SYSROOT/usr |
| pankso@403 | 93 sysroot="--with-sysroot=$SYSROOT" |
| pankso@411 | 94 echo "Configure : $sysroot" |
| pankso@403 | 95 else |
| pankso@403 | 96 HDR_PATH=$PREFIX |
| pankso@403 | 97 fi |
| pankso@403 | 98 } |
| pankso@403 | 99 |
| pankso@361 | 100 # 1. Binutils |
| pankso@361 | 101 binutils() { |
| pankso@408 | 102 init_compile |
| pankso@411 | 103 rm -rf binutils-$BINUTILS_VERSION |
| pankso@361 | 104 echo "Extracting: binutils-$BINUTILS_VERSION.tar.bz2" |
| pankso@361 | 105 tar xjf $SRC/binutils-$BINUTILS_VERSION.tar.bz2 |
| pankso@400 | 106 : ${BINUTILS_ARGS=--enable-shared} |
| pankso@411 | 107 echo "Configure : $BINUTILS_ARGS" |
| pankso@403 | 108 check_sysroot |
| pankso@361 | 109 cd binutils-$BINUTILS_VERSION |
| pankso@361 | 110 ./configure \ |
| pankso@361 | 111 --prefix=$PREFIX \ |
| pankso@361 | 112 --target=$TARGET \ |
| pankso@361 | 113 --enable-targets=$BUILD_SYSTEM \ |
| pankso@403 | 114 $BINUTILS_ARGS $sysroot |
| pankso@361 | 115 make || exit 1 |
| pankso@361 | 116 make install |
| pankso@412 | 117 #echo "cross: binutils compiled on: $(date)" |
| pankso@361 | 118 } |
| pankso@361 | 119 |
| pankso@403 | 120 # 2. GCC static (first pass) |
| pankso@361 | 121 gcc_static() { |
| pankso@408 | 122 init_compile |
| pankso@361 | 123 echo "Extracting: gcc-$GCC_VERSION.tar.bz2" |
| pankso@361 | 124 tar xjf $SRC/gcc-$GCC_VERSION.tar.bz2 |
| pankso@411 | 125 echo "Configure : $GCC_STATIC_ARGS" |
| pankso@403 | 126 check_sysroot |
| pankso@403 | 127 # Arch fixes and work around |
| pankso@403 | 128 case "$ARCH" in |
| pankso@403 | 129 x86_64) |
| pankso@403 | 130 # GCC wants Glib headers in cross environment (not tested |
| pankso@403 | 131 # with sysroot) Should we install glibc-headers before ? |
| pankso@403 | 132 [ "$SYSROOT" ] || \ |
| pankso@409 | 133 ln -s /usr/include $PREFIX/$TARGET/include ;; |
| pankso@403 | 134 esac |
| pankso@361 | 135 rm -rf gcc-static |
| pankso@361 | 136 mkdir gcc-static && cd gcc-static |
| pankso@361 | 137 ../gcc-$GCC_VERSION/configure \ |
| pankso@361 | 138 --prefix=$PREFIX \ |
| pankso@374 | 139 --libexec=$PREFIX/lib \ |
| pankso@361 | 140 --target=$TARGET \ |
| pankso@361 | 141 --disable-shared \ |
| pankso@361 | 142 --disable-threads \ |
| pankso@361 | 143 --without-headers \ |
| pankso@361 | 144 --with-newlib \ |
| pankso@403 | 145 $GCC_STATIC_ARGS $sysroot |
| pankso@361 | 146 make all-gcc all-target-libgcc || exit 1 |
| pankso@361 | 147 make install-gcc install-target-libgcc |
| pankso@361 | 148 cd $PREFIX/lib/gcc/$TARGET/$GCC_VERSION |
| paul@382 | 149 echo "Creating symlink for static libgcc: libgcc_eh.a" |
| pankso@366 | 150 rm -f libgcc_eh.a && ln -s libgcc.a libgcc_eh.a |
| pankso@361 | 151 } |
| pankso@361 | 152 |
| pankso@403 | 153 # 3. Kernel headers use static GCC |
| pankso@403 | 154 linux_headers() { |
| pankso@408 | 155 init_compile |
| pankso@403 | 156 echo "Extracting: linux-$LINUX_VERSION.tar.bz2" |
| pankso@403 | 157 tar xjf $SRC/linux-$LINUX_VERSION.tar.bz2 |
| pankso@403 | 158 check_sysroot |
| pankso@403 | 159 cd linux-$LINUX_VERSION |
| pankso@403 | 160 make mrproper |
| pankso@403 | 161 make ARCH=$ARCH headers_check |
| pankso@403 | 162 make ARCH=$ARCH headers_install \ |
| pankso@403 | 163 INSTALL_HDR_PATH=$HDR_PATH |
| pankso@403 | 164 } |
| pankso@403 | 165 |
| pankso@361 | 166 # 4. GNU Glibc |
| pankso@361 | 167 glibc() { |
| pankso@408 | 168 init_compile |
| pankso@361 | 169 echo "Extracting: glibc-$GLIBC_VERSION.tar.bz2" |
| pankso@361 | 170 tar xjf $SRC/glibc-$GLIBC_VERSION.tar.bz2 |
| pankso@411 | 171 echo "Configure : $GLIBC_ARGS" |
| pankso@361 | 172 [ "$continue" ] || rm -rf glibc-build |
| pankso@400 | 173 # Some arch may need glibc-ports and custom CFLAGS |
| pankso@403 | 174 case "$ARCH" in |
| pankso@361 | 175 arm) |
| pankso@401 | 176 #export CFLAGS="-march=armv6 -mtune=generic -g -O2" |
| pankso@362 | 177 [ -f "$SRC/glibc-ports-$GLIBC_VERSION.tar.bz2" ] || wget \ |
| pankso@362 | 178 http://ftp.gnu.org/gnu/libc/glibc-ports-$GLIBC_VERSION.tar.bz2 \ |
| pankso@362 | 179 -O $SRC/glibc-ports-$GLIBC_VERSION.tar.bz2 || exit 1 |
| pankso@361 | 180 echo "Extracting: glibc-ports-$GLIBC_VERSION.tar.bz2" |
| pankso@361 | 181 rm -rf glibc-$GLIBC_VERSION/ports |
| pankso@361 | 182 tar xjf $SRC/glibc-ports-$GLIBC_VERSION.tar.bz2 |
| pankso@361 | 183 mv glibc-ports-$GLIBC_VERSION glibc-$GLIBC_VERSION/ports ;; |
| pankso@418 | 184 x86_64) |
| pankso@418 | 185 ccflags="-m64" ;; |
| pankso@361 | 186 esac |
| pankso@404 | 187 #echo "CFLAGS: $CFLAGS" |
| pankso@361 | 188 mkdir -p glibc-build && cd glibc-build |
| pankso@365 | 189 BUILD_CC="gcc" \ |
| pankso@418 | 190 CC="${TARGET}-gcc $ccflags" \ |
| pankso@361 | 191 libc_cv_forced_unwind=yes \ |
| pankso@361 | 192 libc_cv_c_cleanup=yes \ |
| pankso@361 | 193 ../glibc-$GLIBC_VERSION/configure \ |
| pankso@361 | 194 --prefix=$PREFIX \ |
| pankso@417 | 195 --libexec=$PREFIX/lib/glibc \ |
| pankso@361 | 196 --host=$TARGET \ |
| pankso@361 | 197 --with-headers=$PREFIX/include \ |
| pankso@361 | 198 --with-binutils=$PREFIX/bin \ |
| pankso@410 | 199 $GLIBC_ARGS |
| pankso@361 | 200 make || exit 1 |
| pankso@361 | 201 make install |
| pankso@403 | 202 # Work around to let GCC find Glibc headers. |
| pankso@404 | 203 if [ "$SYSROOT" ]; then |
| pankso@404 | 204 cd $SYSROOT |
| pankso@404 | 205 ln -s usr/include sys-include |
| pankso@404 | 206 else |
| pankso@403 | 207 cd $PREFIX/$TARGET |
| pankso@403 | 208 rm -rf lib include |
| pankso@403 | 209 ln -s ../lib lib |
| pankso@403 | 210 ln -s ../include include |
| pankso@403 | 211 fi |
| pankso@403 | 212 #unset CFLAGS |
| pankso@361 | 213 } |
| pankso@361 | 214 |
| pankso@361 | 215 # 5. GCC final |
| pankso@361 | 216 gcc_final() { |
| pankso@408 | 217 init_compile |
| pankso@361 | 218 if [ ! -d "gcc-$GCC_VERSION" ]; then |
| pankso@361 | 219 echo "Extracting: gcc-$GCC_VERSION.tar.bz2" |
| pankso@361 | 220 tar xjf $SRC/gcc-$GCC_VERSION.tar.bz2 |
| pankso@361 | 221 fi |
| pankso@411 | 222 echo "Configure : $GCC_FINAL_ARGS" |
| pankso@403 | 223 check_sysroot |
| pankso@361 | 224 rm -rf gcc-build |
| pankso@361 | 225 mkdir gcc-build && cd gcc-build |
| pankso@361 | 226 ../gcc-$GCC_VERSION/configure \ |
| pankso@361 | 227 --prefix=$PREFIX \ |
| pankso@374 | 228 --libexec=$PREFIX/lib \ |
| pankso@361 | 229 --target=$TARGET \ |
| pankso@361 | 230 --enable-shared \ |
| pankso@361 | 231 --enable-c99 \ |
| pankso@361 | 232 --enable-long-long \ |
| pankso@361 | 233 --enable-__cxa_atexit \ |
| pankso@400 | 234 --with-pkgversion="SliTaz" \ |
| pankso@403 | 235 $GCC_FINAL_ARGS $sysroot |
| pankso@361 | 236 make || exit 1 |
| pankso@361 | 237 make install |
| pankso@361 | 238 } |
| pankso@361 | 239 |
| paul@382 | 240 # Build Busybox to we can create prebuilt tiny rootfs image and boot |
| pankso@361 | 241 # from NFS ? |
| pankso@361 | 242 cross_busybox() { |
| pankso@408 | 243 init_compile |
| pankso@361 | 244 echo "Extracting: busybox-$BUSYBOX_VERSION.tar.bz2" |
| pankso@361 | 245 tar xjf $SRC/busybox-$BUSYBOX_VERSION.tar.bz2 |
| pankso@361 | 246 cd busybox-$BUSYBOX_VERSION |
| pankso@400 | 247 # CROSS_COMPILE is exported via init_compile. |
| pankso@400 | 248 make defconfig |
| pankso@400 | 249 make || exit 1 |
| pankso@400 | 250 make install |
| pankso@361 | 251 chmod 4755 _install/bin/busybox |
| pankso@361 | 252 readelf -h _install/bin/busybox |
| pankso@403 | 253 echo "Busybox install path: $(pwd)/_install" |
| pankso@361 | 254 } |
| pankso@361 | 255 |
| pankso@361 | 256 # |
| pankso@361 | 257 # Commands |
| pankso@361 | 258 # |
| pankso@361 | 259 |
| pankso@361 | 260 case "$1" in |
| pankso@361 | 261 howto|man) |
| pankso@361 | 262 doc=/usr/share/doc/cookutils/cross.txt |
| pankso@361 | 263 [ -f "$doc" ] && less -E $doc ;; |
| pankso@361 | 264 info) |
| pankso@361 | 265 init_compile |
| pankso@361 | 266 CC=${TARGET}-gcc |
| paul@382 | 267 echo -e "\nCross Toolchain information" && separator |
| pankso@374 | 268 [ "$config" ] && echo "Config file : $config" |
| pankso@361 | 269 cat << EOT |
| pankso@374 | 270 Target arch : $ARCH |
| pankso@374 | 271 C Compiler : $CC |
| pankso@374 | 272 Build directory : $WORK |
| pankso@361 | 273 EOT |
| pankso@403 | 274 if [ "$SYSROOT" ]; then |
| pankso@404 | 275 PREFIX=/usr |
| pankso@403 | 276 echo "Arch sysroot : $SYSROOT" |
| pankso@403 | 277 else |
| pankso@403 | 278 echo "Additional path : $PREFIX/bin" |
| pankso@403 | 279 fi |
| pankso@361 | 280 separator && echo "" |
| pankso@361 | 281 echo "GCC version" && separator |
| pankso@404 | 282 if [ -x "$PREFIX/bin/$CC" ]; then |
| pankso@374 | 283 $CC -v |
| pankso@374 | 284 else |
| pankso@374 | 285 echo "No C compiler. To build a toolchain run: cross compile" |
| pankso@374 | 286 fi |
| pankso@361 | 287 separator && echo "" ;; |
| pankso@361 | 288 testsuite) |
| pankso@361 | 289 init_compile |
| pankso@361 | 290 echo "[COMPILING] $TARGET-gcc -v -Wall -o test.out test.c" \ |
| pankso@361 | 291 | tee $logdir/testsuite.log |
| pankso@361 | 292 echo 'int main() { return 0; }' > test.c |
| pankso@361 | 293 $TARGET-gcc -v -Wall -o test.out test.c 2>&1 | tee -a $logdir/testsuite.log |
| pankso@361 | 294 if [ -x /usr/bin/file ]; then |
| pankso@361 | 295 echo -e "\n[CHECKING] file test.out" | tee -a $logdir/testsuite.log |
| pankso@361 | 296 file test.out | tee -a $logdir/testsuite.log |
| pankso@361 | 297 fi |
| pankso@361 | 298 echo -e "\n[CHECKING] readelf -h test.out" | tee -a $logdir/testsuite.log |
| pankso@361 | 299 readelf -h test.out | tee -a $logdir/testsuite.log ;; |
| pankso@365 | 300 check-env) |
| pankso@361 | 301 for pkg in mpfr mpfr-dev gmp gmp-dev mpc-library gawk autoconf |
| pankso@361 | 302 do |
| pankso@361 | 303 if [ ! -d "/var/lib/tazpkg/installed/$pkg" ]; then |
| pankso@361 | 304 echo "Missing packages: $pkg" |
| pankso@361 | 305 [ "$install" ] && tazpkg -gi $pkg |
| pankso@361 | 306 fi |
| pankso@361 | 307 done ;; |
| pankso@361 | 308 download) |
| pankso@361 | 309 download_src ;; |
| pankso@361 | 310 show-log) |
| pankso@361 | 311 pkg=$2 |
| pankso@371 | 312 log=$logdir/$pkg.log |
| pankso@371 | 313 if [ ! -f "$log" ]; then |
| pankso@371 | 314 echo "No log file found for: $pkg" && exit 1 |
| pankso@371 | 315 fi |
| pankso@371 | 316 less -E $log ;; |
| pankso@361 | 317 binutils) |
| pankso@412 | 318 rm -f $logdir/binutils.log |
| pankso@361 | 319 binutils 2>&1 | tee $logdir/binutils.log ;; |
| pankso@403 | 320 gcc-static) |
| pankso@403 | 321 gcc_static 2>&1 | tee $logdir/gcc-static.log ;; |
| pankso@361 | 322 linux-headers) |
| pankso@363 | 323 linux_headers 2>&1 | tee $logdir/linux-headers.log ;; |
| pankso@361 | 324 glibc) |
| pankso@361 | 325 glibc 2>&1 | tee $logdir/glibc.log ;; |
| pankso@361 | 326 gcc-final) |
| pankso@361 | 327 gcc_final 2>&1 | tee $logdir/gcc-final.log ;; |
| pankso@361 | 328 busybox) |
| pankso@361 | 329 cross_busybox 2>&1 | tee $logdir/busybox.log ;; |
| pankso@361 | 330 compile) |
| pankso@400 | 331 # Compile the full toolchain. |
| pankso@400 | 332 time=$(date +%s) |
| pankso@361 | 333 init_compile |
| pankso@361 | 334 echo "Compile start: $(date)" | tee $logdir/compile.log |
| pankso@361 | 335 download_src |
| pankso@361 | 336 binutils 2>&1 | tee $logdir/binutils.log |
| pankso@403 | 337 gcc_static 2>&1 | tee $logdir/gcc-static.log |
| pankso@361 | 338 linux_headers 2>&1 | tee $logdir/linux-headers.log |
| pankso@361 | 339 glibc 2>&1 | tee $logdir/glibc.log |
| pankso@361 | 340 gcc_final 2>&1 | tee $logdir/gcc-final.log |
| pankso@361 | 341 echo "" |
| pankso@365 | 342 echo "Compile end : $(date)" | tee -a $logdir/compile.log |
| pankso@400 | 343 time=$(($(date +%s) - $time)) |
| pankso@400 | 344 sec=$time |
| pankso@400 | 345 div=$(( ($time + 30) / 60)) |
| pankso@400 | 346 [ "$div" != 0 ] && min="~ ${div}m" |
| pankso@401 | 347 echo "Build time : ${sec}s $min" | tee -a $logdir/compile.log |
| pankso@361 | 348 echo "" ;; |
| pankso@416 | 349 clean) |
| pankso@416 | 350 echo -n "Removing all source files..." |
| pankso@416 | 351 rm -rf $WORK/source/* && status |
| pankso@416 | 352 [ "$log" ] && rm -f $WORK/log/*.log |
| pankso@416 | 353 echo "To clean chroot: rm -rf $PREFIX" ;; |
| pankso@371 | 354 clean-tools) |
| pankso@371 | 355 # Remove crap :-) |
| pankso@371 | 356 init_compile |
| pankso@416 | 357 echo "Cleaning : $PREFIX ($(du -sh $PREFIX | awk '{print $1}'))" |
| pankso@371 | 358 for dir in info man locale |
| pankso@371 | 359 do |
| pankso@416 | 360 echo -n "Removing : $dir" |
| pankso@419 | 361 rm -rf $PREFIX/share/$dir && status |
| pankso@371 | 362 done |
| pankso@416 | 363 rm -f $PREFIX/lib/*-gdb.py |
| pankso@419 | 364 echo -n "Stripping : shared libs and binaries" |
| pankso@419 | 365 ${TARGET}-strip -s $PREFIX/lib/*.so* 2>/dev/null |
| pankso@419 | 366 ${TARGET}-strip -s $PREFIX/bin/* 2>/dev/null |
| pankso@419 | 367 ${TARGET}-strip -s $PREFIX/${TARGET}/bin/* 2>/dev/null |
| pankso@416 | 368 ${TARGET}-strip -s $PREFIX/$TARGET/lib/gcc/$TARGET/*/cc1* |
| pankso@416 | 369 ${TARGET}-strip -s $PREFIX/$TARGET/lib/gcc/$TARGET/*/lto* |
| pankso@416 | 370 sleep 1 && status |
| pankso@416 | 371 echo -n "Tools size : " && du -sh $PREFIX | awk '{print $1}' ;; |
| pankso@366 | 372 gen-rootfs) |
| pankso@419 | 373 echo "Use arm packages: basefile, boot-scripts, busybox and glibc-base" |
| pankso@419 | 374 echo "Install them in a rootfs: tazpkg *-arm.tazpkg --root=/my/rootfs" ;; |
| pankso@416 | 375 gen-prebuilt) |
| pankso@420 | 376 # Create a prebuilt cross toolchain tarball. |
| pankso@416 | 377 init_compile |
| pankso@420 | 378 date=$(date "+%Y%m%d") |
| pankso@420 | 379 package="slitaz-cross-$ARCH-toolchain-$date" |
| pankso@419 | 380 tarball="$package.tar.bz2" |
| pankso@416 | 381 cd /usr/cross |
| pankso@419 | 382 mkdir $package || exit 1 |
| pankso@419 | 383 echo "" |
| pankso@419 | 384 echo -n "Copying $ARCH to: $package" |
| pankso@419 | 385 cp -a $ARCH $package |
| pankso@419 | 386 rm -rf $package/share $package/etc |
| pankso@419 | 387 status |
| pankso@420 | 388 prebuilt_readme |
| pankso@416 | 389 echo -n "Creating prebuilt $ARCH toolchain tarball..." |
| pankso@419 | 390 tar cjf $tarball $package |
| pankso@416 | 391 status |
| pankso@416 | 392 mv -f $tarball $WORK |
| pankso@419 | 393 rm -rf $package |
| pankso@419 | 394 size=$(du -sh $WORK/$tarball | awk '{print $1}') |
| pankso@419 | 395 echo "Tarball path: $WORK/$tarball" |
| pankso@419 | 396 echo "Tarball size: $size" |
| pankso@419 | 397 echo "" ;; |
| pankso@361 | 398 *) |
| pankso@361 | 399 usage ;; |
| pankso@361 | 400 esac |
| pankso@361 | 401 |