@@ -4,10 +4,10 @@ COMPRESSED_IS_DIR :=
4
4
EXTRACTOR :=
5
5
VERIFIER :=
6
6
7
- # temporarily files to store correct SHA1 value and computed SHA1 value
7
+ # temporarily files to store correct SHA value and computed SHA value
8
8
# 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))
11
11
12
12
# $(1): compressed source
13
13
define prologue
@@ -42,85 +42,104 @@ define extract
42
42
($(eval _ := \
43
43
$(if $(COMPRESSED_IS_ZIP ) , \
44
44
($(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 ) ) ) \
46
46
) ) \
47
47
$(eval _ := $(shell $(EXTRACTOR ) ) ) )
48
48
) \
49
49
)
50
50
endef
51
51
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
55
56
#
56
57
# 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
58
59
# 2. for directory, cmp command outputs keyword "differ" for indicating an unmatch
59
60
define verify
60
- $(eval COMPRESSED_IS_DIR := $(if $(wildcard $(2 ) /* ) ,1,0) )
61
+ $(eval COMPRESSED_IS_DIR := $(if $(wildcard $(3 ) /* ) ,1,0) )
61
62
$(eval _ := \
62
63
$(if $(filter 1,$(COMPRESSED_IS_DIR ) ) , \
63
64
($(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 \
66
67
| sort -z \
67
- | xargs -0 $(SHA1SUM ) \
68
+ | xargs -0 $(1 ) \
68
69
| 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 -) ) \
72
73
))
73
74
$(eval _ := $(shell $(VERIFIER ) 2>&1) )
74
75
$(eval _ := \
75
76
$(if $(filter FAILED differ:,$(_ ) ) , \
76
- ($(if $(3 ) , \
77
- $(eval $(3 ) := 1) , \
77
+ ($(if $(4 ) , \
78
+ $(eval $(4 ) := 1) , \
78
79
$(error $(_ ) ) \
79
80
) ) , \
80
- (# SHA1 value match, do nothing) \
81
+ (# SHA value match, do nothing) \
81
82
))
82
83
endef
83
84
84
85
# For each external target, the following must be defined in advance:
85
86
# _DATA_URL : the hyperlink which points to archive.
87
+ # _DATA_DEST : the extract destination of the file (only for compressed file)
86
88
# _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
88
91
89
92
# Doom
90
93
# https://tipsmake.com/how-to-run-doom-on-raspberry-pi-without-emulator
91
94
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 )
94
99
95
100
# Quake
96
101
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 )
99
106
100
107
# Timidity software synthesizer configuration for SDL2_mixer
101
108
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 )
104
113
105
114
# Buildroot
106
115
BUILDROOT_VERSION = 2024.11
107
116
BUILDROOT_DATA = /tmp/buildroot
108
117
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 )
110
120
111
121
# 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 )
116
135
117
136
define download-extract-verify
118
137
$($(T ) _DATA) :
119
138
$(Q )$$(call prologue,$$@ )
120
139
$(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 ) )
124
143
endef
125
144
126
145
EXTERNAL_DATA = DOOM QUAKE TIMIDITY BUILDROOT LINUX
0 commit comments