Commit | Line | Data |
---|---|---|
71e2e780 JB |
1 | #!/bin/bash |
2 | ||
3 | # msgUsage: show a usage message and exit | |
4 | msgUsage() { | |
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 |
13 | msgError() { | |
14 | echo "Error, $@" 2>&1 | |
15 | exit 1 | |
16 | } | |
17 | ||
18 | # checkCommands: checks for command dependencies | |
19 | checkCommands() { | |
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 | |
34 | checkVars() { | |
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)" |
1615176a | 50 | [ -z "$PACKAGES" ] && PACKAGES="$(find $PKGDIR -type f -name '*#*pkg.tar.*')" |
71e2e780 JB |
51 | } |
52 | ||
53 | # global variables | |
54 | PWD_DIR="$(pwd)" | |
1615176a JB |
55 | TMPDIR="$PWD_DIR/tmp" |
56 | PKGDIR="$PWD_DIR/pkg" | |
71e2e780 JB |
57 | |
58 | checkCommands | |
59 | checkVars $@ | |
60 | ||
2713cba1 | 61 | echo "+ Initializating pkgutils database..." |
1615176a JB |
62 | sudo install -d -m 0755 $TMPDIR/var/lib/pkg |
63 | sudo touch $TMPDIR/var/lib/pkg/db | |
64 | sudo chmod 0444 $TMPDIR/var/lib/pkg/db | |
71e2e780 | 65 | |
71e2e780 | 66 | pkgnum=0 |
2713cba1 | 67 | echo "+ Installing packages..." |
71e2e780 | 68 | for pkg in $PACKAGES; do |
1615176a | 69 | sudo pkgadd -r $TMPDIR $pkg || msgError "failed to install $pkg" |
71e2e780 | 70 | let pkgnum=$pkgnum+1 |
2713cba1 | 71 | printf "%-3s - %s\n" $pkgnum $(basename $pkg) |
71e2e780 JB |
72 | done |
73 | ||
2713cba1 | 74 | echo "+ Creating the tarball. Please be patient..." |
1615176a | 75 | cd $TMPDIR && sudo tar cJf $RELEASE_DIR/$RELEASE_NAME.tar.xz * && cd - |
2713cba1 JB |
76 | |
77 | echo "+ Creating the md5sum..." | |
1615176a JB |
78 | cd $RELEASE_DIR && md5sum $RELEASE_NAME.tar.xz > $RELEASE_NAME.tar.xz.md5 && cd - |
79 | ||
2713cba1 | 80 | echo "+ Finished $RELEASE_DIR/$RELEASE_NAME.tar.xz ($pkgnum packages)" |
71e2e780 | 81 | |
1615176a | 82 | sudo rm -rf $TMPDIR |
71e2e780 JB |
83 | |
84 | # End of file |