openwrt/scripts/ipkg-make-index.sh
Jo-Philipp Wich ece5cab743 scripts: ipkg-make-index.sh: dereference symbolic links
Use `stat -L` instead of `ls -l` to follow symbolic links when obtaining
the file size of .ipk archives.

Without this change, the size of the symlink, not the size of the target
file is encoded in the package index file.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
2019-01-31 12:35:29 +01:00

32 lines
772 B
Bash
Executable File

#!/usr/bin/env bash
set -e
pkg_dir=$1
if [ -z $pkg_dir ] || [ ! -d $pkg_dir ]; then
echo "Usage: ipkg-make-index <package_directory>" >&2
exit 1
fi
empty=1
for pkg in `find $pkg_dir -name '*.ipk' | sort`; do
empty=
name="${pkg##*/}"
name="${name%%_*}"
[[ "$name" = "kernel" ]] && continue
[[ "$name" = "libc" ]] && continue
echo "Generating index for package $pkg" >&2
file_size=$(stat -L -c%s $pkg)
sha256sum=$(mkhash sha256 $pkg)
# Take pains to make variable value sed-safe
sed_safe_pkg=`echo $pkg | sed -e 's/^\.\///g' -e 's/\\//\\\\\\//g'`
tar -xzOf $pkg ./control.tar.gz | tar xzOf - ./control | sed -e "s/^Description:/Filename: $sed_safe_pkg\\
Size: $file_size\\
SHA256sum: $sha256sum\\
Description:/"
echo ""
done
[ -n "$empty" ] && echo
exit 0