#!/usr/bin/env python # coding=utf-8 # description: Python script for open source software getting from open source central repository. # Copyright (c) 2020 Huawei Technologies Co.,Ltd. # date: 2020-06-17 #-------------------------------------------------------------------------# #usage: # # python3/python pull_open_source.py -m center # # -m: build mode include center|github # #-------------------------------------------------------------------------# exit(0) import os import subprocess import sys import argparse #--------------------------------------------------------# # open source software build operator # #--------------------------------------------------------# class OPOperator(): def __init__(self): self.local_dir = os.getcwd() #--------------------------------------------------------# # pull source code from center repository # #--------------------------------------------------------# def pull_from_center(self, folder_name, package_name, PDMCode): PDM_token = "ETMsDgAAAW3y4VWSABRBRVMvQ0JDL1BLQ1M1UGFkZGluZwCAABAAEHdISqnBxYC1s+zZWobYBFQAAAJwG6/R2TxjSoAFn5ZgE2+0G34uQQrJiT4u6yWZCy30oAr42jaJxSVzu9yTpqMYOWB3mwbp8Uq0bRHOKejexrkFeB1oLloo5BJNIVKmQjI71wSg7e9NJesnYn7XdT2wRAxrK1aFyftpUyY0wcW9QWe4oWnRVBFyzelqen67xFqsHOKz3kaau0UpkJpUxXSWhAi/wMTgTky4YeQfv03xSx7JKFuh4JiBrd+OKf78AHYhN69CxzQYWcesg25k10gqZZwHCTTHfni3C+7rgXo61Dc4lAuiuwpf+eD0LBgZuN8gD0+aI+0asx8ZGasNJms6Rblq1/Ai7mhnC130hKJr2yonP89D40zzjLpyiXu7Eil4Kmhu4KBdq/ATuXZVnPY83lJnMR0HLmlx+ZjL4+HsSR2ag5JzaNcIuYUqpIyfToUHjCVpxwTNTZj4pCPGmOB0mzVwrkUqG7M/WwA0D/z8XDzy6A7GcFlUzSIeARf3bFOsgqYEiV4GdnCMdo00A2Q2oBlsI1/zlbt7DIwpO6Rc5K9t3CfEYF++xx86Pwn8AwdFZ+5U9uFcQ9nsMxNwtzoRJnDrlVgGnhtRshbVtNvB7p8zSxpoayzVI6hYtPRDp4K6CqT32H5UNcsnAxne5J+BekOd9kfc4eltIpqyfIgWkIIwq1NUv/uKjqx4L3ZK45DZl/HG7wSZmI2dKGBBIxZKJc3QuNPVUg2Bs8TumCUH1glr+BJmYSNoqSLGH9jjHwn6gPXaXUjuhzO5Mtc07G59uSnCVnsBqcL4uWLh6vr2afkAKBapIa7QK0VYuOu4MZk3A7hIK+yFcnjtExTgC2ZnLOWMABRoMUXYuJBErTud8ZnarXdTImMliQ==" print ("[INFO] Download open source software from center") rm_cmd = 'cd %s/../%s; rm -rf %s' % (self.local_dir, folder_name, package_name) ret = self.exe_cmd(rm_cmd) self.error_handler(ret) print ("[INFO] start download new package: %s" % (package_name)) download_cmd = 'cd %s/../%s; curl -o "%s" -k -H "x-auth-token: "%s"" "https://svr.centralrepo.inhuawei.com/cmc-oss/v1/opensource/download?softVersionId="%s"&packages="%s"&fromPage=true"' % (self.local_dir, folder_name, package_name, PDM_token, PDMCode, package_name) ret = self.exe_cmd(download_cmd) self.error_handler(ret) #--------------------------------------------------------# # get open source from center # #--------------------------------------------------------# def pull_center_test(self): #fio pull self.pull_from_center('fio', 'fio-fio-3.8.tar.gz', '05832WND') #iperf pull self.pull_from_center('iperf', 'iperf-3.7.tar.gz', '05833PNC') #kafka python pull self.pull_from_center('kafka-python', 'kafka-python-2.0.0.tar.gz', '05835PPS') #jackson pull self.pull_from_center('jackson', 'jackson-annotations-2.11.2.jar', '05836QJR') #jackson pull self.pull_from_center('jackson', 'jackson-core-2.11.2.jar', '05836QJR') #jackson pull self.pull_from_center('jackson', 'jackson-databind-2.11.2.jar', '05836QJR') #double-conversion pull self.pull_from_center('double-conversion', 'v3.1.1.zip', '05833DJM') self.pull_from_center('psutil', 'psutil-5.7.0.tar.gz', '05834AVD') def pull_center(self): #fio pull self.pull_from_center('fio', 'fio-fio-3.8.tar.gz', '05832WND') #iperf pull self.pull_from_center('iperf', 'iperf-3.7.tar.gz', '05833PNC') #kafka python pull self.pull_from_center('kafka-python', 'kafka-python-2.0.0.tar.gz', '05835PPS') #zlib pull self.pull_from_center('zlib', 'zlib-1.2.11.tar.gz', '05832LKN') #cffi pull self.pull_from_center('cffi', 'cffi-1.12.3.tar.gz', '05833NKG') #zstd pull self.pull_from_center('zstd', 'zstd-1.4.4.tar.gz', '05833RAA') #unixodbc pull self.pull_from_center('unixodbc', 'unixODBC-2.3.9.tar.gz', '05836YTH') #snappy pull self.pull_from_center('snappy', '1.1.8.tar.gz', '05834ASH') #six pull self.pull_from_center('six', 'six-1.12.0.tar.gz', '05833CQA') #asn1crypto pull self.pull_from_center('asn1crypto', 'asn1crypto-1.2.0.tar.gz', '05833TCM') #cryptography pull self.pull_from_center('cryptography', 'cryptography-2.7.tar.gz', '05833JGS') #openssl pull self.pull_from_center('openssl', 'openssl-1.1.1g.tar.gz', '05834NCD') #pynacl pull self.pull_from_center('pynacl', 'pynacl-1.3.0.tar.gz', '05833ABT') #psutil pull self.pull_from_center('psutil', 'psutil-5.7.0.tar.gz', '05834AVD') #psqlodbc pull ODBC #self.pull_from_center('psqlodbc', 'psqlodbc-10.03.0000.tar.gz', '05832XYH') #pgxc pull #self.pull_from_center('pgxc', 'pgxc-v1.1.tar.gz', '05831RES') #postgresql-hll pull server #self.pull_from_center('postgresql-hll', 'postgresql-hll-2.10.2.zip', '05832TLV') #pljava pull server #self.pull_from_center('pljava', 'pljava_1.5.2_src.zip', '05833GUV') #postgresql-jdbc pull JDBC #self.pull_from_center('postgresql-jdbc', 'postgresql-jdbc-42.2.5.src.tar.gz', '05832WPE') #pcre pull self.pull_from_center('pcre', 'pcre-8.44.tar.gz', '05834AMQ') #paste pull self.pull_from_center('paste', 'paste-3.4.0.tar.gz', '05834JPG') #paramiko pull self.pull_from_center('paramiko', 'paramiko-2.6.0.tar.gz', '05833MWY') #orc pull self.pull_from_center('orc', 'orc-rel-release-1.6.0.tar.gz', '05833RAN') #numactl pull self.pull_from_center('numactl', 'numactl-2.0.13.tar.gz', '05833MQM') #nghttp2 pull self.pull_from_center('nghttp2', 'nghttp2-1.39.2.tar.gz', '05833PAX') #netifaces pull self.pull_from_center('netifaces', 'netifaces-release_0_10_9.tar.gz', '05833LEF') #ncurses pull # self.pull_from_center('ncurses', 'ncurses-6.2.tar.gz', '05834AVS') #lz4 pull self.pull_from_center('lz4', 'lz4-1.9.2.tar.gz', '05833QVT') #llvm pull self.pull_from_center('llvm', 'llvm-10.0.0.src.tar.xz', '05835YVM') #libxml2 pull self.pull_from_center('libxml2', 'libxml2-2.9.9.tar.gz', '05833DFT') #libiconv pull self.pull_from_center('libiconv', 'libiconv-1.16.tar.gz', '05833PRU') #libevent pull self.pull_from_center('libevent', 'libevent-2.1.11-stable.tar.gz', '05833LTP') #libcgroup pull self.pull_from_center('libcgroup', 'libcgroup-0.41-21.el7.src.rpm', '05833VLC') #kerberos pull #self.pull_from_center('kerberos', 'krb5-1.17.1.tar.gz', '05833TFQ') #joda-time pull self.pull_from_center('joda-time', 'joda-time-2.10.6.jar', '05836EVA') #jemalloc pull self.pull_from_center('jemalloc', 'jemalloc-5.2.1.zip', '05833NWG') #jackson pull self.pull_from_center('jackson', 'jackson-annotations-2.11.2.jar', '05836QJR') #jackson pull self.pull_from_center('jackson', 'jackson-core-2.11.2.jar', '05836QJR') #jackson pull self.pull_from_center('jackson', 'jackson-databind-2.11.2.jar', '05836QJR') #ipaddress pull self.pull_from_center('ipaddress', 'ipaddress-1.0.22.tar.gz', '05832XTX') #idna pull self.pull_from_center('idna', 'idna-2.8.tar.gz', '05833CQF') #esdk_obs_api pull self.pull_from_center('esdk_obs_api', 'huaweicloud-sdk-c-obs-3.1.3.tar.gz', '05833HQG') #grpc pull self.pull_from_center('grpc', 'grpc-1.28.1.tar.gz', '05834MFX') #abseil-cpp pull self.pull_from_center('abseil-cpp', 'abseil-cpp-20200225.zip', '05835XEB') #protobuf pull self.pull_from_center('protobuf', 'protobuf-3.11.3.zip', '05834KWC') #glog pull self.pull_from_center('glog', 'glog-0.4.0.tar.gz', '05833NWR') #flatbuffers pull self.pull_from_center('flatbuffers', 'flatbuffers-1.11.0-src.zip', '05833LKH') #fastjson pull self.pull_from_center('fastjson', 'fastjson-1.2.70.jar', '05835TDF') #etcd pull server #self.pull_from_center('etcd', 'v3.3.18.zip', '05833SGS') #enum34 pull self.pull_from_center('enum34', 'enum34-1.1.9.tar.gz', '05834AFS') #libedit pull self.pull_from_center('libedit', 'libedit-20190324-3.1.tar.gz', '05833LPK') #double-conversion pull self.pull_from_center('double-conversion', 'v3.1.1.zip', '05833DJM') #libcurl pull self.pull_from_center('libcurl', 'curl-7.68.0.tar.gz', '05833WCD') #cJSON pull self.pull_from_center('cJSON', 'cJSON-1.7.13.tar.gz', '05834SXQ') #c-ares pull self.pull_from_center('c-ares', 'c-ares-1.15.0.tar.gz', '05833HTP') #brotli pull self.pull_from_center('brotli', 'brotli-1.0.7-src.zip', '05833HGN') #bottle pull #self.pull_from_center('bottle', 'bottle-0.12.17-src.zip', '05833NDF') #boost pull self.pull_from_center('boost', 'boost_1_72_0.tar.gz', '05834LEU') #bcrypt pull self.pull_from_center('bcrypt', 'bcrypt-3.1.7.tar.gz', '05833LMP') #libthrift pull self.pull_from_center('libthrift', 'thrift-0.13.0.tar.gz', '05833QEA') #parquet pull self.pull_from_center('parquet', 'apache-arrow-0.11.1.zip', '05833DJU') #httpclient pull self.pull_from_center('httpclient', 'httpclient-4.5.13.jar', '05837DRH') #httpcore pull self.pull_from_center('httpcore', 'httpcore-4.4.13.jar', '05834FRW') #commons-codec pull self.pull_from_center('commons-codec', 'commons-codec-1.11.jar', '05832USL') #commons-logging pull self.pull_from_center('commons-logging', 'commons-logging-1.2.jar', '05835NYL') #nanomsg pull self.pull_from_center('nanomsg', 'nanomsg-1.1.5.tar.gz', '05833GBW') #slf4j pull self.pull_from_center('slf4j', 'slf4j-api-1.7.30.jar', '05834BMW') #rapidjson pull self.pull_from_center('rapidjson', 'rapidjson-4b3d7c2f42142f10b888e580c515f60ca98e2ee9.zip', '05833NMN') #pyasn1 pull self.pull_from_center('pyasn1', 'pyasn1-0.4.7.tar.gz', '05833MPT') #pycparser pull self.pull_from_center('pycparser', 'pycparser-2.19.tar.gz', '05833CLN') #pyOpenSSL pull self.pull_from_center('pyOpenSSL', 'pyOpenSSL-19.0.0.tar.gz', '05833EMP') #madlib_pull self.pull_from_center('madlib', 'apache-madlib-1.17.0-src.tar.gz', '05837HGE') #--------------------------------------------------------# # build mode parameter # #--------------------------------------------------------# def build(self): self.pull_center() #--------------------------------------------------------# # error log handler # #--------------------------------------------------------# def error_handler(self, ret): if ret: print("[ERROR] Invalid return code, exited") assert False #--------------------------------------------------------# # base interface for executing command # #--------------------------------------------------------# def exe_cmd(self, cmd): if sys.version_info < (3, 5): ret = subprocess.call(cmd, shell = True) else: run_tsk = subprocess.run(cmd, shell = True, check = True) ret = run_tsk.returncode return ret #--------------------------------------------------------# # main function # #--------------------------------------------------------# if __name__ == '__main__': Operator = OPOperator() #Operator.build() Operator.pull_from_center(sys.argv[1], sys.argv[2], sys.argv[3])