From df1b3e08f23d5357f41fe9615e3d1446722cd02c Mon Sep 17 00:00:00 2001 From: gongzt Date: Tue, 1 Sep 2020 10:57:03 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=88=A0=E9=99=A4pyinstaller=E6=89=93?= =?UTF-8?q?=E5=8C=85=E7=9A=84=E5=BD=A2=E5=BC=8F=EF=BC=8C=E6=9B=B4=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BB=A5=E5=8D=95=E6=96=87=E4=BB=B6=E4=B8=BA=E5=85=A5?= =?UTF-8?q?=E5=8F=A3=E6=9D=A5=E6=89=A7=E8=A1=8C=E5=91=BD=E4=BB=A4=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageship/packageship/pkgship | 16 +++++++++++ packageship/packageship/pkgship.py | 2 -- packageship/packageship/pkgshipd | 8 +++--- packageship/pkgship.spec | 43 +++++++++++++----------------- packageship/setup.py | 8 +++--- 5 files changed, 44 insertions(+), 33 deletions(-) create mode 100644 packageship/packageship/pkgship diff --git a/packageship/packageship/pkgship b/packageship/packageship/pkgship new file mode 100644 index 00000000..9a3fe909 --- /dev/null +++ b/packageship/packageship/pkgship @@ -0,0 +1,16 @@ +#!/usr/bin/python3 +import sys +import signal +try: + def sig_handler(signum, frame): + print('Exit command mode') + sys.exit(0) + signal.signal(signal.SIGINT, sig_handler) +except: + pass + +from packageship.pkgship import main + + +if __name__ == '__main__': + main() diff --git a/packageship/packageship/pkgship.py b/packageship/packageship/pkgship.py index 8da7a46b..ea32b527 100644 --- a/packageship/packageship/pkgship.py +++ b/packageship/packageship/pkgship.py @@ -144,9 +144,7 @@ class PkgshipCommand(BaseCommand): super(PkgshipCommand, self).__init__() self.statistics = dict() self.table = PkgshipCommand.create_table() - # Calculate the total width of the current terminal - # self.columns = int(os.popen('stty size', 'r').read().split()[1]) self.columns = 100 self.params = [] diff --git a/packageship/packageship/pkgshipd b/packageship/packageship/pkgshipd index a2e39a4f..c6e742f0 100755 --- a/packageship/packageship/pkgshipd +++ b/packageship/packageship/pkgshipd @@ -45,6 +45,7 @@ buffer-size=$buffer_size pidfile=$OUT_PATH/manage.pid http-timeout=$http_timeout harakiri=$harakiri +enable-threads=true daemonize=$daemonize" > $OUT_PATH/manage.ini fi @@ -72,6 +73,7 @@ buffer-size=$buffer_size pidfile=$OUT_PATH/selfpkg.pid http-timeout=$http_timeout harakiri=$harakiri +enable-threads=true daemonize=$daemonize" > $OUT_PATH/selfpkg.ini fi @@ -107,8 +109,8 @@ function stop_service(){ if [ ! -n "$1" ] then - echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]" - exit 0 + echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]" + exit 0 fi if [ X$2 = X ];then @@ -154,6 +156,6 @@ elif [ $1 = restart ];then echo "===The run log is saved into: $daemonize===" else - echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]" + echo "Usages: sh pkgshipd.sh start|stop|restart [manage|selfpkg]" fi diff --git a/packageship/pkgship.spec b/packageship/pkgship.spec index f72bf571..2e147407 100644 --- a/packageship/pkgship.spec +++ b/packageship/pkgship.spec @@ -1,6 +1,6 @@ Name: pkgship -Version: 1.0.0 -Release: 7 +Version: 1.1.0 +Release: 2 Summary: Pkgship implements rpm package dependence ,maintainer, patch query and so no. License: Mulan 2.0 URL: https://gitee.com/openeuler/openEuler-Advisor @@ -10,9 +10,11 @@ BuildArch: noarch BuildRequires: python3-flask-restful python3-flask python3 python3-pyyaml python3-sqlalchemy BuildRequires: python3-prettytable python3-requests python3-flask-session python3-flask-script python3-marshmallow +BuildRequires: python3-Flask-APScheduler python3-pandas python3-retrying python3-xlrd python3-XlsxWriter Requires: python3-pip python3-flask-restful python3-flask python3 python3-pyyaml Requires: python3-sqlalchemy python3-prettytable python3-requests Requires: python3-pyinstaller python3-flask-session python3-flask-script python3-marshmallow python3-uWSGI +Requires: python3-pandas python3-dateutil python3-XlsxWriter python3-xlrd python3-Flask-APScheduler python3-retrying %description Pkgship implements rpm package dependence ,maintainer, patch query and so no. @@ -28,33 +30,17 @@ Pkgship implements rpm package dependence ,maintainer, patch query and so no. %check +# The apscheduler cannot catch the local time, so a time zone must be assigned before running the test case. +export TZ=Asia/Shanghai # change log_path to solve default log_path permission denied problem log_path=`pwd`/tmp/ sed -i "/\[LOG\]/a\log_path=$log_path" test/common_files/package.ini -%{__python3} -m unittest test/run_tests.py +%{__python3} -m unittest test/init_test.py +%{__python3} -m unittest test/read_test.py +%{__python3} -m unittest test/write_test.py rm -rf $log_path %post -#build cli bin -if [ -f "/usr/bin/pkgship" ]; then - rm -rf /usr/bin/pkgship -fi - - -cd %{python3_sitelib}/packageship/ -if [ -f "/usr/bin/pyinstaller" ]; then - /usr/bin/pyinstaller -F pkgship.py -elif [ -f "/usr/local/bin/pyinstaller" ]; then - /usr/local/bin/pyinstaller -F pkgship.py -else - echo "pkship install fail,there is no pyinstaller!" - exit -fi - -sed -i "s/hiddenimports\=\[\]/hiddenimports\=\['pkg_resources.py2_warn'\]/g" pkgship.spec -/usr/local/bin/pyinstaller pkgship.spec -cp dist/pkgship /usr/bin/ -rm -rf %{python3_sitelib}/packageship/build %{python3_sitelib}/packageship/dist %postun @@ -64,9 +50,18 @@ rm -rf %{python3_sitelib}/packageship/build %{python3_sitelib}/packageship/dist %{python3_sitelib}/* %config %{_sysconfdir}/pkgship/* %attr(0755,root,root) %{_bindir}/pkgshipd - +%attr(0755,root,root) %{_bindir}/pkgship %changelog +* Tue Sep 1 2020 Zhengtang Gong - 1.1.0-2 +- Delete the packaged form of pyinstaller and change the execution + of the command in the form of a single file as the input + +* Sat Aug 29 2020 Yiru Wang - 1.1.0-1 +- Add package management features: + RPM packages statically displayed in the version repository + RPM packages used time displayed for current version in the version repository + Issue management of packages in a version-management repository * Fri Aug 21 2020 Chengqiang Bao < baochengqiang1@huawei.com > - 1.0.0-7 - Fixed a problem with command line initialization of the Filepath parameter where relative paths are not supported and paths are too long diff --git a/packageship/setup.py b/packageship/setup.py index 08488d7d..346a0c62 100644 --- a/packageship/setup.py +++ b/packageship/setup.py @@ -5,8 +5,7 @@ file for software packaging """ from distutils.core import setup - -config_path = "/etc/pkgship/" # pylint: disable=invalid-name +_CONFIG_PATH = "/etc/pkgship/" setup( name='packageship', @@ -28,6 +27,7 @@ setup( 'packageship.application.apps.lifecycle.function.base', 'packageship.application.apps.lifecycle.function.download_yaml', 'packageship.application.apps.lifecycle.function.gitee', + 'packageship.application.apps.lifecycle.function.concurrent', 'packageship.application.apps.lifecycle.serialize', 'packageship.application.apps.lifecycle.url', 'packageship.application.apps.lifecycle.view', @@ -58,6 +58,6 @@ setup( long_description=open('README.md', encoding='utf-8').read(), author='gongzt', data_files=[ - (config_path, ['packageship/package.ini']), - ('/usr/bin', ['packageship/pkgshipd'])] + (_CONFIG_PATH, ['packageship/package.ini']), + ('/usr/bin', ['packageship/pkgshipd', 'packageship/pkgship'])] ) -- Gitee From 0518d4b335646f0c109c2a22528169751e4c5a08 Mon Sep 17 00:00:00 2001 From: gongzt Date: Tue, 1 Sep 2020 10:59:11 +0800 Subject: [PATCH 2/5] =?UTF-8?q?spec=E6=96=87=E4=BB=B6=E7=9A=84=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageship/pkgship.spec | 3 --- 1 file changed, 3 deletions(-) diff --git a/packageship/pkgship.spec b/packageship/pkgship.spec index c848a110..2e147407 100644 --- a/packageship/pkgship.spec +++ b/packageship/pkgship.spec @@ -30,10 +30,7 @@ Pkgship implements rpm package dependence ,maintainer, patch query and so no. %check -<<<<<<< HEAD # The apscheduler cannot catch the local time, so a time zone must be assigned before running the test case. -======= ->>>>>>> 491d55f9fb04db28ea3ec2a21193e4ba5fb2217b export TZ=Asia/Shanghai # change log_path to solve default log_path permission denied problem log_path=`pwd`/tmp/ -- Gitee From fb603897fd4c8fa1d106802b2e79c17b9289637e Mon Sep 17 00:00:00 2001 From: gongzt Date: Tue, 1 Sep 2020 11:24:10 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E7=94=9F=E5=91=BD=E5=91=A8=E6=9C=9F?= =?UTF-8?q?=E4=B8=AD=E9=92=88=E5=AF=B9disable=E7=9A=84=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=BA=93=E4=B8=8D=E5=9C=A8=E5=88=9B=E5=BB=BA=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/initsystem/data_import.py | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/packageship/packageship/application/initsystem/data_import.py b/packageship/packageship/application/initsystem/data_import.py index ffd9dc0c..13928899 100644 --- a/packageship/packageship/application/initsystem/data_import.py +++ b/packageship/packageship/application/initsystem/data_import.py @@ -14,12 +14,12 @@ from packageship.libs.exception import DatabaseRepeatException from packageship.libs.exception import Error from packageship.libs.configutils.readconfig import ReadConfig from packageship.libs.log import Log -from packageship.application.models.package import SrcPack -from packageship.application.models.package import BinPack -from packageship.application.models.package import BinRequires -from packageship.application.models.package import SrcRequires -from packageship.application.models.package import BinProvides -from packageship.application.models.package import Packages +from packageship.application.models.package import src_pack +from packageship.application.models.package import bin_pack +from packageship.application.models.package import bin_requires +from packageship.application.models.package import src_requires +from packageship.application.models.package import bin_provides +from packageship.application.models.package import packages from packageship import system_config LOGGER = Log(__name__) @@ -136,6 +136,11 @@ class InitDataBase(): LOGGER.logger.error('The priority value type in the database initialization \ configuration file is incorrect') continue + lifecycle_status_val = database_config.get('lifecycle') + if lifecycle_status_val not in ('enable', 'disable'): + LOGGER.logger.error('The status value of the life cycle in the initialization\ + configuration file can only be enable or disable') + continue # Initialization data self._init_data(database_config) @@ -195,7 +200,12 @@ class InitDataBase(): raise FileNotFoundError("sqlite file {src} or {bin} does not exist, please \ check and try again".format(src=src_db_file, bin=bin_db_file)) # 3. Obtain temporary source package files and binary package files - if self.__save_data(src_db_file, bin_db_file, self.database_name, _db_name): + _lifecycle_status_val = database_config.get('lifecycle') + if self.__save_data(src_db_file, + bin_db_file, + self.database_name, + _db_name, + _lifecycle_status_val): # Update the configuration file of the database database_content = { 'database_name': _db_name, @@ -209,7 +219,6 @@ class InitDataBase(): LOGGER.logger.error(error_msg) # Delete the specified database self.__del_database(_db_name) - # Delete tables created in the life cycle def __del_database(self, db_name): try: @@ -257,7 +266,7 @@ class InitDataBase(): LOGGER.logger.error(sql_error) return None - def __save_data(self, src_db_file, bin_db_file, db_name, table_name): + def __save_data(self, src_db_file, bin_db_file, db_name, table_name, lifecycle_status_val): """ integration of multiple data files @@ -274,7 +283,8 @@ class InitDataBase(): as database: self._database = database # Save data related to source package - self._save_src_packages(db_name, table_name) + self._save_src_packages( + db_name, table_name, lifecycle_status_val) self._save_src_requires(db_name) with DBHelper(db_name=bin_db_file, db_type='sqlite:///', complete_route_db=True)\ @@ -291,7 +301,7 @@ class InitDataBase(): else: return True - def _save_src_packages(self, db_name, table_name): + def _save_src_packages(self, db_name, table_name, lifecycle_status_val): """ Save the source package data @@ -310,25 +320,26 @@ class InitDataBase(): '{db_name}:There is no relevant data in the source \ package provided '.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(packages_datas, SrcPack) - - self._storage_packages(table_name, packages_datas) + database.batch_add(packages_datas, src_pack) + if lifecycle_status_val == 'enable': + InitDataBase._storage_packages(table_name, packages_datas) @staticmethod def __meta_model(table_name): """ The mapping relationship of the orm model """ - model = type("packages", (Packages, DBHelper.BASE), { + model = type("packages", (packages, DBHelper.BASE), { '__tablename__': table_name}) return model - def _storage_packages(self, table_name, package_data): + @staticmethod + def _storage_packages(table_name, package_data): """ Bulk storage of source code package data """ add_packages = [] - cls_model = InitDataBase.__meta_model(table_name) + cls_model = packages.package_meta(table_name) pkg_keys = ('name', 'url', 'rpm_license', 'version', 'release', 'summary', 'description') with DBHelper(db_name="lifecycle") as database: @@ -354,6 +365,7 @@ class InitDataBase(): if add_packages: database.batch_add(add_packages, cls_model) + database.session.commit() def _save_src_requires(self, db_name): """ @@ -373,7 +385,7 @@ class InitDataBase(): raise ContentNoneException('{db_name}: The package data that the source package \ depends on is empty'.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(requires_datas, SrcRequires) + database.batch_add(requires_datas, src_requires) def _save_bin_packages(self, db_name): """ @@ -403,7 +415,7 @@ class InitDataBase(): bin_packaegs[index]['src_name'] = src_package_name with DBHelper(db_name=db_name) as database: - database.batch_add(bin_packaegs, BinPack) + database.batch_add(bin_packaegs, bin_pack) def _save_bin_requires(self, db_name): """ @@ -424,7 +436,7 @@ class InitDataBase(): dependency package'.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(requires_datas, BinRequires) + database.batch_add(requires_datas, bin_requires) def _save_bin_provides(self, db_name): """ @@ -445,7 +457,7 @@ class InitDataBase(): binary component '.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(provides_datas, BinProvides) + database.batch_add(provides_datas, bin_provides) def __exists_repeat_database(self): """ -- Gitee From a9aaf5463cf6b2f57de90af0d8c9cda2eddde5cb Mon Sep 17 00:00:00 2001 From: gongzt Date: Tue, 1 Sep 2020 11:57:35 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E9=92=88=E5=AF=B9=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=9A=84=E5=8A=9F=E8=83=BD=E9=AA=8C=E8=AF=81=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/initsystem/data_import.py | 32 +++++++++---------- packageship/pkgship.spec | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/packageship/packageship/application/initsystem/data_import.py b/packageship/packageship/application/initsystem/data_import.py index 13928899..b332d15c 100644 --- a/packageship/packageship/application/initsystem/data_import.py +++ b/packageship/packageship/application/initsystem/data_import.py @@ -14,12 +14,12 @@ from packageship.libs.exception import DatabaseRepeatException from packageship.libs.exception import Error from packageship.libs.configutils.readconfig import ReadConfig from packageship.libs.log import Log -from packageship.application.models.package import src_pack -from packageship.application.models.package import bin_pack -from packageship.application.models.package import bin_requires -from packageship.application.models.package import src_requires -from packageship.application.models.package import bin_provides -from packageship.application.models.package import packages +from packageship.application.models.package import SrcPack +from packageship.application.models.package import BinPack +from packageship.application.models.package import BinRequires +from packageship.application.models.package import SrcRequires +from packageship.application.models.package import BinProvides +from packageship.application.models.package import Packages from packageship import system_config LOGGER = Log(__name__) @@ -266,7 +266,7 @@ class InitDataBase(): LOGGER.logger.error(sql_error) return None - def __save_data(self, src_db_file, bin_db_file, db_name, table_name, lifecycle_status_val): + def __save_data(self, src_db_file, bin_db_file, db_name, table_name, lifecycle_status_val): """ integration of multiple data files @@ -301,7 +301,7 @@ class InitDataBase(): else: return True - def _save_src_packages(self, db_name, table_name, lifecycle_status_val): + def _save_src_packages(self, db_name, table_name, lifecycle_status_val): """ Save the source package data @@ -320,7 +320,7 @@ class InitDataBase(): '{db_name}:There is no relevant data in the source \ package provided '.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(packages_datas, src_pack) + database.batch_add(packages_datas, SrcPack) if lifecycle_status_val == 'enable': InitDataBase._storage_packages(table_name, packages_datas) @@ -329,7 +329,7 @@ class InitDataBase(): """ The mapping relationship of the orm model """ - model = type("packages", (packages, DBHelper.BASE), { + model = type("packages", (Packages, DBHelper.BASE), { '__tablename__': table_name}) return model @@ -339,7 +339,7 @@ class InitDataBase(): Bulk storage of source code package data """ add_packages = [] - cls_model = packages.package_meta(table_name) + cls_model = Packages.package_meta(table_name) pkg_keys = ('name', 'url', 'rpm_license', 'version', 'release', 'summary', 'description') with DBHelper(db_name="lifecycle") as database: @@ -365,7 +365,7 @@ class InitDataBase(): if add_packages: database.batch_add(add_packages, cls_model) - database.session.commit() + database.session.commit() def _save_src_requires(self, db_name): """ @@ -385,7 +385,7 @@ class InitDataBase(): raise ContentNoneException('{db_name}: The package data that the source package \ depends on is empty'.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(requires_datas, src_requires) + database.batch_add(requires_datas, SrcRequires) def _save_bin_packages(self, db_name): """ @@ -415,7 +415,7 @@ class InitDataBase(): bin_packaegs[index]['src_name'] = src_package_name with DBHelper(db_name=db_name) as database: - database.batch_add(bin_packaegs, bin_pack) + database.batch_add(bin_packaegs, BinPack) def _save_bin_requires(self, db_name): """ @@ -436,7 +436,7 @@ class InitDataBase(): dependency package'.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(requires_datas, bin_requires) + database.batch_add(requires_datas, BinRequires) def _save_bin_provides(self, db_name): """ @@ -457,7 +457,7 @@ class InitDataBase(): binary component '.format(db_name=db_name)) with DBHelper(db_name=db_name) as database: - database.batch_add(provides_datas, bin_provides) + database.batch_add(provides_datas, BinProvides) def __exists_repeat_database(self): """ diff --git a/packageship/pkgship.spec b/packageship/pkgship.spec index 2e147407..8a7adbc5 100644 --- a/packageship/pkgship.spec +++ b/packageship/pkgship.spec @@ -13,7 +13,7 @@ BuildRequires: python3-prettytable python3-requests python3-flask-session python BuildRequires: python3-Flask-APScheduler python3-pandas python3-retrying python3-xlrd python3-XlsxWriter Requires: python3-pip python3-flask-restful python3-flask python3 python3-pyyaml Requires: python3-sqlalchemy python3-prettytable python3-requests -Requires: python3-pyinstaller python3-flask-session python3-flask-script python3-marshmallow python3-uWSGI +Requires: python3-flask-session python3-flask-script python3-marshmallow python3-uWSGI Requires: python3-pandas python3-dateutil python3-XlsxWriter python3-xlrd python3-Flask-APScheduler python3-retrying %description -- Gitee From 8694927572376e027cdafe24be8b1bafc348f020 Mon Sep 17 00:00:00 2001 From: gongzt Date: Tue, 1 Sep 2020 12:06:00 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E4=BF=9D=E5=AD=98=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packageship/packageship/application/initsystem/data_import.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packageship/packageship/application/initsystem/data_import.py b/packageship/packageship/application/initsystem/data_import.py index b332d15c..cda86a5c 100644 --- a/packageship/packageship/application/initsystem/data_import.py +++ b/packageship/packageship/application/initsystem/data_import.py @@ -266,7 +266,7 @@ class InitDataBase(): LOGGER.logger.error(sql_error) return None - def __save_data(self, src_db_file, bin_db_file, db_name, table_name, lifecycle_status_val): + def __save_data(self, src_db_file, bin_db_file, db_name, table_name, lifecycle_status_val): """ integration of multiple data files @@ -301,7 +301,7 @@ class InitDataBase(): else: return True - def _save_src_packages(self, db_name, table_name, lifecycle_status_val): + def _save_src_packages(self, db_name, table_name, lifecycle_status_val): """ Save the source package data -- Gitee