38 lines
		
	
	
		
			947 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			947 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #!/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)); |