Skip to content

Commit 2f9a9d5

Browse files
committed
Eliminate Linux SUBLEVEL bump
Add SHA256SUM as a new checksum verifier for downloading Linux tarballs since the latest Linux tarball is available at https://cdn.kernel.org/pub/linux/kernel/v6.x/, and the official SHA256 values can be found at https://cdn.kernel.org/pub/linux/kernel/v6.x/sha256sums.asc. To maintain compatibility with SHA1SUM, the verify function in mk/external.mk has been modified to support multiple SHA algorithms. With these changes, the Linux kernel SUBLEVEL bump is no longer necessary and builds can be triggered via a workflow dispatch event. Afterwards, version updates of Linux will only apply to the VERSION and PATCHLEVEL.
1 parent 375e96d commit 2f9a9d5

File tree

3 files changed

+68
-38
lines changed

3 files changed

+68
-38
lines changed

mk/artifact.mk

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@ ifeq ($(call has, SYSTEM), 1)
8484
$(Q)$(eval PREBUILT_LINUX_IMAGE_FILENAME := $(shell cat $(BIN_DIR)/sha1sum-linux-image | awk '{ print $$2 };'))
8585

8686
$(Q)$(eval $(foreach FILE,$(PREBUILT_LINUX_IMAGE_FILENAME), \
87-
$(call verify,$(shell grep -w $(FILE) $(BIN_DIR)/sha1sum-linux-image | awk '{ print $$1 };'),$(BIN_DIR)/linux-image/$(FILE),RES) \
87+
$(call verify,$(SHA1SUM),$(shell grep -w $(FILE) $(BIN_DIR)/sha1sum-linux-image | awk '{ print $$1 };'),$(BIN_DIR)/linux-image/$(FILE),RES) \
8888
))
8989

9090
$(Q)$(eval RV32EMU_PREBUILT_TARBALL := rv32emu-linux-image-prebuilt.tar.gz)
9191
else ifeq ($(call has, ARCH_TEST), 1)
9292
$(Q)$(eval PREBUILT_SAIL_FILENAME := $(shell cat $(BIN_DIR)/rv32emu-prebuilt-sail-$(HOST_PLATFORM).sha | awk '{ print $$2 };'))
9393

9494
$(Q)$(eval $(foreach FILE,$(PREBUILT_SAIL_FILENAME), \
95-
$(call verify,$(shell grep -w $(FILE) $(BIN_DIR)/rv32emu-prebuilt-sail-$(HOST_PLATFORM).sha | awk '{ print $$1 };'),$(BIN_DIR)/$(FILE),RES) \
95+
$(call verify,$(SHA1SUM),$(shell grep -w $(FILE) $(BIN_DIR)/rv32emu-prebuilt-sail-$(HOST_PLATFORM).sha | awk '{ print $$1 };'),$(BIN_DIR)/$(FILE),RES) \
9696
))
9797

9898
$(Q)$(eval RV32EMU_PREBUILT_TARBALL := rv32emu-prebuilt-sail-$(HOST_PLATFORM))
@@ -101,10 +101,10 @@ else
101101
$(Q)$(eval PREBUILT_RV32_FILENAME := $(shell cat $(BIN_DIR)/sha1sum-riscv32 | awk '{ print $$2 };'))
102102

103103
$(Q)$(eval $(foreach FILE,$(PREBUILT_X86_FILENAME), \
104-
$(call verify,$(shell grep -w $(FILE) $(BIN_DIR)/sha1sum-linux-x86-softfp | awk '{ print $$1 };'),$(BIN_DIR)/linux-x86-softfp/$(FILE),RES) \
104+
$(call verify,$(SHA1SUM),$(shell grep -w $(FILE) $(BIN_DIR)/sha1sum-linux-x86-softfp | awk '{ print $$1 };'),$(BIN_DIR)/linux-x86-softfp/$(FILE),RES) \
105105
))
106106
$(Q)$(eval $(foreach FILE,$(PREBUILT_RV32_FILENAME), \
107-
$(call verify,$(shell grep -w $(FILE) $(BIN_DIR)/sha1sum-riscv32 | awk '{ print $$1 };'),$(BIN_DIR)/riscv32/$(FILE),RES) \
107+
$(call verify,$(SHA1SUM),$(shell grep -w $(FILE) $(BIN_DIR)/sha1sum-riscv32 | awk '{ print $$1 };'),$(BIN_DIR)/riscv32/$(FILE),RES) \
108108
))
109109

110110
$(Q)$(eval RV32EMU_PREBUILT_TARBALL := rv32emu-prebuilt.tar.gz)
@@ -199,7 +199,7 @@ ifeq ($(call has, PREBUILT), 0)
199199
ifeq ($(call has, SYSTEM), 0)
200200
$(Q)$(call prologue,"scimark2")
201201
$(Q)$(call download,$(SCIMARK2_URL))
202-
$(Q)$(call verify,$(SCIMARK2_SHA1),$(notdir $(SCIMARK2_URL)))
202+
$(Q)$(call verify,$(SHA1SUM),$(SCIMARK2_SHA1),$(notdir $(SCIMARK2_URL)))
203203
$(Q)$(call extract,"./tests/scimark2",$(notdir $(SCIMARK2_URL)))
204204
$(Q)$(call epilogue,$(notdir $(SCIMARK2_URL)),$(SHA1_FILE1),$(SHA1_FILE2))
205205
$(Q)$(PRINTF) "Building scimark2 ...\n"

mk/common.mk

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,14 @@ ifndef SHA1SUM
6464
SHA1SUM := echo
6565
endif
6666
endif
67+
68+
SHA256SUM = sha256sum
69+
SHA256SUM := $(shell which $(SHA256SUM))
70+
ifndef SHA256SUM
71+
SHA256SUM = shasum -a 256
72+
SHA256SUM := $(shell which shasum)
73+
ifndef SHA256SUM
74+
$(warning No sha256sum found. Disable checksums)
75+
SHA256SUM := echo
76+
endif
77+
endif

mk/external.mk

Lines changed: 52 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ COMPRESSED_IS_DIR :=
44
EXTRACTOR :=
55
VERIFIER :=
66

7-
# temporarily files to store correct SHA1 value and computed SHA1 value
7+
# temporarily files to store correct SHA value and computed SHA value
88
# respectively for verification of directory source
9-
$(eval SHA1_FILE1 := $(shell mktemp))
10-
$(eval SHA1_FILE2 := $(shell mktemp))
9+
$(eval SHA_FILE1 := $(shell mktemp))
10+
$(eval SHA_FILE2 := $(shell mktemp))
1111

1212
# $(1): compressed source
1313
define prologue
@@ -42,85 +42,104 @@ define extract
4242
($(eval _ := \
4343
$(if $(COMPRESSED_IS_ZIP), \
4444
($(eval EXTRACTOR := unzip -d $(1) $(2))), \
45-
($(eval EXTRACTOR := tar -xf $(2) -C $(1))) \
45+
($(eval EXTRACTOR := tar -xf $(2) --strip-components=1 -C $(1))) \
4646
)) \
4747
$(eval _ := $(shell $(EXTRACTOR))))
4848
) \
4949
)
5050
endef
5151

52-
# $(1): correct SHA1 value
53-
# $(2): filename or directory path
54-
# $(3): (optional) returned result
52+
# $(1): SHA algorithm command
53+
# $(2): correct SHA value
54+
# $(3): filename or directory path
55+
# $(4): (optional) returned result
5556
#
5657
# Note:
57-
# 1. for regular file, $(SHA1SUM) command's -c option generates keyword "FAILED" for indicating an unmatch
58+
# 1. for regular file, $(1) command's -c option generates keyword "FAILED" for indicating an unmatch
5859
# 2. for directory, cmp command outputs keyword "differ" for indicating an unmatch
5960
define verify
60-
$(eval COMPRESSED_IS_DIR := $(if $(wildcard $(2)/*),1,0))
61+
$(eval COMPRESSED_IS_DIR := $(if $(wildcard $(3)/*),1,0))
6162
$(eval _ := \
6263
$(if $(filter 1,$(COMPRESSED_IS_DIR)), \
6364
($(eval VERIFIER := \
64-
echo $(1) > $(SHA1_FILE1) \
65-
| find $(2) -type f -not -path '*/.git/*' -print0 \
65+
echo $(2) > $(SHA_FILE1) \
66+
| find $(3) -type f -not -path '*/.git/*' -print0 \
6667
| sort -z \
67-
| xargs -0 $(SHA1SUM) \
68+
| xargs -0 $(1) \
6869
| sort \
69-
| $(SHA1SUM) \
70-
| cut -f 1 -d ' ' > $(SHA1_FILE2) && cmp $(SHA1_FILE1) $(SHA1_FILE2))), \
71-
($(eval VERIFIER := (ls $(2) >/dev/null 2>&1 || echo FAILED) && echo "$(strip $(1)) $(strip $(2))" | $(SHA1SUM) -c -)) \
70+
| $(1) \
71+
| cut -f 1 -d ' ' > $(SHA_FILE2) && cmp $(SHA_FILE1) $(SHA_FILE2))), \
72+
($(eval VERIFIER := (ls $(3) >/dev/null 2>&1 || echo FAILED) && echo "$(strip $(2)) $(strip $(3))" | $(1) -c -)) \
7273
))
7374
$(eval _ := $(shell $(VERIFIER) 2>&1))
7475
$(eval _ := \
7576
$(if $(filter FAILED differ:,$(_)), \
76-
($(if $(3), \
77-
$(eval $(3) := 1), \
77+
($(if $(4), \
78+
$(eval $(4) := 1), \
7879
$(error $(_)) \
7980
)), \
80-
(# SHA1 value match, do nothing) \
81+
(# SHA value match, do nothing) \
8182
))
8283
endef
8384

8485
# For each external target, the following must be defined in advance:
8586
# _DATA_URL : the hyperlink which points to archive.
87+
# _DATA_DEST : the extract destination of the file (only for compressed file)
8688
# _DATA : the file to be read by specific executable.
87-
# _DATA_SHA1 : the checksum of the content in _DATA
89+
# _DATA_SHA : the checksum of the content in _DATA
90+
# _DATA_SHA_ALGO : the checksum algorithm
8891

8992
# Doom
9093
# https://tipsmake.com/how-to-run-doom-on-raspberry-pi-without-emulator
9194
DOOM_DATA_URL = http://www.doomworld.com/3ddownloads/ports/shareware_doom_iwad.zip
92-
DOOM_DATA = $(OUT)/DOOM1.WAD
93-
DOOM_DATA_SHA1 = 5b2e249b9c5133ec987b3ea77596381dc0d6bc1d
95+
DOOM_DATA_DEST = $(OUT)
96+
DOOM_DATA = $(DOOM_DATA_DEST)/DOOM1.WAD
97+
DOOM_DATA_SHA = 5b2e249b9c5133ec987b3ea77596381dc0d6bc1d
98+
DOOM_DATA_SHA_ALGO = $(SHA1SUM)
9499

95100
# Quake
96101
QUAKE_DATA_URL = https://www.libsdl.org/projects/quake/data/quakesw-1.0.6.zip
97-
QUAKE_DATA = $(OUT)/id1/pak0.pak
98-
QUAKE_DATA_SHA1 = 36b42dc7b6313fd9cabc0be8b9e9864840929735
102+
QUAKE_DATA_DEST = $(OUT)
103+
QUAKE_DATA = $(QUAKE_DATA_DEST)/id1/pak0.pak
104+
QUAKE_DATA_SHA = 36b42dc7b6313fd9cabc0be8b9e9864840929735
105+
QUAKE_DATA_SHA_ALGO = $(SHA1SUM)
99106

100107
# Timidity software synthesizer configuration for SDL2_mixer
101108
TIMIDITY_DATA_URL = http://www.libsdl.org/projects/mixer/timidity/timidity.tar.gz
102-
TIMIDITY_DATA = $(OUT)/timidity
103-
TIMIDITY_DATA_SHA1 = cf6217a5d824b717ec4a07e15e6c129a4657ca25
109+
TIMIDITY_DATA_DEST = $(OUT)
110+
TIMIDITY_DATA = $(TIMIDITY_DATA_DEST)/timidity
111+
TIMIDITY_DATA_SHA = cf6217a5d824b717ec4a07e15e6c129a4657ca25
112+
TIMIDITY_DATA_SHA_ALGO = $(SHA1SUM)
104113

105114
# Buildroot
106115
BUILDROOT_VERSION = 2024.11
107116
BUILDROOT_DATA = /tmp/buildroot
108117
BUILDROOT_DATA_URL = git clone https://github.com/buildroot/buildroot $(BUILDROOT_DATA) -b $(BUILDROOT_VERSION) --depth=1
109-
BUILDROOT_DATA_SHA1 = e678801287ab68369af1731dcf1acc39e4adccff
118+
BUILDROOT_DATA_SHA = e678801287ab68369af1731dcf1acc39e4adccff
119+
BUILDROOT_DATA_SHA_ALGO = $(SHA1SUM)
110120

111121
# Linux kernel
112-
LINUX_VERSION = linux-6.1.y
113-
LINUX_DATA = /tmp/linux
114-
LINUX_DATA_URL = git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git $(LINUX_DATA) -b $(LINUX_VERSION) --depth=1
115-
LINUX_DATA_SHA1 = 43b6b7fbf9231656d7b65f118445996172250fc0
122+
LINUX_VERSION = 6
123+
LINUX_PATCHLEVEL = 1
124+
LINUX_CDN_BASE_URL = https://cdn.kernel.org/pub/linux/kernel
125+
LINUX_CDN_VERSION_URL = $(LINUX_CDN_BASE_URL)/v$(LINUX_VERSION).x
126+
$(shell mkdir -p /tmp/linux)
127+
LINUX_DATA_DEST = /tmp/linux
128+
LINUX_DATA = $(shell wget -q -O- $(LINUX_CDN_VERSION_URL) | \
129+
grep -o 'linux-$(LINUX_VERSION).$(LINUX_PATCHLEVEL).[0-9]\+\.tar.gz' | \
130+
sort -V | tail -n 1)
131+
LINUX_DATA_URL = $(LINUX_CDN_VERSION_URL)/$(LINUX_DATA)
132+
LINUX_DATA_SHA = $(shell wget -q -O- $(LINUX_CDN_VERSION_URL)/sha256sums.asc | \
133+
grep $(LINUX_DATA) | awk '{print $$1}')
134+
LINUX_DATA_SHA_ALGO = $(SHA256SUM)
116135

117136
define download-extract-verify
118137
$($(T)_DATA):
119138
$(Q)$$(call prologue,$$@)
120139
$(Q)$$(call download,$(strip $($(T)_DATA_URL)))
121-
$(Q)$$(call extract,$(OUT),$(notdir $($(T)_DATA_URL)))
122-
$(Q)$$(call verify,$($(T)_DATA_SHA1),$($(T)_DATA))
123-
$(Q)$$(call epilogue,$(notdir $($(T)_DATA_URL)),$(SHA1_FILE1),$(SHA1_FILE2))
140+
$(Q)$$(call extract,$($(T)_DATA_DEST),$(notdir $($(T)_DATA_URL)))
141+
$(Q)$$(call verify,$($(T)_DATA_SHA_ALGO),$($(T)_DATA_SHA),$($(T)_DATA))
142+
$(Q)$$(call epilogue,$(notdir $($(T)_DATA_URL)),$(SHA_FILE1),$(SHA_FILE2))
124143
endef
125144

126145
EXTERNAL_DATA = DOOM QUAKE TIMIDITY BUILDROOT LINUX

0 commit comments

Comments
 (0)