1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-19 23:22:16 +03:00
esp8266/tools/sdk/lib/compare/sdk-compare-libs

110 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -e
# released to public domain
help()
{
cat << eof
usage: $1 [-v] <esp-open-sdk path>
For each binary-only library file from ESP-NONOS-SDK, this script searches for
the exact commits and reports matching versions and commit urls.
The argument must be the ESP-NONOS-SDK git-cloned directory. It is left
unmodified, and is locally cloned to work with. The local copy is then
removed.
Because of libmain.a local tweaks, comparison is done for each .a file by
extracting object files, removing the potentially modified ones
(mem_manager.o time.o user_interface.o eagle_lwip_if.o) and doing a md5
check against the core files.
eof
exit 1
}
verbose=false
[ "$1" = "-v" ] && { shift; verbose=true; }
sdk="$1"
me="$0"
core=$(cd ${me%/*}/../../../..; pwd)
[ -r "$sdk/lib/libnet80211.a" ] || help "$0"
[ -r "$core/tools/xtensa-lx106-elf/bin" ] || help "$0"
tmp=$(pwd)/NONOSDK.deleteme
cat << eof
nonos-sdk = '$sdk'
core root directory = '$core'
temporary nonos-sdk clone = '$tmp'
If libmain.a is not found, it should be the one around the same libpp.a's commit
eof
md5()
{
mkdir temp
cd temp
PATH="$core/tools/xtensa-lx106-elf/bin:$PATH" xtensa-lx106-elf-ar x "$1"
rm -f mem_manager.o time.o user_interface.o eagle_lwip_if.o
cat *.o | md5sum
cd ..
rm -rf temp
}
search()
{
rm -rf "$tmp"
git clone $sdk "$tmp" 1>&2
cd "$tmp"
git reset --hard 1>&2
corelibs=$(cd "$core/tools/sdk/lib"; ls *.a)
commits=$(git log|grep ^commit\ | tac | sed 's,commit ,,')
for f in $corelibs; do
git checkout master 1>&2 # needed
if [ -r "$tmp/lib/$f" ]; then
coremd5=$(md5 "$core/tools/sdk/lib/$f")
found=false
for i in $commits; do
git reset --hard 1>&2
git checkout $i 1>&2
[ -d "$tmp/lib" ] || continue
espmd5=$(md5 "$tmp/lib/$f")
if [ "$espmd5" = "$coremd5" ]; then
tag=$(git describe --tag)
echo "$tag - https://github.com/espressif/ESP8266_NONOS_SDK/commit/$i - $f"
found=true
break
fi
done
$found || echo "NOTFOUND - $f"
fi
done
cd ..
rm -rf "$tmp"
}
$verbose && search
$verbose || search 2>/dev/null
echo "all done"