mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-15 03:14:50 +00:00
ece5cab743
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>
32 lines
772 B
Bash
Executable File
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
|