Add parameter allows users to add their own package or scripts of making package... 65/1565/4
authorbaigk <baiguoku@huawei.com>
Tue, 15 Sep 2015 08:01:00 +0000 (16:01 +0800)
committerbaigk <baiguoku@huawei.com>
Thu, 17 Sep 2015 02:59:21 +0000 (10:59 +0800)
JIRA: COMPASS-55

Change-Id: I2ef6539ebf73fe57fb2a5dcb01ff5d8c4727dc1f
Signed-off-by: baigk <baiguoku@huawei.com>
build/gen_ins_pkg_script.py
build/make_repo.sh
build/os/centos/rhel6/compass/Dockerfile.tmpl
build/os/centos/rhel7/juno/Dockerfile.tmpl
build/os/ubuntu/trusty/juno/Dockerfile.tmpl
build/os/ubuntu/trusty/kilo/Dockerfile.tmpl
build/templates/RedHat_juno.tmpl

index 0f756d0..c3c55cf 100644 (file)
@@ -34,7 +34,8 @@ def get_packages_name_list(file_list, special_packages):
 
     return package_name_list
 
-def generate_download_script(root, arch, tmpl, docker_tmpl, default_packages, special_packages, special_packages_dir):
+def generate_download_script(root="", arch="", tmpl="", docker_tmpl="", default_packages="",
+                             special_packages="", special_packages_script_dir="", special_packages_dir=""):
     package_name_list = get_packages_name_list(get_file_list(root, arch), special_packages) if root else []
 
     tmpl = Template(file=tmpl, searchList={'packages':package_name_list, 'default_packages':default_packages})
@@ -44,12 +45,15 @@ def generate_download_script(root, arch, tmpl, docker_tmpl, default_packages, sp
     make_script = []
     for i in special_packages:
         name = 'make_' + i + '.sh'
-        if os.path.exists(os.path.join('.', arch, name)):
+        if os.path.exists(os.path.join(special_packages_script_dir, name)):
             make_script.append(name)
 
-    searchList = {'dir':os.path.join('.', arch), 'scripts':make_script}
+    searchList = {'scripts':make_script}
     if os.path.exists(special_packages_dir):
-        special_packages_names = [i for i in os.listdir(special_packages_dir) if os.path.isfile(i)]
+        special_packages_names=[]
+        for i in os.listdir(special_packages_dir):
+            if os.path.isfile(os.path.join(special_packages_dir, i)):
+                special_packages_names.append(i)
         searchList.update({'spcial_packages':special_packages_names})
 
     Dockerfile=os.path.basename(docker_tmpl).split('.')[0]
@@ -60,5 +64,5 @@ def generate_download_script(root, arch, tmpl, docker_tmpl, default_packages, sp
 if __name__=='__main__':
     # generate_download_script('ansible', 'Debian', 'Debian.tmpl')
     generate_download_script(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4],
-                             sys.argv[5].split(' '), sys.argv[6].split(' '), sys.argv[7])
+                             sys.argv[5].split(' '), sys.argv[6].split(' '), sys.argv[7], sys.argv[8])
 
index 8ef3c44..6d5faab 100755 (executable)
@@ -32,7 +32,11 @@ function make_repo()
     rm -f ${WORK_PATH}/work/repo/install_packages.sh
     rm -f ${WORK_PATH}/work/repo/Dockerfile
 
-    TEMP=`getopt -o h -l os-ver:,package-tag:,tmpl:,default-package:,special-package:,ansible-dir: -n 'make_repo.sh' -- "$@"`
+    option=`echo "os-ver:,package-tag:,tmpl:,default-package:, \
+            special-package:,special-package-script-dir:, \
+            special-package-dir:,ansible-dir:,special-package-dir" | sed 's/ //g'`
+
+    TEMP=`getopt -o h -l $option -n 'make_repo.sh' -- "$@"`
 
     if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
 
@@ -43,6 +47,7 @@ function make_repo()
     tmpl=""
     default_package=""
     special_package=""
+    special_package_script_dir=""
     special_package_dir=""
     ansible_dir=""
     while :; do
@@ -52,19 +57,20 @@ function make_repo()
             --tmpl) tmpl=$2; shift 2;;
             --default-package) default_package=$2; shift 2;;
             --special-package) special_package=$2; shift 2;;
+            --special-package-script-dir) special_package_script_dir=$2; shift 2;;
             --special-package-dir) special_package_dir=$2; shift 2;;
             --ansible-dir) ansible_dir=$2; shift 2;;
             --) shift; break;;
-            *) echo "Internal error!" ; exit 1 ;;
+            *) echo "Internal error! $1" ; exit 1 ;;
         esac
     done
 
-    if [[ ! -z ${package_tag} && ${package_tag} == "pip" ]]; then
+    if [[ -n ${package_tag} && ${package_tag} == "pip" ]]; then
         make_pip_repo
         return
     fi
 
-    if [[ -z ${os_ver} || -z ${tmpl} || -z ${package_tag} ]]; then
+    if [[ -z ${os_ver} || -z ${package_tag} ]]; then
         echo "parameter is wrong"
         exit 1
     fi
@@ -79,25 +85,50 @@ function make_repo()
         os_name=centos
     fi
 
+    if [[ -z $arch ]]; then
+        echo "unsupported ${os_ver} os"
+        exit 1
+    fi
+
     dockerfile=Dockerfile
     docker_tmpl=${BUILD_PATH}/os/${os_name}/${os_ver}/${package_tag}/${dockerfile}".tmpl"
     docker_tag="${os_ver}/${package_tag}"
 
-    python ${BUILD_PATH}/gen_ins_pkg_script.py "${ansible_dir}" "${arch}" "${BUILD_PATH}/templates/${tmpl}" \
-               "${docker_tmpl}" "${default_package}" "${special_package}" "${special_package_dir}"
+    if [[ -z ${tmpl} ]]; then
+        tmpl=${BUILD_PATH}/templates/${arch}_${package_tag}.tmpl
+    fi
+
+    python ${BUILD_PATH}/gen_ins_pkg_script.py "${ansible_dir}" "${arch}" "${tmpl}" \
+          "${docker_tmpl}" "${default_package}" "${special_package}" \
+          "${WORK_PATH}/work/repo/$arch/script/" \
+          "${WORK_PATH}/work/repo/$arch/packages/"
+
+    rm -rf ${WORK_PATH}/work/repo/$arch
+    mkdir -p ${WORK_PATH}/work/repo/$arch/{script,packages}
+
+    # copy default package script to wokr dir
+    if [[ -d ${WORK_PATH}/build/arch/$arch ]]; then
+        cp -rf ${WORK_PATH}/build/arch/$arch/* ${WORK_PATH}/work/repo/$arch/script/
+    fi
+
+    # copy make package script to work dir
+    if [[ -n $special_package_script_dir && -d $special_package_script_dir ]]; then
+        cp -rf $special_package_script_dir/*  ${WORK_PATH}/work/repo/$arch/script/
+    fi
 
-    # copy make package script to work/repo dir
-    if [[ -n $arch && -d ${WORK_PATH}/build/templates/$arch ]]; then
-        rm -rf ${WORK_PATH}/work/repo/$arch
-        cp -rf ${WORK_PATH}/build/templates/$arch ${WORK_PATH}/work/repo/
+    # copy special package to work dir
+    if [[ -n $special_package_dir && -d $special_package_dir ]]; then
+        cp -rf $special_package_dir/*  ${WORK_PATH}/work/repo/$arch/packages/
     fi
 
+    # copy docker file to work dir
     if [[ -n $os_ver && -d ${WORK_PATH}/build/os/$os_name/$os_ver ]]; then
         rm -rf ${WORK_PATH}/work/repo/$os_ver
         cp -rf ${WORK_PATH}/build/os/$os_name/$os_ver ${WORK_PATH}/work/repo
     fi
 
-    if [[ -f ${WORK_PATH}/build/os/$os_name/comps.xml ]]; then
+    # copy centos comps.xml to work dir
+    if [[ $arch == RedHat && -f ${WORK_PATH}/build/os/$os_name/comps.xml ]]; then
         cp -rf ${WORK_PATH}/build/os/$os_name/comps.xml ${WORK_PATH}/work/repo
     fi
 
@@ -127,29 +158,25 @@ function make_pip_repo()
 
 function make_all_repo()
 {
-    make_pip_repo
+    make_repo --package-tag pip
 
     make_repo --os-ver rhel6 --package-tag compass \
-              --tmpl compass_core.tmpl \
+              --tmpl "${WORK_PATH}/build/templates/compass_core.tmpl" \
               --default-package "epel-release python-yaml python-jinja2 python-paramiko"
 
     make_repo --os-ver trusty --package-tag juno \
               --ansible-dir $WORK_PATH/deploy/adapters/ansible \
-              --tmpl Debian_juno.tmpl \
               --default-package "openssh-server" \
-              --special-package "openvswitch-datapath-dkms openvswitch-switch"
+              --special-package "openvswitch-datapath-dkms openvswitch-switch" \
 
     make_repo --os-ver trusty --package-tag kilo \
               --ansible-dir $WORK_PATH/deploy/adapters/ansible \
-              --tmpl Debian_kilo.tmpl \
               --default-package "openssh-server" \
-              --special-package "openvswitch-datapath-dkms openvswitch-switch"
+              --special-package "openvswitch-datapath-dkms openvswitch-switch" \
 
     make_repo --os-ver rhel7 --package-tag juno \
               --ansible-dir $WORK_PATH/deploy/adapters/ansible \
-              --tmpl RedHat_juno.tmpl \
-              --default-package "rsyslog strace net-tools wget vim openssh-server dracut-config-rescue dracut-network" \
-              --special-package ""
+              --default-package "rsyslog strace net-tools wget vim openssh-server dracut-config-rescue dracut-network"
 }
 
 function main()
index 6740dc4..29c0542 100644 (file)
@@ -11,12 +11,11 @@ RUN yum update -y
 RUN sed -i 's/keepcache=0/keepcache=1/g' /etc/yum.conf
 #set packages = $getVar('spcial_packages', [])
 #for package in $packages
-ADD $packages /var/cache/yum/x86_64/7/base/packages/
+ADD ./RedHat/packages/$package /var/cache/yum/x86_64/6/base/packages/
 #end for
 #set scripts = $getVar('scripts', [])
-#set dir = $getVar('dir', ".")
 #for script in $scripts
-ADD $dir/$script /tmp/chigang/$script
+ADD ./RedHat/script/$script /tmp/chigang/$script
 RUN chmod +x /tmp/chigang/$script
 RUN /tmp/chigang/$script
 #end for
index df5f41b..d0d45ae 100644 (file)
@@ -8,12 +8,11 @@ MAINTAINER Chigang(Justin) <chigang@huawei.com>
 RUN sed -i 's/keepcache=0/keepcache=1/g' /etc/yum.conf
 #set packages = $getVar('spcial_packages', [])
 #for package in $packages
-ADD $packages /var/cache/yum/x86_64/7/base/packages/
+ADD ./RedHat/packages/$package /var/cache/yum/x86_64/7/base/packages/
 #end for
 #set scripts = $getVar('scripts', [])
-#set dir = $getVar('dir', ".")
 #for script in $scripts
-ADD $dir/$script /tmp/chigang/$script
+ADD ./RedHat/script/$script /tmp/chigang/$script
 RUN chmod +x /tmp/chigang/$script
 RUN /tmp/chigang/$script
 #end for
index 944fb15..d723b6e 100644 (file)
@@ -9,12 +9,11 @@ RUN sed -i 's/archive.ubuntu.com/mirrors.163.com/g' /etc/apt/sources.list
 RUN rm -f /etc/apt/apt.conf.d/docker-clean
 #set packages = $getVar('spcial_packages', [])
 #for package in $packages
-ADD $packages /var/cache/apt/archives/
+ADD ./Debian/packages/$package /var/cache/apt/archives/
 #end for
 #set scripts = $getVar('scripts', [])
-#set dir = $getVar('dir', ".")
 #for script in $scripts
-ADD $dir/$script /tmp/chigang/$script
+ADD ./Debian/script/$script /tmp/chigang/$script
 RUN chmod +x /tmp/chigang/$script
 RUN /tmp/chigang/$script
 #end for
index 944fb15..d723b6e 100644 (file)
@@ -9,12 +9,11 @@ RUN sed -i 's/archive.ubuntu.com/mirrors.163.com/g' /etc/apt/sources.list
 RUN rm -f /etc/apt/apt.conf.d/docker-clean
 #set packages = $getVar('spcial_packages', [])
 #for package in $packages
-ADD $packages /var/cache/apt/archives/
+ADD ./Debian/packages/$package /var/cache/apt/archives/
 #end for
 #set scripts = $getVar('scripts', [])
-#set dir = $getVar('dir', ".")
 #for script in $scripts
-ADD $dir/$script /tmp/chigang/$script
+ADD ./Debian/script/$script /tmp/chigang/$script
 RUN chmod +x /tmp/chigang/$script
 RUN /tmp/chigang/$script
 #end for
index 1f6873b..9741b86 100644 (file)
@@ -7,7 +7,7 @@ wget -O /etc/yum.repos.d/CentOS7-Base-163.repo  http://mirrors.163.com/.help/Cen
 yum remove wget iptables-services -y
 rm -f /etc/yum.repos.d/CentOS-*.repo
 yum repolist
-yum cleanall
+yum clean all
 # add openstack juno repo
 yum install yum-plugin-priorities -y
 yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm -y