linux-firmware/debian/scripts/list-lts-update-files

66 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
#
# Used to get a list of firmware files needed to update a LTS
# linux-firmware package for a backport kernel. For example to
# get a list of files for trusty to support the linux-lts-xenial
# kernel run:
#
# debian/list-lts-update-files trusty xenial /path/to/xenial/fwinfo
#
# This will generate a list of files that satisfy all of these
# conditions:
#
# 1) In the xenial branch of linux-firmware
# 2) Not in the trusty branch of linux-firmware
# 3) In the specified fwinfo file
#
# This can be used as a starting point for finding upstream
# commits needed to add the missing firmware files.
#
# The fwinfo file can be omitted, in which case the output is a list
# of firmware files in @newbranch but not in @oldbranch.
if [ $# -lt 2 ]; then
echo "Usage $0 <oldbranch> <newbranch> [<fwinfo>]"
exit 1
fi
OLDBRANCH="$1"
NEWBRANCH="$2"
FWINFO="$3"
TMPDIR=$(mktemp -d)
function cleanup {
rm -r "$TMPDIR"
}
trap cleanup EXIT
if ! git ls-tree -r --name-only "$OLDBRANCH" >"$TMPDIR/files.tmp"
then
exit 1
fi
cat "$TMPDIR/files.tmp" | sort >"$TMPDIR/oldbranch-files"
if ! git ls-tree -r --name-only "$NEWBRANCH" >"$TMPDIR/files.tmp"
then
exit 1
fi
cat "$TMPDIR/files.tmp" | sort >"$TMPDIR/newbranch-files"
# Get files in @newbranch not in @oldbranch
comm -13 "$TMPDIR/oldbranch-files" "$TMPDIR/newbranch-files" >"$TMPDIR/new-files"
if [ "$3" == "" ]; then
cat "$TMPDIR/new-files"
exit 0
fi
if ! cat $FWINFO | head -n1 | grep "firmware: " > /dev/null
then
echo "Invliad fwinfo file $FWINFO"
exit 1
fi
cat "$FWINFO" | sed 's/firmware: \+//' | sort >"$TMPDIR/fwinfo-files"
comm -12 "$TMPDIR/new-files" "$TMPDIR/fwinfo-files"