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
1 #!/bin/bash
2
3 # msgUsage: show a usage message and exit
4 msgUsage() {
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
14 msgWarn() {
15 echo "Warning, $@" 2>&1
16 }
17
18 # msgError: show a error message and exit
19 msgError() {
20 echo "Error, $@" 2>&1
21 exit 1
22 }
23
24 # checkCommands: checks for command dependencies
25 checkCommands() {
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
40 checkVars() {
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
60 PWD_DIR="$(pwd)"
61 TMP_DIR="$PWD_DIR/tmp"
62 PKG_DIR="$PWD_DIR/pkg"
63 RELEASE_DIR="$PWD_DIR/releases"
64 RELEASE_NAME="crux-arm-rootfs-2.7"
65 PACKAGES=""
66
67 checkCommands
68 checkVars $@
69
70 # create the database stuff for pkgutils
71 sudo install -d -m 0755 $TMP_DIR/var/lib/pkg
72 sudo touch $TMP_DIR/var/lib/pkg/db
73 sudo chmod 0444 $TMP_DIR/var/lib/pkg/db
74
75 # install all packages
76 pkgnum=0
77 for pkg in $PACKAGES; do
78 sudo pkgadd -r $TMP_DIR $pkg && echo "Installing $pkg" || exit 1
79 let pkgnum=$pkgnum+1
80 done
81
82 # create the tarball and the md5sum
83 cd $TMP_DIR && sudo tar cvjf $RELEASE_DIR/$RELEASE_NAME.tar.bz2 * && cd ..
84 cd $RELEASE_DIR && md5sum $RELEASE_NAME.tar.bz2 > $RELEASE_NAME.tar.bz2.md5 && cd ..
85
86 echo "Installed packages: $pkgnum"
87 sudo rm -rf $TMP_DIR
88 echo "Release done: $RELEASE_DIR/$RELEASE_NAME.tar.bz2"
89
90 # End of file