Commit | Line | Data |
---|---|---|
71e2e780 JB |
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 |