scripts,ipkg-build: apply shellcheck

This commit cleans the `ipkg-build` script via changes suggested by
shellcheck. These are mostly word splitting issues.

Remove the definition of GZIP, this adds three "lookups" of the `gzip`
binary but the rest of the build system doesn't seem to use such
improvements neither.

Signed-off-by: Paul Spooren <mail@aparcar.org>
This commit is contained in:
Paul Spooren 2021-02-04 13:34:30 -10:00
parent 6cd13be014
commit 72f481b157

View File

@ -13,7 +13,6 @@ version=1.0
FIND="$(command -v find)" FIND="$(command -v find)"
FIND="${FIND:-$(command -v gfind)}" FIND="${FIND:-$(command -v gfind)}"
TAR="${TAR:-$(command -v tar)}" TAR="${TAR:-$(command -v tar)}"
GZIP="$(command -v gzip)"
# try to use fixed source epoch # try to use fixed source epoch
if [ -n "$PKG_SOURCE_DATE_EPOCH" ]; then if [ -n "$PKG_SOURCE_DATE_EPOCH" ]; then
@ -31,40 +30,40 @@ ipkg_extract_value() {
required_field() { required_field() {
field=$1 field=$1
grep "^$field:" < $CONTROL/control | ipkg_extract_value grep "^$field:" < "$CONTROL/control" | ipkg_extract_value
} }
pkg_appears_sane() { pkg_appears_sane() {
local pkg_dir=$1 local pkg_dir="$1"
local owd=$PWD local owd="$PWD"
cd $pkg_dir cd "$pkg_dir"
PKG_ERROR=0 PKG_ERROR=0
pkg=`required_field Package` pkg="$(required_field Package)"
version=`required_field Version | sed 's/Version://; s/^.://g;'` version="$(required_field Version | sed 's/Version://; s/^.://g;')"
arch=`required_field Architecture` arch="$(required_field Architecture)"
if echo $pkg | grep '[^a-zA-Z0-9_.+-]'; then if echo "$pkg" | grep '[^a-zA-Z0-9_.+-]'; then
echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2 echo "*** Error: Package name $name contains illegal characters, (other than [a-z0-9.+-])" >&2
PKG_ERROR=1; PKG_ERROR=1;
fi fi
if [ -f $CONTROL/conffiles ]; then if [ -f "$CONTROL/conffiles" ]; then
rm -f $CONTROL/conffiles.resolved rm -f "$CONTROL/conffiles.resolved"
for cf in `$FIND $(sed -e "s!^/!$pkg_dir/!" $CONTROL/conffiles) -type f`; do for cf in $($FIND $(sed -e "s!^/!$pkg_dir/!" "$CONTROL/conffiles") -type f); do
echo "${cf#$pkg_dir}" >> $CONTROL/conffiles.resolved echo "${cf#$pkg_dir}" >> "$CONTROL/conffiles.resolved"
done done
rm $CONTROL/conffiles rm "$CONTROL"/conffiles
if [ -f $CONTROL/conffiles.resolved ]; then if [ -f "$CONTROL"/conffiles.resolved ]; then
mv $CONTROL/conffiles.resolved $CONTROL/conffiles mv "$CONTROL"/conffiles.resolved "$CONTROL"/conffiles
chmod 0644 $CONTROL/conffiles chmod 0644 "$CONTROL"/conffiles
fi fi
fi fi
cd $owd cd "$owd"
return $PKG_ERROR return $PKG_ERROR
} }
@ -95,17 +94,17 @@ file_modes=""
usage="Usage: $0 [-v] [-h] [-m] <pkg_directory> [<destination_directory>]" usage="Usage: $0 [-v] [-h] [-m] <pkg_directory> [<destination_directory>]"
while getopts "hvm:" opt; do while getopts "hvm:" opt; do
case $opt in case $opt in
v ) echo $version v ) echo "$version"
exit 0 exit 0
;; ;;
h ) echo $usage >&2 ;; h ) echo "$usage" >&2 ;;
m ) file_modes=$OPTARG ;; m ) file_modes=$OPTARG ;;
\? ) echo $usage >&2 \? ) echo "$usage" >&2
esac esac
done done
shift $(($OPTIND - 1)) shift $((OPTIND - 1))
# continue on to process additional arguments # continue on to process additional arguments
@ -115,42 +114,42 @@ case $# in
;; ;;
2) 2)
dest_dir=$2 dest_dir=$2
if [ "$dest_dir" = "." -o "$dest_dir" = "./" ] ; then if [ "$dest_dir" = "." ] || [ "$dest_dir" = "./" ] ; then
dest_dir=$PWD dest_dir=$PWD
fi fi
;; ;;
*) *)
echo $usage >&2 echo "$usage" >&2
exit 1 exit 1
;; ;;
esac esac
pkg_dir=$1 pkg_dir="$1"
if [ ! -d $pkg_dir ]; then if [ ! -d "$pkg_dir" ]; then
echo "*** Error: Directory $pkg_dir does not exist" >&2 echo "*** Error: Directory $pkg_dir does not exist" >&2
exit 1 exit 1
fi fi
# CONTROL is second so that it takes precedence # CONTROL is second so that it takes precedence
CONTROL= CONTROL=
[ -d $pkg_dir/CONTROL ] && CONTROL=CONTROL [ -d "$pkg_dir"/CONTROL ] && CONTROL=CONTROL
if [ -z "$CONTROL" ]; then if [ -z "$CONTROL" ]; then
echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2 echo "*** Error: Directory $pkg_dir has no CONTROL subdirectory." >&2
exit 1 exit 1
fi fi
if ! pkg_appears_sane $pkg_dir; then if ! pkg_appears_sane "$pkg_dir"; then
echo >&2 echo >&2
echo "ipkg-build: Please fix the above errors and try again." >&2 echo "ipkg-build: Please fix the above errors and try again." >&2
exit 1 exit 1
fi fi
tmp_dir=$dest_dir/IPKG_BUILD.$$ tmp_dir=$dest_dir/IPKG_BUILD.$$
mkdir $tmp_dir mkdir "$tmp_dir"
echo $CONTROL > $tmp_dir/tarX echo $CONTROL > "$tmp_dir"/tarX
cd $pkg_dir cd "$pkg_dir"
for file_mode in $file_modes; do for file_mode in $file_modes; do
case $file_mode in case $file_mode in
/*:*:*:*) /*:*:*:*)
@ -179,22 +178,22 @@ for file_mode in $file_modes; do
chown "$uid:$gid" "$pkg_dir/$path" chown "$uid:$gid" "$pkg_dir/$path"
chmod "$mode" "$pkg_dir/$path" chmod "$mode" "$pkg_dir/$path"
done done
$TAR -X $tmp_dir/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/data.tar.gz $TAR -X "$tmp_dir"/tarX --format=gnu --sort=name -cpf - --mtime="$TIMESTAMP" . | gzip -n - > "$tmp_dir"/data.tar.gz
installed_size=`stat -c "%s" $tmp_dir/data.tar.gz` installed_size=$(stat -c "%s" "$tmp_dir"/data.tar.gz)
sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \ sed -i -e "s/^Installed-Size: .*/Installed-Size: $installed_size/" \
$pkg_dir/$CONTROL/control "$pkg_dir"/$CONTROL/control
( cd $pkg_dir/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | $GZIP -n - > $tmp_dir/control.tar.gz ) ( cd "$pkg_dir"/$CONTROL && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" . | gzip -n - > "$tmp_dir"/control.tar.gz )
rm $tmp_dir/tarX rm "$tmp_dir"/tarX
echo "2.0" > $tmp_dir/debian-binary echo "2.0" > "$tmp_dir"/debian-binary
pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk pkg_file=$dest_dir/${pkg}_${version}_${arch}.ipk
rm -f $pkg_file rm -f "$pkg_file"
( cd $tmp_dir && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | $GZIP -n - > $pkg_file ) ( cd "$tmp_dir" && $TAR --format=gnu --sort=name -cf - --mtime="$TIMESTAMP" ./debian-binary ./data.tar.gz ./control.tar.gz | gzip -n - > "$pkg_file" )
rm $tmp_dir/debian-binary $tmp_dir/data.tar.gz $tmp_dir/control.tar.gz rm "$tmp_dir"/debian-binary "$tmp_dir"/data.tar.gz "$tmp_dir"/control.tar.gz
rmdir $tmp_dir rmdir "$tmp_dir"
echo "Packaged contents of $pkg_dir into $pkg_file" echo "Packaged contents of $pkg_dir into $pkg_file"