and use it in d/rules to generate the checked ABI file.

Signed-off-by: Fabian Grünbichler <[email protected]>
---
note: the extract deb part is only used in a later patch

 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 7a0d143..a26cf61 100755
--- a/debian/rules
+++ b/debian/rules
@@ -202,7 +202,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));
-- 
2.14.2


_______________________________________________
pve-devel mailing list
[email protected]
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to