Skip to content

Commit c34978c

Browse files
committed
Refined cvm.mk to do less rebuild and verify downloaded jdk8u artifacts
1 parent a9fbc15 commit c34978c

File tree

2 files changed

+69
-36
lines changed

2 files changed

+69
-36
lines changed

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,8 @@ NashornProfile.txt
2525
**/core.[0-9]*
2626
*.rej
2727
*.orig
28+
/.bootjdks/
29+
/.jtreg/
30+
/cvm/build/
31+
/cvm/jdk8u/
32+
/output/

cvm.mk

Lines changed: 64 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -79,33 +79,63 @@ endef
7979
[[ -d $(OUTPUTDIR)/$(DISTRO_NAME) ]] || mkdir -p $(OUTPUTDIR)/$(DISTRO_NAME)
8080
[[ -d $(OUTPUTDIR)/$(DISTRO_JVM_PATCH_NAME) ]] || mkdir -p $(OUTPUTDIR)/$(DISTRO_JVM_PATCH_NAME)
8181

82-
# Setup bootstrap JDK from a given URL
83-
# $1 URL of JDK in tar.gz format
84-
# $2 directory of JDK
85-
define setup_boot_jdk
86-
$(eval DIR=$(shell dirname $(2)))
87-
[[ -d $(DIR) ]] || mkdir -p $(DIR)
88-
$(eval URL := $(1))
89-
$(eval TAR_FILE := $(shell basename $(URL)))
90-
rm -f $(TAR_FILE)
91-
wget -q $(URL) -O $(TAR_FILE)
92-
rm -fr $(2)
93-
tar xf $(TAR_FILE) -C .bootjdks
94-
rm -f $(TAR_FILE)
82+
# Download package from a given URL and extract to local directory
83+
# $1 URL of package in .tar.gz/.zip format
84+
# $2 local package file path to save
85+
# $3 expected MD5 checksum of the downloaded package
86+
# $4 directory to hold extracted content
87+
define setup_download_artifact
88+
$(eval URL=$(1))
89+
$(eval LPATH=$(2))
90+
$(eval MD5_EXP=$(3))
91+
$(eval DIR=$(4))
92+
{ \
93+
set -x; \
94+
rm -rf $(DIR) && mkdir -p $(DIR); \
95+
for i in `seq 4`; do \
96+
[[ $$i -gt 1 ]] && echo "Retrying to download $(URL)"; \
97+
[[ ! -f $(LPATH) ]] && wget -nc $(URL) -O $(LPATH); \
98+
MD5SUM=`md5sum $(LPATH) | awk '{print $$1}'`; \
99+
if [[ $$MD5SUM = $(MD5_EXP) ]]; then \
100+
break; \
101+
else \
102+
echo "md5 checksum of downloaded $(LPATH) is wrong! expected=$(MD5_EXP), actual=$$MD5SUM"; \
103+
rm -f $(LPATH); \
104+
continue; \
105+
fi; \
106+
done; \
107+
[[ -f $(LPATH) ]] || (echo "Failed to download $(URL)" && exit 127); \
108+
if [[ $(LPATH) == *.tar.gz ]]; then tar -xzf $(LPATH) -C $(DIR) --strip-components=1; \
109+
elif [[ $(LPATH) == *.zip ]]; then \
110+
cd $(DIR) && unzip $(LPATH) && \
111+
cd `zipinfo -1 $(LPATH) | grep '/$$' | sort | head -n 1` && mv * $(DIR)/; \
112+
fi; \
113+
}
95114
endef
96115

97116
# '/' is indispensable otherwise target name will be treated as a file
98117
$(BOOTJDK25)/:
99-
$(call setup_boot_jdk,https://download.java.net/java/GA/jdk24.0.1/24a58e0e276943138bf3e963e6291ac2/9/GPL/openjdk-24.0.1_linux-x64_bin.tar.gz,$@)
118+
$(call setup_download_artifact, \
119+
"https://download.java.net/java/GA/jdk24.0.1/24a58e0e276943138bf3e963e6291ac2/9/GPL/openjdk-24.0.1_linux-x64_bin.tar.gz", \
120+
"$(WORKSPACE)/.bootjdks/bootjdk-24.0.1.tar.gz", \
121+
"56319f30ef59f96ddd7c7c4df330f114", \
122+
$@)
100123
#cp -f $(WORKSPACE)/bin/linux-x86_64/hsdis-amd64.so $$(dirname $$(find $@ -name libjava.so))
101124

102125
$(BOOTJDK8)/:
103-
$(call setup_boot_jdk,https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u372-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u372b07.tar.gz,$@)
126+
$(call setup_download_artifact, \
127+
"https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u372-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u372b07.tar.gz", \
128+
"$(WORKSPACE)/.bootjdks/bootjdk-8u372.tar.gz", \
129+
"524d4fac3d2cc091265c35c829a36ea0", \
130+
$@)
104131
#cp -f $(WORKSPACE)/bin/linux-x86_64/hsdis-amd64.so $$(dirname $$(find $@ -name libjava.so))
105132

106-
jdk8u/jdk/src:
107-
wget -nc https://github.com/openjdk/jdk8u/archive/refs/tags/jdk8u452-ga.tar.gz
108-
[[ -d $(JDK8_SRCROOT) ]] || (mkdir -p $(JDK8_SRCROOT) && tar -xzf jdk8u452-ga.tar.gz -C $(JDK8_SRCROOT) --strip-components=1)
133+
$(JDK8_SRCROOT)/jdk:
134+
$(call setup_download_artifact, \
135+
"https://github.com/openjdk/jdk8u/archive/refs/tags/jdk8u452-ga.tar.gz", \
136+
"$(CVM8_SRCROOT)/jdk8u-src.tar.gz", \
137+
"680255696b3a541effb8d8afd2e75e5b", \
138+
$(JDK8_SRCROOT))
109139

110140
cvm8: jdk8vm25
111141

@@ -131,20 +161,21 @@ jvm-patch: cvm8default25
131161
rm -fr $(BUILDDIR)/jdk8
132162

133163
clean:
134-
rm -fr $(BUILDDIR)
164+
rm -fr $(BUILDDIR) $(OUTPUTDIR)
135165
cd $(JDK8_SRCROOT) && make clean
136166
cd $(JDK25_SRCROOT) && make clean
137167

138168
full-clean:
139-
rm -fr $(BUILDDIR) $(JDK25_SRCROOT)/build $(JDK8_SRCROOT)/build
169+
rm -fr $(BUILDDIR) $(JDK25_SRCROOT)/build $(JDK8_SRCROOT)/build $(OUTPUTDIR)
140170

141-
jdk8vm25: -clean-jdk8vm25 -bootstrap build_jdk8u build_jdk25u altkernel
171+
jdk8vm25: build_jdk8u build_jdk25u altkernel
142172
@echo
143173
@echo "###### Composing CVM8 ######"
144174
$(eval SRC_BUILDDIR_25=$(shell find $(JDK25_SRCROOT)/build -type f -name build.log | grep $(MODE) | xargs dirname))
145175
$(eval SRC_BUILDDIR_8=$(shell find $(JDK8_SRCROOT)/build -type f -name build.log | grep $(MODE) | xargs dirname))
146176
$(eval JDK8_IMAGEDIR=$(shell find $(JDK8_SRCROOT)/build -type d -name j2sdk-image | grep $(MODE)))
147177
{ \
178+
set -x; \
148179
cp -Lfr $(JDK8_IMAGEDIR) $(CVM8DIR) && \
149180
mkdir -p $(CVM8_LIBDIR)/server25 && \
150181
cp -f $(BUILDDIR)/rt8.jar $(CVM8_JARDIR)/ && \
@@ -157,8 +188,8 @@ jdk8vm25: -clean-jdk8vm25 -bootstrap build_jdk8u build_jdk25u altkernel
157188
cp -f $(SRC_BUILDDIR_25)/jdk/lib/libjimage.debuginfo $(CVM8_LIBDIR)/libjimage25.debuginfo && \
158189
cp -f $(SRC_BUILDDIR_25)/jdk/lib/libjava.debuginfo $(CVM8_LIBDIR)/libjava25.debuginfo && \
159190
cp -f $(SRC_BUILDDIR_25)/jdk/lib/libjdwp.debuginfo $(CVM8_LIBDIR)/libjdwp25.debuginfo && \
160-
cp -f $(SRC_BUILDDIR_25)/jdk/lib/server/libjvm.debuginfo $(CVM8_LIBDIR)/server25/libjvm.debuginfo && \
161-
[[ "x$$(grep server25 $(CVM8_LIBDIR)/jvm.cfg)" = "x" ]] && echo "-server25 KNOWN" >> $(CVM8_LIBDIR)/jvm.cfg && \
191+
cp -f $(SRC_BUILDDIR_25)/jdk/lib/server/libjvm.debuginfo $(CVM8_LIBDIR)/server25/libjvm.debuginfo; \
192+
[[ "x$$(grep server25 $(CVM8_LIBDIR)/jvm.cfg)" = "x" ]] && echo "-server25 KNOWN" >> $(CVM8_LIBDIR)/jvm.cfg; \
162193
cp -rf $(CVM8DIR)/* $(OUTPUTDIR)/$(DISTRO_NAME)/; \
163194
}
164195
ifeq ($(MODE), release)
@@ -170,7 +201,7 @@ endif
170201
@echo "###### Done ######"
171202
@echo
172203

173-
build_jdk8u: -bootstrap jdk8u/jdk/src
204+
build_jdk8u: -bootstrap $(JDK8_SRCROOT)/jdk
174205
{ cd $(JDK8_SRCROOT); \
175206
if [[ "x$$(find ./build -type f -name config.log | grep $(MODE))" = "x" ]]; then \
176207
bash configure --with-debug-level=$(MODE) \
@@ -183,7 +214,7 @@ build_jdk8u: -bootstrap jdk8u/jdk/src
183214
--with-vendor-vm-bug-url="https://github.com/bytedance/CompoundVM/issues" \
184215
;\
185216
fi; \
186-
make $(JDK_MAKE_OPTS) CONF=linux-x86_64-normal-server-$(MODE) images; \
217+
make $(JDK_MAKE_OPTS) CONF=$(MODE) images; \
187218
[[ $$? -eq 0 ]] || exit 127; \
188219
}
189220

@@ -205,7 +236,7 @@ build_jdk25u: -bootstrap
205236
; \
206237
fi; \
207238
}
208-
make $(JDK_MAKE_OPTS) CONF=linux-x86_64-server-$(MODE) hotspot jdk.jdwp.agent
239+
make $(JDK_MAKE_OPTS) CONF=$(MODE) hotspot jdk.jdwp.agent
209240

210241
################ alternative kernel classes ########
211242
# here we copy the JDK25 kernel classes to separate diretory,
@@ -232,18 +263,15 @@ MY_JT_HOME := $(WORKSPACE)/.jtreg
232263
JTREG := $(MY_JT_HOME)/bin/jtreg
233264

234265
$(JTREG):
235-
$(eval JTREG_URL := https://builds.shipilev.net/jtreg/jtreg5.1-b01.zip)
236-
$(eval JTREG_ZIP := $(shell basename $(JTREG_URL)))
237-
@echo "Installing jtreg5.1 to $(MY_JT_HOME)"
238-
{ \
239-
rm -f $(JTREG_ZIP);\
240-
wget -q $(JTREG_URL); \
241-
unzip -o -q $(JTREG_ZIP) && mv jtreg .jtreg && rm -fr $(JTREG_ZIP); \
242-
}
266+
$(call setup_download_artifact, \
267+
"https://builds.shipilev.net/jtreg/jtreg5.1-b01.zip", \
268+
"$(MY_JT_HOME)/jtreg.zip", \
269+
"346baca6ca2d49aa5225d5a8c0594ddc", \
270+
"$(MY_JT_HOME)")
243271

244272
# minimize the effort to download source code
245273
ifeq ($(SKIP_BUILD), true)
246-
-setup_jtreg8: -init-dirs $(JTREG) jdk8u/jdk/src
274+
-setup_jtreg8: -init-dirs $(JTREG) $(JDK8_SRCROOT)/jdk
247275
else
248276
-setup_jtreg8: $(JTREG) jdk8vm25
249277
endif
@@ -275,7 +303,7 @@ define overlay_single
275303
$(eval FILEPATH=$(2))
276304
$(eval DESTDIR=$(3))
277305
@{ test -e $(DESTDIR)/$(FILEPATH)_origin || cp -f $(DESTDIR)/$(FILEPATH) $(DESTDIR)/$(FILEPATH)_origin; }
278-
@{ cd cvm/overlay/$(REPO) && cp -f --parents $(FILEPATH) $(DESTDIR)/; }
306+
@{ cd $(CVM8_SRCROOT)/overlay/$(REPO) && cp -f --parents $(FILEPATH) $(DESTDIR)/; }
279307
endef
280308

281309
JT_OPTS_EXCLUDE=-exclude:$(JDK8_SRCROOT)/jdk/test/ProblemList.txt -exclude:$(CVM8_SRCROOT)/conf/jtreg_jdk8_excludes.list

0 commit comments

Comments
 (0)