Skip to content

Commit 8dfb61d

Browse files
evdenismasahir0y
authored andcommitted
kbuild: add variables for compression tools
Allow user to use alternative implementations of compression tools, such as pigz, pbzip2, pxz. For example, multi-threaded tools to speed up the build: $ make GZIP=pigz BZIP2=pbzip2 Variables _GZIP, _BZIP2, _LZOP are used internally because original env vars are reserved by the tools. The use of GZIP in gzip tool is obsolete since 2015. However, alternative implementations (e.g., pigz) still rely on it. BZIP2, BZIP, LZOP vars are not obsolescent. The credit goes to @grsecurity. As a sidenote, for multi-threaded lzma, xz compression one can use: $ export XZ_OPT="--threads=0" Signed-off-by: Denis Efremov <[email protected]> Signed-off-by: Masahiro Yamada <[email protected]>
1 parent e0b250b commit 8dfb61d

File tree

10 files changed

+45
-24
lines changed

10 files changed

+45
-24
lines changed

Makefile

+23-2
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,26 @@ PYTHON = python
458458
PYTHON3 = python3
459459
CHECK = sparse
460460
BASH = bash
461+
GZIP = gzip
462+
BZIP2 = bzip2
463+
LZOP = lzop
464+
LZMA = lzma
465+
LZ4 = lz4c
466+
XZ = xz
467+
468+
# GZIP, BZIP2, LZOP env vars are used by the tools. Support them as the command
469+
# line interface, but use _GZIP, _BZIP2, _LZOP internally.
470+
_GZIP := $(GZIP)
471+
_BZIP2 := $(BZIP2)
472+
_LZOP := $(LZOP)
473+
474+
# Reset GZIP, BZIP2, LZOP in this Makefile
475+
override GZIP=
476+
override BZIP2=
477+
override LZOP=
478+
479+
# Reset GZIP, BZIP2, LZOP in recursive invocations
480+
MAKEOVERRIDES += GZIP= BZIP2= LZOP=
461481

462482
CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
463483
-Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF)
@@ -506,6 +526,7 @@ CLANG_FLAGS :=
506526
export ARCH SRCARCH CONFIG_SHELL BASH HOSTCC KBUILD_HOSTCFLAGS CROSS_COMPILE LD CC
507527
export CPP AR NM STRIP OBJCOPY OBJDUMP OBJSIZE READELF PAHOLE LEX YACC AWK INSTALLKERNEL
508528
export PERL PYTHON PYTHON3 CHECK CHECKFLAGS MAKE UTS_MACHINE HOSTCXX
529+
export _GZIP _BZIP2 _LZOP LZMA LZ4 XZ
509530
export KBUILD_HOSTCXXFLAGS KBUILD_HOSTLDFLAGS KBUILD_HOSTLDLIBS LDFLAGS_MODULE
510531

511532
export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS KBUILD_LDFLAGS
@@ -1020,10 +1041,10 @@ export mod_strip_cmd
10201041
mod_compress_cmd = true
10211042
ifdef CONFIG_MODULE_COMPRESS
10221043
ifdef CONFIG_MODULE_COMPRESS_GZIP
1023-
mod_compress_cmd = gzip -n -f
1044+
mod_compress_cmd = $(_GZIP) -n -f
10241045
endif # CONFIG_MODULE_COMPRESS_GZIP
10251046
ifdef CONFIG_MODULE_COMPRESS_XZ
1026-
mod_compress_cmd = xz -f
1047+
mod_compress_cmd = $(XZ) -f
10271048
endif # CONFIG_MODULE_COMPRESS_XZ
10281049
endif # CONFIG_MODULE_COMPRESS
10291050
export mod_compress_cmd

arch/arm/boot/deflate_xip_data.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ trap 'rm -f "$XIPIMAGE.tmp"; exit 1' 1 2 3
5656
# substitute the data section by a compressed version
5757
$DD if="$XIPIMAGE" count=$data_start iflag=count_bytes of="$XIPIMAGE.tmp"
5858
$DD if="$XIPIMAGE" skip=$data_start iflag=skip_bytes |
59-
gzip -9 >> "$XIPIMAGE.tmp"
59+
$_GZIP -9 >> "$XIPIMAGE.tmp"
6060

6161
# replace kernel binary
6262
mv -f "$XIPIMAGE.tmp" "$XIPIMAGE"

arch/ia64/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ $(error Sorry, you need a newer version of the assember, one that is built from
4040
endif
4141

4242
quiet_cmd_gzip = GZIP $@
43-
cmd_gzip = cat $(real-prereqs) | gzip -n -f -9 > $@
43+
cmd_gzip = cat $(real-prereqs) | $(_GZIP) -n -f -9 > $@
4444

4545
quiet_cmd_objcopy = OBJCOPY $@
4646
cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@

arch/m68k/Makefile

+4-4
Original file line numberDiff line numberDiff line change
@@ -135,10 +135,10 @@ vmlinux.gz: vmlinux
135135
ifndef CONFIG_KGDB
136136
cp vmlinux vmlinux.tmp
137137
$(STRIP) vmlinux.tmp
138-
gzip -9c vmlinux.tmp >vmlinux.gz
138+
$(_GZIP) -9c vmlinux.tmp >vmlinux.gz
139139
rm vmlinux.tmp
140140
else
141-
gzip -9c vmlinux >vmlinux.gz
141+
$(_GZIP) -9c vmlinux >vmlinux.gz
142142
endif
143143

144144
bzImage: vmlinux.bz2
@@ -148,10 +148,10 @@ vmlinux.bz2: vmlinux
148148
ifndef CONFIG_KGDB
149149
cp vmlinux vmlinux.tmp
150150
$(STRIP) vmlinux.tmp
151-
bzip2 -1c vmlinux.tmp >vmlinux.bz2
151+
$(_BZIP2) -1c vmlinux.tmp >vmlinux.bz2
152152
rm vmlinux.tmp
153153
else
154-
bzip2 -1c vmlinux >vmlinux.bz2
154+
$(_BZIP2) -1c vmlinux >vmlinux.bz2
155155
endif
156156

157157
archclean:

arch/parisc/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ vmlinuz: bzImage
162162
$(OBJCOPY) $(boot)/bzImage $@
163163
else
164164
vmlinuz: vmlinux
165-
@gzip -cf -9 $< > $@
165+
@$(_GZIP) -cf -9 $< > $@
166166
endif
167167

168168
install:

kernel/gen_kheaders.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ find $cpio_dir -type f -print0 |
8888
find $cpio_dir -printf "./%P\n" | LC_ALL=C sort | \
8989
tar "${KBUILD_BUILD_TIMESTAMP:+--mtime=$KBUILD_BUILD_TIMESTAMP}" \
9090
--owner=0 --group=0 --numeric-owner --no-recursion \
91-
-Jcf $tarfile -C $cpio_dir/ -T - > /dev/null
91+
-I $XZ -cf $tarfile -C $cpio_dir/ -T - > /dev/null
9292

9393
echo $headers_md5 > kernel/kheaders.md5
9494
echo "$this_file_md5" >> kernel/kheaders.md5

scripts/Makefile.lib

+6-6
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
244244
# ---------------------------------------------------------------------------
245245

246246
quiet_cmd_gzip = GZIP $@
247-
cmd_gzip = cat $(real-prereqs) | gzip -n -f -9 > $@
247+
cmd_gzip = cat $(real-prereqs) | $(_GZIP) -n -f -9 > $@
248248

249249
# DTC
250250
# ---------------------------------------------------------------------------
@@ -337,19 +337,19 @@ printf "%08x\n" $$dec_size | \
337337
)
338338

339339
quiet_cmd_bzip2 = BZIP2 $@
340-
cmd_bzip2 = { cat $(real-prereqs) | bzip2 -9; $(size_append); } > $@
340+
cmd_bzip2 = { cat $(real-prereqs) | $(_BZIP2) -9; $(size_append); } > $@
341341

342342
# Lzma
343343
# ---------------------------------------------------------------------------
344344

345345
quiet_cmd_lzma = LZMA $@
346-
cmd_lzma = { cat $(real-prereqs) | lzma -9; $(size_append); } > $@
346+
cmd_lzma = { cat $(real-prereqs) | $(LZMA) -9; $(size_append); } > $@
347347

348348
quiet_cmd_lzo = LZO $@
349-
cmd_lzo = { cat $(real-prereqs) | lzop -9; $(size_append); } > $@
349+
cmd_lzo = { cat $(real-prereqs) | $(_LZOP) -9; $(size_append); } > $@
350350

351351
quiet_cmd_lz4 = LZ4 $@
352-
cmd_lz4 = { cat $(real-prereqs) | lz4c -l -c1 stdin stdout; \
352+
cmd_lz4 = { cat $(real-prereqs) | $(LZ4) -l -c1 stdin stdout; \
353353
$(size_append); } > $@
354354

355355
# U-Boot mkimage
@@ -396,7 +396,7 @@ quiet_cmd_xzkern = XZKERN $@
396396
$(size_append); } > $@
397397

398398
quiet_cmd_xzmisc = XZMISC $@
399-
cmd_xzmisc = cat $(real-prereqs) | xz --check=crc32 --lzma2=dict=1MiB > $@
399+
cmd_xzmisc = cat $(real-prereqs) | $(XZ) --check=crc32 --lzma2=dict=1MiB > $@
400400

401401
# ASM offsets
402402
# ---------------------------------------------------------------------------

scripts/Makefile.package

+4-4
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ if test "$(objtree)" != "$(srctree)"; then \
4545
false; \
4646
fi ; \
4747
$(srctree)/scripts/setlocalversion --save-scmversion; \
48-
tar -cz $(RCS_TAR_IGNORE) -f $(2).tar.gz \
48+
tar -I $(_GZIP) -c $(RCS_TAR_IGNORE) -f $(2).tar.gz \
4949
--transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3); \
5050
rm -f $(objtree)/.scmversion
5151

@@ -127,9 +127,9 @@ util/PERF-VERSION-GEN $(CURDIR)/$(perf-tar)/); \
127127
tar rf $(perf-tar).tar $(perf-tar)/HEAD $(perf-tar)/PERF-VERSION-FILE; \
128128
rm -r $(perf-tar); \
129129
$(if $(findstring tar-src,$@),, \
130-
$(if $(findstring bz2,$@),bzip2, \
131-
$(if $(findstring gz,$@),gzip, \
132-
$(if $(findstring xz,$@),xz, \
130+
$(if $(findstring bz2,$@),$(_BZIP2), \
131+
$(if $(findstring gz,$@),$(_GZIP), \
132+
$(if $(findstring xz,$@),$(XZ), \
133133
$(error unknown target $@)))) \
134134
-f -9 $(perf-tar).tar)
135135

scripts/package/buildtar

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ case "${1}" in
2828
opts=
2929
;;
3030
targz-pkg)
31-
opts=--gzip
31+
opts="-I ${_GZIP}"
3232
tarball=${tarball}.gz
3333
;;
3434
tarbz2-pkg)
35-
opts=--bzip2
35+
opts="-I ${_BZIP2}"
3636
tarball=${tarball}.bz2
3737
;;
3838
tarxz-pkg)
39-
opts=--xz
39+
opts="-I ${XZ}"
4040
tarball=${tarball}.xz
4141
;;
4242
*)

scripts/xz_wrap.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,4 @@ case $SRCARCH in
2020
sparc) BCJ=--sparc ;;
2121
esac
2222

23-
exec xz --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB
23+
exec $XZ --check=crc32 $BCJ --lzma2=$LZMA2OPTS,dict=32MiB

0 commit comments

Comments
 (0)