aboutsummaryrefslogtreecommitdiff
path: root/dists/gcw0/opk_make.sh
blob: b1bfd03efb3845695730cfb86d845a59beae697b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#!/bin/bash
#
# opk_make.sh
#
# This script is meant to ease generation of a opk file. Please consult the output
# when running --help for a list of available parameters and an explaination of
# those.
#
# Required tools when running the script:
# bash
# echo, cat, mv, rm, mksquashfs

check_for_tool()
{
	which $1 &> /dev/null
	if [ "$?" -ne "0" ];
	then
		cecho "ERROR: Could not find the program '$1'. Please make sure
that it is available in your PATH since it is required to complete your request." $red
		exit 1
	fi
}

print_help()
{
	cat << EOSTREAM
opk_make.sh - A script to package "something" into a OPK.

Usage:
  $(basename ${0}) {--directory|-d} <folder> {--opk|-o} <file> [{--help|-h}]


Switches:
  --directory / -d          Sets the folder that is to be used for the resulting opk
                            to <folder>. This option is mandatory for the script to
                            function correctly.

  --help / -h               Displays this help text.

  --opkname / -o            Sets the output filename of the resulting opk to <file>.
                            This option is mandatory for the script to function
                            correctly.

A version >=4.0 of squashfs is required to be available in your PATH.
EOSTREAM
}


# Parse command line parameters
while [ "${1}" != "" ]; do
	if [ "${1}" = "--directory" ] || [ "${1}" = "-d" ];
	then
		FOLDER=$2
		shift 2
	elif [ "${1}" = "--help" ] || [ "${1}" = "-h" ];
	then
		print_help
		exit 0
	elif [ "${1}" = "--opkname" ] || [ "${1}" = "-o" ];
	then
		OPKNAME=$2
		shift 2
	else
		echo "ERROR: '$1' is not a known argument. Printing --help and aborting."
		print_help
		exit 1
	fi
done


# Probe if required variables were set
echo "Checking if all required variables were set."
if [ ! $OPKNAME ] || [ ! $FOLDER ];
then
	echo "ERROR: Not all required options were set! Please see the --help information below."
	print_help
	exit 1
else
	echo "OPKNAME set to '$OPKNAME'."
fi
# Check if the selected folder actually exists
if [ ! -d $FOLDER ];
then
	echo "ERROR: '$FOLDER' doesn't exist or is not a folder."
	exit 1
else
	echo "FOLDER set to '$FOLDER'."
fi

# Make iso from folder
echo "Creating an iso file based on '$FOLDER'."

check_for_tool mksquashfs
if [ $(mksquashfs -version | awk 'BEGIN{r=0} $3>=4{r=1} END{print r}') -eq 0 ];
then
	echo "ERROR: Your squashfs version is older then version 4, please upgrade to 4.0 or later"
	exit 1
fi
mksquashfs $FOLDER $OPKNAME.opk -noappend -no-exports -no-xattrs

# Final message
if [ -f $OPKNAME ];
then
	echo "Successfully finished creating the opk '$OPKNAME'."
else
	echo "There seems to have been a problem and '$OPKNAME' was not created. Please check
the output above for any error messages. A possible cause for this is that there was
not enough space available."
	exit 1
fi