From 40af2e3b0fb3c116e9e187dd83d5ff7cd762ca43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= Date: Wed, 21 Mar 2018 11:27:30 +0100 Subject: [PATCH] d/scripts/abi-generate: add new helper script MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit and use it in d/rules to generate the checked ABI file. Signed-off-by: Fabian Grünbichler --- debian/rules | 2 +- debian/scripts/abi-generate | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100755 debian/scripts/abi-generate diff --git a/debian/rules b/debian/rules index 1f2e155..5498ff0 100755 --- a/debian/rules +++ b/debian/rules @@ -205,7 +205,7 @@ fwcheck: fwlist-${KVNAME} fwlist-previous abi-${KVNAME}: .compile_mark - sed -e 's/^\(.\+\)[[:space:]]\+\(.\+\)[[:space:]]\(.\+\)$$/\3 \2 \1/' debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/Module.symvers | sort > abi-${KVNAME} + debian/scripts/abi-generate debian/${PVE_HEADER_PKG}/usr/src/linux-headers-${KVNAME}/Module.symvers abi-${KVNAME} ${KVNAME} .PHONY: abicheck abicheck: debian/scripts/abi-check abi-${KVNAME} abi-previous abi-blacklist diff --git a/debian/scripts/abi-generate b/debian/scripts/abi-generate new file mode 100755 index 0000000..44704fb --- /dev/null +++ b/debian/scripts/abi-generate @@ -0,0 +1,37 @@ +#!/usr/bin/perl -w + +use PVE::Tools; + +use IO::File; + +my $input_file = shift; +my $output_file = shift; +my $abi = shift; +my $extract_deb = shift; + +die "input file '$input_file' does not exist\n" if ! -e $input_file; + +my $modules_symver_fh; + +if ($extract_deb) { + my $cmd = []; + push @$cmd, ['dpkg', '--fsys-tarfile', $input_file]; + push @$cmd, ['tar', '-xOf', '-', "./usr/src/linux-headers-${abi}/Module.symvers"]; + $modules_symver_fh = IO::File->new_tmpfile(); + PVE::Tools::run_command($cmd, output => '>&'.fileno($modules_symver_fh)); + seek($modules_symver_fh, 0, 0); +} else { + open($modules_symver_fh, '<', $input_file) or die "can't open '$input_file' - $!\n"; +} + +my $lines = []; +while(my $line = <$modules_symver_fh>) { + if ($line =~ /^(.+)\s+(.+)\s+(.+)$/) { + push @$lines, "$3 $2 $1"; + } else { + warn "malformed symvers line: '$line'\n"; + } +} +close($modules_symver_fh); + +PVE::Tools::file_set_contents($output_file, join("\n", sort @$lines));