CRUX-ARM : Home

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