-rwxr-xr-x | scripts/ipkg-build | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/scripts/ipkg-build b/scripts/ipkg-build index ac8f286..0533048 100755 --- a/scripts/ipkg-build +++ b/scripts/ipkg-build | |||
@@ -92,103 +92,108 @@ You probably want to chown these to a system user: " >&2 | |||
92 | if [ -n "$bad_fields" ]; then | 92 | if [ -n "$bad_fields" ]; then |
93 | bad_fields=`echo $bad_fields` | 93 | bad_fields=`echo $bad_fields` |
94 | echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2 | 94 | echo "*** Error: The following fields in $CONTROL/control are missing a ':'" >&2 |
95 | echo "$bad_fields" >&2 | 95 | echo "$bad_fields" >&2 |
96 | echo "ipkg-build: This may be due to a missing initial space for a multi-line field value" >&2 | 96 | echo "ipkg-build: This may be due to a missing initial space for a multi-line field value" >&2 |
97 | PKG_ERROR=1 | 97 | PKG_ERROR=1 |
98 | fi | 98 | fi |
99 | 99 | ||
100 | for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do | 100 | for script in $CONTROL/preinst $CONTROL/postinst $CONTROL/prerm $CONTROL/postrm; do |
101 | if [ -f $script -a ! -x $script ]; then | 101 | if [ -f $script -a ! -x $script ]; then |
102 | echo "*** Error: package script $script is not executable" >&2 | 102 | echo "*** Error: package script $script is not executable" >&2 |
103 | PKG_ERROR=1 | 103 | PKG_ERROR=1 |
104 | fi | 104 | fi |
105 | done | 105 | done |
106 | 106 | ||
107 | if [ -f $CONTROL/conffiles ]; then | 107 | if [ -f $CONTROL/conffiles ]; then |
108 | for cf in `cat $CONTROL/conffiles`; do | 108 | for cf in `cat $CONTROL/conffiles`; do |
109 | if [ ! -f ./$cf ]; then | 109 | if [ ! -f ./$cf ]; then |
110 | echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2 | 110 | echo "*** Error: $CONTROL/conffiles mentions conffile $cf which does not exist" >&2 |
111 | PKG_ERROR=1 | 111 | PKG_ERROR=1 |
112 | fi | 112 | fi |
113 | done | 113 | done |
114 | fi | 114 | fi |
115 | 115 | ||
116 | cd $owd | 116 | cd $owd |
117 | return $PKG_ERROR | 117 | return $PKG_ERROR |
118 | } | 118 | } |
119 | 119 | ||
120 | ### | 120 | ### |
121 | # ipkg-build "main" | 121 | # ipkg-build "main" |
122 | ### | 122 | ### |
123 | ogargs="" | 123 | ogargs="" |
124 | usage="Usage: $0 [-o owner] [-g group] <pkg_directory> [<destination_directory>]" | 124 | usage="Usage: $0 [-o owner] [-g group] [-c] <pkg_directory> [<destination_directory>]" |
125 | while getopts ":o:g:" opt; do | 125 | while getopts ":o:g:c" opt; do |
126 | case $opt in | 126 | case $opt in |
127 | o ) owner=$OPTARG | 127 | o ) owner=$OPTARG |
128 | ogargs="--owner=$owner" | 128 | ogargs="--owner=$owner" |
129 | ;; | 129 | ;; |
130 | g ) group=$OPTARG | 130 | g ) group=$OPTARG |
131 | ogargs="$ogargs --group=$group" | 131 | ogargs="$ogargs --group=$group" |
132 | ;; | 132 | ;; |
133 | c ) classic=1 | ||
134 | ;; | ||
133 | \? ) echo $usage >&2 | 135 | \? ) echo $usage >&2 |
134 | esac | 136 | esac |
135 | done | 137 | done |
136 | 138 | ||
137 | 139 | ||
138 | shift $(($OPTIND - 1)) | 140 | shift $(($OPTIND - 1)) |
139 | 141 | ||
140 | # continue on to process additional arguments | 142 | # continue on to process additional arguments |
141 | 143 | ||
142 | case $# in | 144 | case $# in |
143 | 1) | 145 | 1) |
144 | dest_dir=. | 146 | dest_dir=. |
145 | ;; | 147 | ;; |
146 | 2) | 148 | 2) |
147 | dest_dir=$2 | 149 | dest_dir=$2 |
148 | ;; | 150 | ;; |
149 | *) | 151 | *) |
150 | echo echo $usage >&2 | 152 | echo echo $usage >&2 |
151 | exit 1 | 153 | exit 1 |
152 | ;; | 154 | ;; |
153 | esac | 155 | esac |
154 | 156 | ||
155 | pkg_dir=$1 | 157 | pkg_dir=$1 |
156 | 158 | ||
157 | if [ ! -d $pkg_dir ]; then | 159 | if [ ! -d $pkg_dir ]; then |
158 | echo "*** Error: Directory $pkg_dir does not exist" >&2 | 160 | echo "*** Error: Directory $pkg_dir does not exist" >&2 |
159 | exit 1 | 161 | exit 1 |
160 | fi | 162 | fi |
161 | 163 | ||
162 | # CONTROL is second so that it takes precedence | 164 | # CONTROL is second so that it takes precedence |
163 | CONTROL= | 165 | CONTROL= |
164 | [ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN | 166 | [ -d $pkg_dir/DEBIAN ] && CONTROL=DEBIAN |
165 | [ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL | 167 | [ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL |
166 | if [ -z "$CONTROL" ]; then | 168 | if [ -z "$CONTROL" ]; then |
167 | echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2 | 169 | echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2 |
168 | exit 1 | 170 | exit 1 |
169 | fi | 171 | fi |
170 | 172 | ||
171 | if ! pkg_appears_sane $pkg_dir; then | 173 | if ! pkg_appears_sane $pkg_dir; then |
172 | echo >&2 | 174 | echo >&2 |
173 | echo "ipkg-build: Please fix the above errors and try again." >&2 | 175 | echo "ipkg-build: Please fix the above errors and try again." >&2 |
174 | exit 1 | 176 | exit 1 |
175 | fi | 177 | fi |
176 | 178 | ||
177 | tmp_dir=$dest_dir/IPKG_BUILD.$$ | 179 | tmp_dir=$dest_dir/IPKG_BUILD.$$ |
178 | mkdir $tmp_dir | 180 | mkdir $tmp_dir |
179 | 181 | ||
180 | tar $ogargs -C $pkg_dir -czf $tmp_dir/data.tar.gz . --exclude=$CONTROL | 182 | tar $ogargs -C $pkg_dir -czf $tmp_dir/data.tar.gz . --exclude=$CONTROL |
181 | tar $ogargs -C $pkg_dir/$CONTROL -czf $tmp_dir/control.tar.gz . | 183 | tar $ogargs -C $pkg_dir/$CONTROL -czf $tmp_dir/control.tar.gz . |
182 | 184 | ||
183 | echo "2.0" > $tmp_dir/debian-binary | 185 | echo "2.0" > $tmp_dir/debian-binary |
184 | 186 | ||
185 | pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk | 187 | pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk |
186 | here_dir=$PWD | 188 | here_dir=$PWD |
187 | ## tar -C $tmp_dir -czf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz | ||
188 | rm -f $pkg_file | 189 | rm -f $pkg_file |
189 | cd $tmp_dir ; ar crf $here_dir/$pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz | 190 | if [ -n "$classic" ]; then |
191 | tar -C $tmp_dir -czf $pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz | ||
192 | else | ||
193 | cd $tmp_dir ; ar crf $here_dir/$pkg_file ./debian-binary ./data.tar.gz ./control.tar.gz | ||
194 | fi | ||
190 | cd $here_dir | 195 | cd $here_dir |
191 | rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz | 196 | rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz |
192 | rmdir $tmp_dir | 197 | rmdir $tmp_dir |
193 | 198 | ||
194 | echo "Packaged contents of $pkg_dir into $pkg_file" | 199 | echo "Packaged contents of $pkg_dir into $pkg_file" |