[build]: allow to use http(s) proxy in the build (#1265)
* allow to use http(s) proxy in the build To enable this, use following command http_proxy=[your_proxy] https_proxy=[your_proxy] make
This commit is contained in:
parent
683562cf2f
commit
15d433d975
8
Makefile
8
Makefile
@ -35,10 +35,14 @@ SLAVE_IMAGE = sonic-slave-$(USER)
|
|||||||
DOCKER_RUN := docker run --rm=true --privileged \
|
DOCKER_RUN := docker run --rm=true --privileged \
|
||||||
-v $(PWD):/sonic \
|
-v $(PWD):/sonic \
|
||||||
-w /sonic \
|
-w /sonic \
|
||||||
|
-e "http_proxy=$(http_proxy)" \
|
||||||
|
-e "https_proxy=$(https_proxy)" \
|
||||||
-i$(if $(TERM),t,)
|
-i$(if $(TERM),t,)
|
||||||
|
|
||||||
DOCKER_BASE_BUILD = docker build --no-cache \
|
DOCKER_BASE_BUILD = docker build --no-cache \
|
||||||
-t $(SLAVE_BASE_IMAGE) \
|
-t $(SLAVE_BASE_IMAGE) \
|
||||||
|
--build-arg http_proxy=$(http_proxy) \
|
||||||
|
--build-arg https_proxy=$(https_proxy) \
|
||||||
sonic-slave && \
|
sonic-slave && \
|
||||||
docker tag $(SLAVE_BASE_IMAGE):latest $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
|
docker tag $(SLAVE_BASE_IMAGE):latest $(SLAVE_BASE_IMAGE):$(SLAVE_BASE_TAG)
|
||||||
|
|
||||||
@ -61,7 +65,9 @@ SONIC_BUILD_INSTRUCTION := make \
|
|||||||
ENABLE_SYNCD_RPC=$(ENABLE_SYNCD_RPC) \
|
ENABLE_SYNCD_RPC=$(ENABLE_SYNCD_RPC) \
|
||||||
PASSWORD=$(PASSWORD) \
|
PASSWORD=$(PASSWORD) \
|
||||||
USERNAME=$(USERNAME) \
|
USERNAME=$(USERNAME) \
|
||||||
SONIC_BUILD_JOBS=$(SONIC_BUILD_JOBS)
|
SONIC_BUILD_JOBS=$(SONIC_BUILD_JOBS) \
|
||||||
|
HTTP_PROXY=$(http_proxy) \
|
||||||
|
HTTPS_PROXY=$(https_proxy)
|
||||||
|
|
||||||
.PHONY: sonic-slave-build sonic-slave-bash init reset
|
.PHONY: sonic-slave-build sonic-slave-bash init reset
|
||||||
|
|
||||||
|
@ -44,8 +44,11 @@ To build SONiC installer image and docker images, run the following commands:
|
|||||||
|
|
||||||
make
|
make
|
||||||
|
|
||||||
**NOTE**: We recommend reserving 50G free space to build one platform.
|
**NOTE**:
|
||||||
|
|
||||||
|
- We recommend reserving 50G free space to build one platform.
|
||||||
|
- Use ```http_proxy=[your_proxy] https_proxy=[your_proxy] make``` to enable http(s) proxy in the build process.
|
||||||
|
|
||||||
The SONiC installer contains all docker images needed. SONiC uses one image for all devices of a same ASIC vendor. The supported ASIC vendors are:
|
The SONiC installer contains all docker images needed. SONiC uses one image for all devices of a same ASIC vendor. The supported ASIC vendors are:
|
||||||
|
|
||||||
- PLATFORM=broadcom
|
- PLATFORM=broadcom
|
||||||
|
@ -68,7 +68,7 @@ touch $FILESYSTEM_ROOT/$PLATFORM_DIR/firsttime
|
|||||||
|
|
||||||
## Build a basic Debian system by debootstrap
|
## Build a basic Debian system by debootstrap
|
||||||
echo '[INFO] Debootstrap...'
|
echo '[INFO] Debootstrap...'
|
||||||
sudo debootstrap --variant=minbase --arch amd64 jessie $FILESYSTEM_ROOT http://ftp.us.debian.org/debian
|
sudo http_proxy=$http_proxy debootstrap --variant=minbase --arch amd64 jessie $FILESYSTEM_ROOT http://ftp.us.debian.org/debian
|
||||||
|
|
||||||
## Config hostname and hosts, otherwise 'sudo ...' will complain 'sudo: unable to resolve host ...'
|
## Config hostname and hosts, otherwise 'sudo ...' will complain 'sudo: unable to resolve host ...'
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "echo '$HOSTNAME' > /etc/hostname"
|
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "echo '$HOSTNAME' > /etc/hostname"
|
||||||
@ -79,6 +79,9 @@ sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c "echo '127.0.0.1 localhos
|
|||||||
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c 'echo "proc /proc proc defaults 0 0" >> /etc/fstab'
|
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c 'echo "proc /proc proc defaults 0 0" >> /etc/fstab'
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c 'echo "sysfs /sys sysfs defaults 0 0" >> /etc/fstab'
|
sudo LANG=C chroot $FILESYSTEM_ROOT /bin/bash -c 'echo "sysfs /sys sysfs defaults 0 0" >> /etc/fstab'
|
||||||
|
|
||||||
|
## Setup proxy
|
||||||
|
[ -n "$http_proxy" ] && sudo /bin/bash -c "echo 'Acquire::http::Proxy \"$http_proxy\";' > $FILESYSTEM_ROOT/etc/apt/apt.conf.d/01proxy"
|
||||||
|
|
||||||
## Note: mounting is necessary to makedev and install linux image
|
## Note: mounting is necessary to makedev and install linux image
|
||||||
echo '[INFO] Mount all'
|
echo '[INFO] Mount all'
|
||||||
## Output all the mounted device for troubleshooting
|
## Output all the mounted device for troubleshooting
|
||||||
@ -290,8 +293,8 @@ set /files/etc/sysctl.conf/net.core.rmem_max 2097152
|
|||||||
" -r $FILESYSTEM_ROOT
|
" -r $FILESYSTEM_ROOT
|
||||||
|
|
||||||
## docker-py is needed by Ansible docker module
|
## docker-py is needed by Ansible docker module
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT easy_install pip
|
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT easy_install pip
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT pip install 'docker-py==1.6.0'
|
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install 'docker-py==1.6.0'
|
||||||
## Note: keep pip installed for maintainance purpose
|
## Note: keep pip installed for maintainance purpose
|
||||||
|
|
||||||
## Create /var/run/redis folder for docker-database to mount
|
## Create /var/run/redis folder for docker-database to mount
|
||||||
@ -342,6 +345,9 @@ sudo LANG=C chroot $FILESYSTEM_ROOT apt-get autoclean
|
|||||||
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get clean
|
sudo LANG=C chroot $FILESYSTEM_ROOT apt-get clean
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT bash -c 'rm -rf /usr/share/doc/* /usr/share/locale/* /var/lib/apt/lists/* /tmp/*'
|
sudo LANG=C chroot $FILESYSTEM_ROOT bash -c 'rm -rf /usr/share/doc/* /usr/share/locale/* /var/lib/apt/lists/* /tmp/*'
|
||||||
|
|
||||||
|
## Clean up proxy
|
||||||
|
[ -n "$http_proxy" ] && sudo rm -f $FILESYSTEM_ROOT/etc/apt/apt.conf.d/01proxy
|
||||||
|
|
||||||
## Umount all
|
## Umount all
|
||||||
echo '[INFO] Umount all'
|
echo '[INFO] Umount all'
|
||||||
## Display all process details access /proc
|
## Display all process details access /proc
|
||||||
|
@ -64,17 +64,17 @@ sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get -y in
|
|||||||
# Install SONiC config engine Python package
|
# Install SONiC config engine Python package
|
||||||
CONFIG_ENGINE_WHEEL_NAME=$(basename {{config_engine_wheel_path}})
|
CONFIG_ENGINE_WHEEL_NAME=$(basename {{config_engine_wheel_path}})
|
||||||
sudo cp {{config_engine_wheel_path}} $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
|
sudo cp {{config_engine_wheel_path}} $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT pip install $CONFIG_ENGINE_WHEEL_NAME
|
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $CONFIG_ENGINE_WHEEL_NAME
|
||||||
sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
|
sudo rm -rf $FILESYSTEM_ROOT/$CONFIG_ENGINE_WHEEL_NAME
|
||||||
|
|
||||||
# Install Python client for Redis
|
# Install Python client for Redis
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT pip install redis
|
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install redis
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT pip install redis-dump-load
|
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install redis-dump-load
|
||||||
|
|
||||||
# Install SwSS SDK Python 2 package
|
# Install SwSS SDK Python 2 package
|
||||||
SWSSSDK_PY2_WHEEL_NAME=$(basename {{swsssdk_py2_wheel_path}})
|
SWSSSDK_PY2_WHEEL_NAME=$(basename {{swsssdk_py2_wheel_path}})
|
||||||
sudo cp {{swsssdk_py2_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME
|
sudo cp {{swsssdk_py2_wheel_path}} $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME
|
||||||
sudo LANG=C chroot $FILESYSTEM_ROOT pip install $SWSSSDK_PY2_WHEEL_NAME
|
sudo https_proxy=$https_proxy LANG=C chroot $FILESYSTEM_ROOT pip install $SWSSSDK_PY2_WHEEL_NAME
|
||||||
sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME
|
sudo rm -rf $FILESYSTEM_ROOT/$SWSSSDK_PY2_WHEEL_NAME
|
||||||
|
|
||||||
# Install SONiC Utilities (and its dependencies via 'apt-get -y install -f')
|
# Install SONiC Utilities (and its dependencies via 'apt-get -y install -f')
|
||||||
|
22
slave.mk
22
slave.mk
@ -100,6 +100,8 @@ $(info "SONIC_CONFIG_DEBUG" : "$(SONIC_CONFIG_DEBUG)")
|
|||||||
$(info "ROUTING_STACK" : "$(SONIC_ROUTING_STACK)")
|
$(info "ROUTING_STACK" : "$(SONIC_ROUTING_STACK)")
|
||||||
$(info "ENABLE_SYNCD_RPC" : "$(ENABLE_SYNCD_RPC)")
|
$(info "ENABLE_SYNCD_RPC" : "$(ENABLE_SYNCD_RPC)")
|
||||||
$(info "ENABLE_ORGANIZATION_EXTENSIONS" : "$(ENABLE_ORGANIZATION_EXTENSIONS)")
|
$(info "ENABLE_ORGANIZATION_EXTENSIONS" : "$(ENABLE_ORGANIZATION_EXTENSIONS)")
|
||||||
|
$(info "HTTP_PROXY" : "$(HTTP_PROXY)")
|
||||||
|
$(info "HTTPS_PROXY" : "$(HTTPS_PROXY)")
|
||||||
$(info )
|
$(info )
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
@ -329,7 +331,7 @@ $(SONIC_INSTALL_WHEELS) : $(PYTHON_WHEELS_PATH)/%-install : .platform $$(addsuff
|
|||||||
# put a lock here to avoid race conditions
|
# put a lock here to avoid race conditions
|
||||||
while true; do
|
while true; do
|
||||||
if mkdir $(PYTHON_WHEELS_PATH)/pip_lock &> /dev/null; then
|
if mkdir $(PYTHON_WHEELS_PATH)/pip_lock &> /dev/null; then
|
||||||
{ sudo pip$($*_PYTHON_VERSION) install $(PYTHON_WHEELS_PATH)/$* $(LOG) && rm -d $(PYTHON_WHEELS_PATH)/pip_lock && break; } || { rm -d $(PYTHON_WHEELS_PATH)/pip_lock && exit 1 ; }
|
{ sudo -E pip$($*_PYTHON_VERSION) install $(PYTHON_WHEELS_PATH)/$* $(LOG) && rm -d $(PYTHON_WHEELS_PATH)/pip_lock && break; } || { rm -d $(PYTHON_WHEELS_PATH)/pip_lock && exit 1 ; }
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
$(FOOTER)
|
$(FOOTER)
|
||||||
@ -340,12 +342,20 @@ $(SONIC_INSTALL_WHEELS) : $(PYTHON_WHEELS_PATH)/%-install : .platform $$(addsuff
|
|||||||
|
|
||||||
# start docker daemon
|
# start docker daemon
|
||||||
docker-start :
|
docker-start :
|
||||||
|
@sudo sed -i '/http_proxy/d' /etc/default/docker
|
||||||
|
@sudo bash -c "echo \"export http_proxy=$$http_proxy\" >> /etc/default/docker"
|
||||||
@sudo service docker status &> /dev/null || ( sudo service docker start &> /dev/null && sleep 1 )
|
@sudo service docker status &> /dev/null || ( sudo service docker start &> /dev/null && sleep 1 )
|
||||||
|
|
||||||
# targets for building simple docker images that do not depend on any debian packages
|
# targets for building simple docker images that do not depend on any debian packages
|
||||||
$(addprefix $(TARGET_PATH)/, $(SONIC_SIMPLE_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS)))
|
$(addprefix $(TARGET_PATH)/, $(SONIC_SIMPLE_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .platform docker-start $$(addsuffix -load,$$(addprefix $(TARGET_PATH)/,$$($$*.gz_LOAD_DOCKERS)))
|
||||||
$(HEADER)
|
$(HEADER)
|
||||||
docker build --squash --no-cache --build-arg user=$(USER) --build-arg uid=$(UID) --build-arg guid=$(GUID) -t $* $($*.gz_PATH) $(LOG)
|
docker build --squash --no-cache \
|
||||||
|
--build-arg http_proxy=$(HTTP_PROXY) \
|
||||||
|
--build-arg https_proxy=$(HTTPS_PROXY) \
|
||||||
|
--build-arg user=$(USER) \
|
||||||
|
--build-arg uid=$(UID) \
|
||||||
|
--build-arg guid=$(GUID) \
|
||||||
|
-t $* $($*.gz_PATH) $(LOG)
|
||||||
docker save $* | gzip -c > $@
|
docker save $* | gzip -c > $@
|
||||||
$(FOOTER)
|
$(FOOTER)
|
||||||
|
|
||||||
@ -365,7 +375,13 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_DOCKER_IMAGES)) : $(TARGET_PATH)/%.gz : .pl
|
|||||||
$(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_whls=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_PYTHON_WHEELS)))\n" | awk '!a[$$0]++'))
|
$(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_whls=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_PYTHON_WHEELS)))\n" | awk '!a[$$0]++'))
|
||||||
$(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_dbgs=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_DBG_PACKAGES)))\n" | awk '!a[$$0]++'))
|
$(eval export $(subst -,_,$(notdir $($*.gz_PATH)))_dbgs=$(shell printf "$(subst $(SPACE),\n,$(call expand,$($*.gz_DBG_PACKAGES)))\n" | awk '!a[$$0]++'))
|
||||||
j2 $($*.gz_PATH)/Dockerfile.j2 > $($*.gz_PATH)/Dockerfile
|
j2 $($*.gz_PATH)/Dockerfile.j2 > $($*.gz_PATH)/Dockerfile
|
||||||
docker build --squash --no-cache --build-arg user=$(USER) --build-arg uid=$(UID) --build-arg guid=$(GUID) -t $* $($*.gz_PATH) $(LOG)
|
docker build --squash --no-cache \
|
||||||
|
--build-arg http_proxy=$(HTTP_PROXY) \
|
||||||
|
--build-arg https_proxy=$(HTTPS_PROXY) \
|
||||||
|
--build-arg user=$(USER) \
|
||||||
|
--build-arg uid=$(UID) \
|
||||||
|
--build-arg guid=$(GUID) \
|
||||||
|
-t $* $($*.gz_PATH) $(LOG)
|
||||||
docker save $* | gzip -c > $@
|
docker save $* | gzip -c > $@
|
||||||
$(FOOTER)
|
$(FOOTER)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user