Better xz compression
Borrowed from downstream, we can be a little bit smarter on how we compress modules.
This commit is contained in:
		
							parent
							
								
									d0a82f1e0f
								
							
						
					
					
						commit
						dba7671694
					
				| @ -51,8 +51,6 @@ Summary: The Linux kernel | |||||||
| 
 | 
 | ||||||
| %if %{zipmodules} | %if %{zipmodules} | ||||||
| %global zipsed -e 's/\.ko$/\.ko.xz/' | %global zipsed -e 's/\.ko$/\.ko.xz/' | ||||||
| # for parallel xz processes, replace with 1 to go back to single process |  | ||||||
| %global zcpu `nproc --all` |  | ||||||
| %endif | %endif | ||||||
| 
 | 
 | ||||||
| # define buildid .local | # define buildid .local | ||||||
| @ -2070,7 +2068,7 @@ find Documentation -type d | xargs chmod u+w | |||||||
|     fi \ |     fi \ | ||||||
|   fi \ |   fi \ | ||||||
|   if [ "%{zipmodules}" -eq "1" ]; then \ |   if [ "%{zipmodules}" -eq "1" ]; then \ | ||||||
|     find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | xargs -P%{zcpu} xz; \ |     find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | %{SOURCE79} %{?_smp_mflags}; \ | ||||||
|   fi \ |   fi \ | ||||||
| %{nil} | %{nil} | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								parallel_xz.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										26
									
								
								parallel_xz.sh
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | # Reads filenames on stdin, xz-compresses each in place. | ||||||
|  | # Not optimal for "compress relatively few, large files" scenario! | ||||||
|  | 
 | ||||||
|  | # How many xz's to run in parallel: | ||||||
|  | procgroup="" | ||||||
|  | while test "$#" != 0; do | ||||||
|  | 	# Get it from -jNUM | ||||||
|  | 	N="${1#-j}" | ||||||
|  | 	if test "$N" = "$1"; then | ||||||
|  | 		# Not -j<something> - warn and ignore | ||||||
|  | 		echo "parallel_xz: warning: unrecognized argument: '$1'" | ||||||
|  | 	else | ||||||
|  | 		procgroup="$N" | ||||||
|  | 	fi | ||||||
|  | 	shift | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # If told to use only one cpu: | ||||||
|  | test "$procgroup" || exec xargs -r xz | ||||||
|  | test "$procgroup" = 1 && exec xargs -r xz | ||||||
|  | 
 | ||||||
|  | # xz has some startup cost. If files are really small, | ||||||
|  | # this cost might be significant. To combat this, | ||||||
|  | # process several files (in sequence) by each xz process via -n 16: | ||||||
|  | exec xargs -r -n 16 -P $procgroup xz | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user