Browse Source

[LibOS] Adding multiple mirrors for downloading glibc

Signed-off-by: Chia-Che Tsai <chiache@tamu.edu>
Chia-Che Tsai 5 years ago
parent
commit
056ff6bfa9
2 changed files with 13 additions and 2 deletions
  1. 11 1
      LibOS/Makefile
  2. 2 1
      README.md

+ 11 - 1
LibOS/Makefile

@@ -4,6 +4,7 @@ export SYS
 export DEBUG
 export DEBUG
 
 
 GLIBC_SRC = glibc-2.19
 GLIBC_SRC = glibc-2.19
+GLIBC_CHECKSUM = 18ad6db70724699d264add80b1f813630d0141cf3a3558b4e1a7c15f6beac796
 SHIM_DIR = shim
 SHIM_DIR = shim
 BUILD_DIR = glibc-build
 BUILD_DIR = glibc-build
 GLIBC_TARGET = $(addprefix $(BUILD_DIR)/,libc.so.6 ld-linux-x86-64.so.2 libpthread.so.0 libm.so.6 libdl.so.2 libutil.so.1 crt1.o crti.o crtn.o liblibos.so.1 libnss_dns.so.2 libresolv.so.2)
 GLIBC_TARGET = $(addprefix $(BUILD_DIR)/,libc.so.6 ld-linux-x86-64.so.2 libpthread.so.0 libm.so.6 libdl.so.2 libutil.so.1 crt1.o crti.o crtn.o liblibos.so.1 libnss_dns.so.2 libresolv.so.2)
@@ -34,10 +35,19 @@ else
 	./buildglibc.py --quiet
 	./buildglibc.py --quiet
 endif
 endif
 
 
+GLIBC_MIRRORS ?= https://ftp.gnu.org/gnu/ \
+		https://mirrors.kernel.org/gnu/ \
+		https://mirrors.ocf.berkeley.edu/gnu/
+
 ifeq ($(shell git ls-files $(GLIBC_SRC)/configure),)
 ifeq ($(shell git ls-files $(GLIBC_SRC)/configure),)
 $(GLIBC_SRC)/configure: $(GLIBC_SRC).patch
 $(GLIBC_SRC)/configure: $(GLIBC_SRC).patch
 	[ -f $(GLIBC_SRC).tar.gz ] || \
 	[ -f $(GLIBC_SRC).tar.gz ] || \
-	wget http://ftp.gnu.org/gnu/glibc/$(GLIBC_SRC).tar.gz
+	for MIRROR in $(GLIBC_MIRRORS); do \
+		wget --timeout=10 $${MIRROR}glibc/$(GLIBC_SRC).tar.gz \
+		&& break; \
+	done
+	[ "`sha256sum $(GLIBC_SRC).tar.gz`" = "$(GLIBC_CHECKSUM)  $(GLIBC_SRC).tar.gz" ] || \
+		(echo "*** $(GLIBC_SRC).tar.gz has a wrong checksum ***"; exit 255)
 	tar -xzf $(GLIBC_SRC).tar.gz
 	tar -xzf $(GLIBC_SRC).tar.gz
 	cd $(GLIBC_SRC) && patch -p1 < ../$(GLIBC_SRC).patch
 	cd $(GLIBC_SRC) && patch -p1 < ../$(GLIBC_SRC).patch
 	cd $(GLIBC_SRC) && patch -p1 < ../glibc-fix-warning.patch
 	cd $(GLIBC_SRC) && patch -p1 < ../glibc-fix-warning.patch

+ 2 - 1
README.md

@@ -68,7 +68,8 @@ source tree:
 Each part of Graphene can be built separately in the subdirectories.
 Each part of Graphene can be built separately in the subdirectories.
 
 
 To build Graphene library OS with debug symbols, run "make DEBUG=1" instead of
 To build Graphene library OS with debug symbols, run "make DEBUG=1" instead of
-"make".
+"make". To specify custom mirrors for downloading the GLIBC source, use
+"GLIBC_MIRRORS=..." when running "make".
 
 
 ### 2.1. BUILD WITH KERNEL-LEVEL SANDBOXING (OPTIONAL)
 ### 2.1. BUILD WITH KERNEL-LEVEL SANDBOXING (OPTIONAL)