From 0f53761bed746e2217e4d088d80b6cc5ddd75fd7 Mon Sep 17 00:00:00 2001 From: QiLiang Date: Tue, 5 Jul 2016 22:35:05 +0800 Subject: make_pip_repo auto download package dependency JIRA: COMPASS-427 Change-Id: If62736cc9ee7ad3d44be6b688cc52d84cf94cd5d Signed-off-by: QiLiang --- build/make_repo.sh | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 80 insertions(+), 5 deletions(-) (limited to 'build/make_repo.sh') diff --git a/build/make_repo.sh b/build/make_repo.sh index c9c70d4c..55ffbf1c 100755 --- a/build/make_repo.sh +++ b/build/make_repo.sh @@ -167,18 +167,93 @@ function make_repo() sudo docker rmi -f ${image_id} } +function _try_fetch_dependency() +{ + local dir_name='' + if [ -f $1 ];then + case $1 in + *.tar.bz2) + tar xjf $1 + dir_name="$(basename $1 .tar.bz2)" + ;; + *.tar.gz) + tar xzf $1 + dir_name="$(basename $1 .tar.gz)" + ;; + *.bz2) + bunzip2 $1 + dir_name="$(basename $1 .bz2)" + ;; + *.rar) + unrar e $1 + dir_name="$(basename $1 .rar)" + ;; + *.gz) + gunzip $1 + dir_name="$(basename $1 .gz)" + ;; + *.tar) + tar xf $1 + dir_name="$(basename $1 .tar)" + ;; + *.tbz2) + tar xjf $1 + dir_name="$(basename $1 .tbz2)" + ;; + *.tgz) + tar xzf $1 + dir_name="$(basename $1 .tgz)" + ;; + *.zip) + gunzip $1 + dir_name="$(basename $1 .zip)" + ;; + *) + echo "'$1' cannot be extract()" + return -1 + ;; + esac + else + echo "'$1' is not a valid file" + return -1 + fi + + if [ ! -f ${dir_name}/requirements.txt ]; then + echo "${dir_name}/requirements.txt does not exist" + return -1 + fi + + pip install --download=$2 -r ${dir_name}/requirements.txt + + rm -rf $dir_name +} + +function try_fetch_dependency() +{ + cd $3 + _try_fetch_dependency $1/$2 $1 + cd - +} + function make_pip_repo() { source $WORK_PATH/build/build.conf + local pip_path=$WORK_PATH/work/repo/pip + local pip_tmp_path=$WORK_PATH/work/repo/pip_tmp - if [[ $PIP_CONF == "" ]]; then - return - fi + for i in $SPECIAL_PIP_PACKAGE; do + curl --connect-timeout 10 -o $pip_path/`basename $i` $i + done - for i in $PIP_CONF; do - curl --connect-timeout 10 -o $WORK_PATH/work/repo/pip/`basename $i` $i + mkdir -p $pip_tmp_path + + for i in $PIP_PACKAGE; do + curl --connect-timeout 10 -o $pip_path/$(basename $i) $i + try_fetch_dependency $pip_path $(basename $i) $pip_tmp_path done + rm -rf $pip_tmp_path + cd $WORK_PATH/work/repo; tar -zcvf pip.tar.gz ./pip; cd - } -- cgit 1.2.3-korg