CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
Renamed makeRelease to makeRootfs which makes more sense
[devtools.git] / makeRootfs.sh
CommitLineData
71e2e780
JB
1#!/bin/bash
2
3# msgUsage: show a usage message and exit
4msgUsage() {
5 echo "Usage: $(basename $0) [TMP_DIR] [PKG_DIR] [RELEASE_DIR] [RELEASE_NAME]"
6 echo "Examples:"
7 echo " \$ $(basename $0) tmp ports/core-cross releases crux-arm-rootfs-2.7"
8 echo " \$ $(basename $0) tmp ports/core-cross releases crux-arm-rootfs-2.6"
9 echo " \$ $(basename $0) tmp ports/core-cross-noeabi releases crux-arm-rootfs-2.6-noeabi"
10 exit 0
11}
12
13# msgWarn: show a warning message
14msgWarn() {
15 echo "Warning, $@" 2>&1
16}
17
18# msgError: show a error message and exit
19msgError() {
20 echo "Error, $@" 2>&1
21 exit 1
22}
23
24# checkCommands: checks for command dependencies
25checkCommands() {
26 for cmd in sudo pkgmk tar md5sum; do
27 if ! which $cmd 2>&1 >/dev/null; then
28 msgError "'$cmd' is not in your \$PATH and you need it to execute this script"
29 fi
30 done
31}
32
33# checkVars: checks for user given arguments
34#
35# params:
36# $1 - TMP_DIR
37# $2 - PKG_DIR
38# $3 - RELEASE_DIR
39# $4 - RELEASE_NAME
40checkVars() {
41 [ $# -lt 1 ] && msgUsage
42 [ ! -z "$1" ] && TMP_DIR="$1"
43 [ "$TMP_DIR" = "/tmp" ] && msgError "you can't use /tmp as TMP_DIR"
44 [ ! -z "$2" ] && PKG_DIR="$2"
45 [ ! -z "$3" ] && RELEASE_DIR="$3"
46 [ ! -z "$4" ] && RELEASE_NAME="$4"
47 # check for directories, if not create them
48 for dir in $TMP_DIR $RELEASE_DIR; do
49 if [ ! -d "$dir" ]; then
50 msgWarn "creating directory '$dir'" && install -d $dir || exit 1
51 fi
52 done
53 TMP_DIR="$(cd $TMP_DIR; pwd)"
54 PKG_DIR="$(cd $PKG_DIR; pwd)"
55 RELEASE_DIR="$(cd $RELEASE_DIR; pwd)"
56 [ -z "$PACKAGES" ] && PACKAGES="$(find $PKG_DIR -type f -name '*#*pkg.tar.gz')"
57}
58
59# global variables
60PWD_DIR="$(pwd)"
61TMP_DIR="$PWD_DIR/tmp"
62PKG_DIR="$PWD_DIR/pkg"
63RELEASE_DIR="$PWD_DIR/releases"
64RELEASE_NAME="crux-arm-rootfs-2.7"
65PACKAGES=""
66
67checkCommands
68checkVars $@
69
70# create the database stuff for pkgutils
71sudo install -d -m 0755 $TMP_DIR/var/lib/pkg
72sudo touch $TMP_DIR/var/lib/pkg/db
73sudo chmod 0444 $TMP_DIR/var/lib/pkg/db
74
75# install all packages
76pkgnum=0
77for pkg in $PACKAGES; do
78 sudo pkgadd -r $TMP_DIR $pkg && echo "Installing $pkg" || exit 1
79 let pkgnum=$pkgnum+1
80done
81
82# create the tarball and the md5sum
83cd $TMP_DIR && sudo tar cvjf $RELEASE_DIR/$RELEASE_NAME.tar.bz2 * && cd ..
84cd $RELEASE_DIR && md5sum $RELEASE_NAME.tar.bz2 > $RELEASE_NAME.tar.bz2.md5 && cd ..
85
86echo "Installed packages: $pkgnum"
87sudo rm -rf $TMP_DIR
88echo "Release done: $RELEASE_DIR/$RELEASE_NAME.tar.bz2"
89
90# End of file