From 6fd21b69400421d93154d151d9766c2faa109941 Mon Sep 17 00:00:00 2001 From: liheavy <17865196565@163.com> Date: Fri, 3 Sep 2021 10:39:43 +0800 Subject: [PATCH] update mapping of binary and source (cherry picked from commit 16f01d136ea9c5bdb5216ec65817105d99d234e2) --- 0003-bugfix-binary-name-mapping-source.patch | 848 +++++++++++++++++++ pkgship.spec | 8 +- 2 files changed, 855 insertions(+), 1 deletion(-) create mode 100644 0003-bugfix-binary-name-mapping-source.patch diff --git a/0003-bugfix-binary-name-mapping-source.patch b/0003-bugfix-binary-name-mapping-source.patch new file mode 100644 index 0000000..cd2e305 --- /dev/null +++ b/0003-bugfix-binary-name-mapping-source.patch @@ -0,0 +1,848 @@ +diff --git a/packageship/application/initialize/binary.json b/packageship/application/initialize/binary.json +index ebaa681a890a370745fc8a1282b8519fa1d3c734..a3abb5afd41085a83839ef3b2231f7efc4f9658f 100644 +--- a/packageship/application/initialize/binary.json ++++ b/packageship/application/initialize/binary.json +@@ -135,18 +135,6 @@ + "ignore_above": 256, + "index": false + }, +- "relation": { +- "properties": { +- "bin_name": { +- "type": "keyword", +- "ignore_above": 256 +- }, +- "src_name": { +- "type": "keyword", +- "ignore_above": 256 +- } +- } +- }, + "release": { + "type": "keyword", + "ignore_above": 256 +diff --git a/packageship/application/initialize/integration.py b/packageship/application/initialize/integration.py +index f7cd38f6258c3a0f0e05a2d2fea8317e269e2833..788b2f79edcab39a08e4d1094c48027db145c986 100644 +--- a/packageship/application/initialize/integration.py ++++ b/packageship/application/initialize/integration.py +@@ -201,20 +201,21 @@ class InitializeService: + + """ + sources = [] +- for src_pack_name, src_pack in self._src_pack.items(): ++ for _, src_pack in self._src_pack.items(): + es_json = ESJson() + es_json.update(src_pack) + es_json["requires"] = self._build_requires( + src_pack['pkgKey']) + try: +- for bin_pack in self._bin_pack['sources'].pop(src_pack_name): ++ location_href = src_pack["location_href"].split('/')[-1] ++ for bin_pack in self._bin_pack['sources'].get(location_href): + _subpacks = dict( + name=bin_pack["name"], version=bin_pack["version"]) + try: + es_json["subpacks"].append(_subpacks) + except TypeError: + es_json["subpacks"] = [_subpacks] +- except KeyError: ++ except TypeError: + es_json["subpacks"] = None + sources.append(self._es_json("-source", es_json)) + helpers.bulk(self._session.client, sources) +@@ -227,6 +228,10 @@ class InitializeService: + binarys = [] + be_depends = [] + for _, bin_pack in self._bin_pack["packages"].items(): ++ bin_pack["src_name"] = self._src_location[bin_pack["src_name"]]["name"] ++ if isinstance(bin_pack["src_name"], ESJson): ++ bin_pack["src_name"] = None ++ + be_depends.append(self._be_depend(bin_pack)) + es_json = ESJson() + es_json.update(bin_pack) +@@ -275,7 +280,9 @@ class InitializeService: + try: + for require in self._bin_requires.get(provide["name"]): + _bin_pack = self._bin_pack["pkg_key"][require["pkgKey"]] +- _src_pack = self._src_pack[_bin_pack["src_name"]] ++ _src_pack = self._src_location[_bin_pack["src_name"]] ++ if not _src_pack: ++ _src_pack = self._src_pack[_bin_pack["src_name"]] + component_json["install_require"].append({ + "req_bin_name": _bin_pack["name"], + "req_bin_version": _bin_pack["version"], +@@ -373,7 +380,7 @@ class InitializeService: + return { + "_index": str(self._repo["dbname"] + index).lower(), + "_type": _type, +- "_source": source ++ "_source": dict(source) + } + + def _relation(self, key): +@@ -407,7 +414,6 @@ class InitializeService: + except (KeyError, TypeError): + return build_requires + for src_require in requires: +- src_require["relation"] = self._relation(src_require['name']) + src_require["requires_type"] = "build" + build_requires.append(src_require) + return build_requires +@@ -422,7 +428,6 @@ class InitializeService: + install_requires = list() + try: + for bin_require in self._bin_requires.get(bin_pack['pkgKey']): +- bin_require["relation"] = self._relation(bin_require['name']) + bin_require["requires_type"] = "install" + install_requires.append(bin_require) + +@@ -465,6 +470,14 @@ class InitializeService: + self._data.src_pkgkeys[src_pack["pkgKey"]] = src_pack + return self._data.src_pkgkeys + ++ @property ++ def _src_location(self): ++ if not self._data.src_location: ++ for _, package in self._src_pack.items(): ++ key = package["location_href"].split('/')[-1] ++ self._data["src_location"][key] = package ++ return self._data.src_location ++ + @property + def _src_requires(self): + """ +@@ -549,22 +562,16 @@ class InitializeService: + """ + + def combination_binary(row_data): +- try: +- src_package_name = None +- _pkgs = row_data.get('rpm_sourcerpm').split( +- '-' + row_data.get('version')) +- if len(_pkgs) != 1: +- src_package_name = ''.join(_pkgs[0:-1]) +- except AttributeError: +- src_package_name = None +- row_data["src_name"] = src_package_name ++ ++ rpm_sourcerpm = row_data.get('rpm_sourcerpm') ++ row_data["src_name"] = rpm_sourcerpm + self._data[table]['packages'][row_data[key]] = row_data + self._data[table]["pkg_key"][row_data["pkgKey"]] = row_data +- if src_package_name: +- if isinstance(self._data[table]["sources"][src_package_name], ESJson): +- self._data[table]["sources"][src_package_name] = [row_data] ++ if rpm_sourcerpm: ++ if isinstance(self._data[table]["sources"][rpm_sourcerpm], ESJson): ++ self._data[table]["sources"][rpm_sourcerpm] = [row_data] + else: +- self._data[table]["sources"][src_package_name].append( ++ self._data[table]["sources"][rpm_sourcerpm].append( + row_data) + + def others(row_data, dict_key): +diff --git a/packageship/application/initialize/source.json b/packageship/application/initialize/source.json +index 5ee3544dd897b0469eee9c109c934221f6e3ba0c..12049bfd110baf885a06ead363ff4609f05ed21c 100644 +--- a/packageship/application/initialize/source.json ++++ b/packageship/application/initialize/source.json +@@ -26,18 +26,6 @@ + "type": "keyword", + "ignore_above": 256 + }, +- "relation": { +- "properties": { +- "bin_name": { +- "type": "keyword", +- "ignore_above": 256 +- }, +- "src_name": { +- "type": "keyword", +- "ignore_above": 256 +- } +- } +- }, + "release": { + "type": "keyword", + "ignore_above": 256 +diff --git a/test/cli/init_command/comparison_relation_case/relationship/binary.json b/test/cli/init_command/comparison_relation_case/relationship/binary.json +index 5e202ba4819ad842d8ba5b344ebbf15f851da563..09a87898e08e787b571cfc35122cb0eca4f5251c 100644 +--- a/test/cli/init_command/comparison_relation_case/relationship/binary.json ++++ b/test/cli/init_command/comparison_relation_case/relationship/binary.json +@@ -1,230 +1,212 @@ + { +- "pkgKey": 35, +- "pkgId": "df487e3623660d477f556899fce77ac650322c4362d82e047c6efc013e07ae5b", +- "name": "Judy", +- "arch": "aarch64", +- "version": "1.0.5", +- "epoch": "0", +- "release": "19.oe1", +- "summary": "C library array", +- "description": "The package provides the most advanced core technology, the main\nadvantages are scalability, high performance and memory efficiency.", +- "url": "http://sourceforge.net/projects/judy/", +- "time_file": 1601219934, +- "time_build": 1601219910, +- "rpm_license": "LGPLv2+", +- "rpm_vendor": "http://openeuler.org", +- "rpm_group": "Unspecified", +- "rpm_buildhost": "obs-worker-0016", +- "rpm_sourcerpm": "Judy-1.0.5-19.oe1.src.rpm", +- "rpm_header_start": 5096, +- "rpm_header_end": 8772, +- "rpm_packager": "http://openeuler.org", +- "size_package": 114276, +- "size_installed": 356971, +- "size_archive": 358048, +- "location_href": "Packages/Judy-1.0.5-19.oe1.aarch64.rpm", +- "location_base": null, +- "checksum_type": "sha256", +- "src_name": "Judy", +- "provides": [ +- { +- "name": "Judy", +- "flags": "EQ", +- "epoch": "0", +- "version": "1.0.5", +- "release": "19.oe1", +- "pkgKey": 35 +- }, +- { +- "name": "Judy(aarch-64)", +- "flags": "EQ", +- "epoch": "0", +- "version": "1.0.5", +- "release": "19.oe1", +- "pkgKey": 35 +- }, +- { +- "name": "libJudy.so.1()(64bit)", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35 +- } +- ], +- "files": [ +- { +- "name": "/etc/ima/digest_lists/0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64", +- "type": "file", +- "pkgKey": 35 +- }, +- { +- "name": "/etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64", +- "type": "file", +- "pkgKey": 35 +- } +- ], +- "filelists": [ +- { +- "pkgKey": 35, +- "dirname": "/usr/share/licenses", +- "filenames": "Judy", +- "filetypes": "d" +- }, +- { +- "pkgKey": 35, +- "dirname": "/usr/share/licenses/Judy", +- "filenames": "COPYING", +- "filetypes": "f" +- }, +- { +- "pkgKey": 35, +- "dirname": "/etc/ima/digest_lists.tlv", +- "filenames": "0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64", +- "filetypes": "f" +- }, +- { +- "pkgKey": 35, +- "dirname": "/usr/lib64", +- "filenames": "libJudy.so.1/libJudy.so.1.0.3", +- "filetypes": "ff" +- }, +- { +- "pkgKey": 35, +- "dirname": "/etc/ima/digest_lists", +- "filenames": "0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64", +- "filetypes": "f" +- } +- ], +- "src_version": "1.0.5", +- "requires": [ +- { +- "name": "coreutils", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 14, +- "pre": "FALSE", +- "relation": [{ "bin_name": "coreutils", "src_name": "coreutils" }], +- "requires_type": "build" +- }, +- { +- "name": "gawk", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 14, +- "pre": "FALSE", +- "relation": [{ "bin_name": "gawk", "src_name": "gawk" }], +- "requires_type": "build" +- }, +- { +- "name": "gcc", +- "flags": "GE", +- "epoch": "0", +- "version": "4.1", +- "release": null, +- "pkgKey": 14, +- "pre": "FALSE", +- "relation": [{ "bin_name": "gcc", "src_name": "gcc" }], +- "requires_type": "build" +- }, +- { +- "name": "make", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 14, +- "pre": "FALSE", +- "relation": [{ "bin_name": "make", "src_name": "make" }], +- "requires_type": "build" +- }, +- { +- "name": "sed", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 14, +- "pre": "FALSE", +- "relation": [{ "bin_name": "sed", "src_name": "sed" }], +- "requires_type": "build" +- }, +- { +- "name": "/bin/sh", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35, +- "pre": "TRUE", +- "relation": [ +- { "bin_name": "bash", "src_name": "bash" }, +- { "bin_name": "coreutils", "src_name": "coreutils" } +- ], +- "requires_type": "install" +- }, +- { +- "name": "/bin/sh", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35, +- "pre": "FALSE", +- "relation": [ +- { "bin_name": "bash", "src_name": "bash" }, +- { "bin_name": "coreutils", "src_name": "coreutils" } +- ], +- "requires_type": "install" +- }, +- { +- "name": "ld-linux-aarch64.so.1()(64bit)", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35, +- "pre": "FALSE", +- "relation": [{ "bin_name": "glibc", "src_name": "glibc" }], +- "requires_type": "install" +- }, +- { +- "name": "ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35, +- "pre": "FALSE", +- "relation": [{ "bin_name": "glibc", "src_name": "glibc" }], +- "requires_type": "install" +- }, +- { +- "name": "rtld(GNU_HASH)", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35, +- "pre": "FALSE", +- "relation": [{ "bin_name": "glibc", "src_name": "glibc" }], +- "requires_type": "install" +- }, +- { +- "name": "libc.so.6(GLIBC_2.17)(64bit)", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 35, +- "pre": "FALSE", +- "relation": [{ "bin_name": "glibc", "src_name": "glibc" }], +- "requires_type": "install" +- } +- ] +- } +- +\ No newline at end of file ++ "pkgKey": 35, ++ "pkgId": "df487e3623660d477f556899fce77ac650322c4362d82e047c6efc013e07ae5b", ++ "name": "Judy", ++ "arch": "aarch64", ++ "version": "1.0.5", ++ "epoch": "0", ++ "release": "19.oe1", ++ "summary": "C library array", ++ "description": "The package provides the most advanced core technology, the main\nadvantages are scalability, high performance and memory efficiency.", ++ "url": "http://sourceforge.net/projects/judy/", ++ "time_file": 1601219934, ++ "time_build": 1601219910, ++ "rpm_license": "LGPLv2+", ++ "rpm_vendor": "http://openeuler.org", ++ "rpm_group": "Unspecified", ++ "rpm_buildhost": "obs-worker-0016", ++ "rpm_sourcerpm": "Judy-1.0.5-19.oe1.src.rpm", ++ "rpm_header_start": 5096, ++ "rpm_header_end": 8772, ++ "rpm_packager": "http://openeuler.org", ++ "size_package": 114276, ++ "size_installed": 356971, ++ "size_archive": 358048, ++ "location_href": "Packages/Judy-1.0.5-19.oe1.aarch64.rpm", ++ "location_base": null, ++ "checksum_type": "sha256", ++ "src_name": "Judy", ++ "provides": [ ++ { ++ "name": "Judy", ++ "flags": "EQ", ++ "epoch": "0", ++ "version": "1.0.5", ++ "release": "19.oe1", ++ "pkgKey": 35 ++ }, ++ { ++ "name": "Judy(aarch-64)", ++ "flags": "EQ", ++ "epoch": "0", ++ "version": "1.0.5", ++ "release": "19.oe1", ++ "pkgKey": 35 ++ }, ++ { ++ "name": "libJudy.so.1()(64bit)", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35 ++ } ++ ], ++ "files": [ ++ { ++ "name": "/etc/ima/digest_lists/0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64", ++ "type": "file", ++ "pkgKey": 35 ++ }, ++ { ++ "name": "/etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64", ++ "type": "file", ++ "pkgKey": 35 ++ } ++ ], ++ "filelists": [ ++ { ++ "pkgKey": 35, ++ "dirname": "/usr/share/licenses", ++ "filenames": "Judy", ++ "filetypes": "d" ++ }, ++ { ++ "pkgKey": 35, ++ "dirname": "/usr/share/licenses/Judy", ++ "filenames": "COPYING", ++ "filetypes": "f" ++ }, ++ { ++ "pkgKey": 35, ++ "dirname": "/etc/ima/digest_lists.tlv", ++ "filenames": "0-metadata_list-compact_tlv-Judy-1.0.5-19.oe1.aarch64", ++ "filetypes": "f" ++ }, ++ { ++ "pkgKey": 35, ++ "dirname": "/usr/lib64", ++ "filenames": "libJudy.so.1/libJudy.so.1.0.3", ++ "filetypes": "ff" ++ }, ++ { ++ "pkgKey": 35, ++ "dirname": "/etc/ima/digest_lists", ++ "filenames": "0-metadata_list-compact-Judy-1.0.5-19.oe1.aarch64", ++ "filetypes": "f" ++ } ++ ], ++ "src_version": "1.0.5", ++ "requires": [ ++ { ++ "name": "coreutils", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 14, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "gawk", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 14, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "gcc", ++ "flags": "GE", ++ "epoch": "0", ++ "version": "4.1", ++ "release": null, ++ "pkgKey": 14, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "make", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 14, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "sed", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 14, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "/bin/sh", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35, ++ "pre": "TRUE", ++ "requires_type": "install" ++ }, ++ { ++ "name": "/bin/sh", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35, ++ "pre": "FALSE", ++ "requires_type": "install" ++ }, ++ { ++ "name": "ld-linux-aarch64.so.1()(64bit)", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35, ++ "pre": "FALSE", ++ "requires_type": "install" ++ }, ++ { ++ "name": "ld-linux-aarch64.so.1(GLIBC_2.17)(64bit)", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35, ++ "pre": "FALSE", ++ "requires_type": "install" ++ }, ++ { ++ "name": "rtld(GNU_HASH)", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35, ++ "pre": "FALSE", ++ "requires_type": "install" ++ }, ++ { ++ "name": "libc.so.6(GLIBC_2.17)(64bit)", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 35, ++ "pre": "FALSE", ++ "requires_type": "install" ++ } ++ ] ++} +\ No newline at end of file +diff --git a/test/cli/init_command/comparison_relation_case/relationship/source.json b/test/cli/init_command/comparison_relation_case/relationship/source.json +index 664add83ce8467e7d40d0f0f36676579e68775c6..e09f3cb33648a139e8f0a81ff831a55c83f1270b 100644 +--- a/test/cli/init_command/comparison_relation_case/relationship/source.json ++++ b/test/cli/init_command/comparison_relation_case/relationship/source.json +@@ -1,72 +1,74 @@ + { +- "pkgKey": 3, +- "pkgId": "a2c8963c6d5bdea8d3c9dc1bfa609db643c5a17077eff4eca21aa6e33ff9d4e5", +- "name": "CUnit", +- "arch": "src", +- "version": "2.1.3", +- "epoch": "0", +- "release": "21.oe1", +- "summary": "A Unit Testing Framework for C", +- "description": "CUnit is a lightweight system for writing, administering, and running unit tests in C\nIt provides C programmers a basic testing functionality with a flexible variety of user\ninterfaces.\n\nCUnit is built as a static library which is linked with the user's testing code. It\nuses a simple framework for building test structures, and provides a rich set of\nassertions for testing common data types. In addition, several different interfaces are\nprovided for running tests and reporting results.", +- "url": "http://cunit.sourceforge.net/", +- "time_file": 1601215538, +- "time_build": 1601215498, +- "rpm_license": "LGPLv2+", +- "rpm_vendor": "http://openeuler.org", +- "rpm_group": "Unspecified", +- "rpm_buildhost": "obs-worker-009", +- "rpm_sourcerpm": "", +- "rpm_header_start": 5096, +- "rpm_header_end": 7552, +- "rpm_packager": "http://openeuler.org", +- "size_package": 523353, +- "size_installed": 516791, +- "size_archive": 517172, +- "location_href": "Packages/CUnit-2.1.3-21.oe1.src.rpm", +- "location_base": null, +- "checksum_type": "sha256", +- "requires": [ +- { +- "name": "automake", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 3, +- "pre": "FALSE", +- "relation": [{ "bin_name": "automake", "src_name": "automake" }], +- "requires_type": "build" +- }, +- { +- "name": "git", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 3, +- "pre": "FALSE", +- "relation": [ +- { "bin_name": "git", "src_name": "git" }, +- { "bin_name": "git", "src_name": "git" } +- ], +- "requires_type": "build" +- }, +- { +- "name": "libtool", +- "flags": null, +- "epoch": null, +- "version": null, +- "release": null, +- "pkgKey": 3, +- "pre": "FALSE", +- "relation": [{ "bin_name": "libtool", "src_name": "libtool" }], +- "requires_type": "build" +- } +- ], +- "subpacks": [ +- { "name": "CUnit", "version": "2.1.3" }, +- { "name": "CUnit-devel", "version": "2.1.3" }, +- { "name": "CUnit-help", "version": "2.1.3" } +- ] +- } +- +\ No newline at end of file ++ "pkgKey": 3, ++ "pkgId": "a2c8963c6d5bdea8d3c9dc1bfa609db643c5a17077eff4eca21aa6e33ff9d4e5", ++ "name": "CUnit", ++ "arch": "src", ++ "version": "2.1.3", ++ "epoch": "0", ++ "release": "21.oe1", ++ "summary": "A Unit Testing Framework for C", ++ "description": "CUnit is a lightweight system for writing, administering, and running unit tests in C\nIt provides C programmers a basic testing functionality with a flexible variety of user\ninterfaces.\n\nCUnit is built as a static library which is linked with the user's testing code. It\nuses a simple framework for building test structures, and provides a rich set of\nassertions for testing common data types. In addition, several different interfaces are\nprovided for running tests and reporting results.", ++ "url": "http://cunit.sourceforge.net/", ++ "time_file": 1601215538, ++ "time_build": 1601215498, ++ "rpm_license": "LGPLv2+", ++ "rpm_vendor": "http://openeuler.org", ++ "rpm_group": "Unspecified", ++ "rpm_buildhost": "obs-worker-009", ++ "rpm_sourcerpm": "", ++ "rpm_header_start": 5096, ++ "rpm_header_end": 7552, ++ "rpm_packager": "http://openeuler.org", ++ "size_package": 523353, ++ "size_installed": 516791, ++ "size_archive": 517172, ++ "location_href": "Packages/CUnit-2.1.3-21.oe1.src.rpm", ++ "location_base": null, ++ "checksum_type": "sha256", ++ "requires": [ ++ { ++ "name": "automake", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 3, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "git", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 3, ++ "pre": "FALSE", ++ "requires_type": "build" ++ }, ++ { ++ "name": "libtool", ++ "flags": null, ++ "epoch": null, ++ "version": null, ++ "release": null, ++ "pkgKey": 3, ++ "pre": "FALSE", ++ "requires_type": "build" ++ } ++ ], ++ "subpacks": [ ++ { ++ "name": "CUnit", ++ "version": "2.1.3" ++ }, ++ { ++ "name": "CUnit-devel", ++ "version": "2.1.3" ++ }, ++ { ++ "name": "CUnit-help", ++ "version": "2.1.3" ++ } ++ ] ++} +\ No newline at end of file +diff --git a/test/cli/init_command/comparison_relation_case/test_relationship.py b/test/cli/init_command/comparison_relation_case/test_relationship.py +index 7e389297339217f58438053e472b65030fd76fe2..147bb9823cadd0bfb3aec1dae8c62bf443a9042c 100644 +--- a/test/cli/init_command/comparison_relation_case/test_relationship.py ++++ b/test/cli/init_command/comparison_relation_case/test_relationship.py +@@ -11,6 +11,7 @@ + # See the Mulan PSL v2 for more details. + # ******************************************************************************/ + # -*- coding:utf-8 -*- ++import json + import os + import shutil + from pathlib import Path +diff --git a/test/unpack/compress_files/gz_error.txt b/test/unpack/compress_files/gz_error.txt +new file mode 100644 +index 0000000000000000000000000000000000000000..9ea415ee96ce4459710a2c5cab997053cb5c207f +--- /dev/null ++++ b/test/unpack/compress_files/gz_error.txt +@@ -0,0 +1 @@ ++gz error file +\ No newline at end of file +diff --git a/test/unpack/compress_files/tar_error.txt b/test/unpack/compress_files/tar_error.txt +new file mode 100644 +index 0000000000000000000000000000000000000000..beb36750c7e906599a4765ec8debf914f4c0d035 +--- /dev/null ++++ b/test/unpack/compress_files/tar_error.txt +@@ -0,0 +1 @@ ++tar file error +\ No newline at end of file +diff --git a/test/unpack/compress_files/xz_error.txt b/test/unpack/compress_files/xz_error.txt +new file mode 100644 +index 0000000000000000000000000000000000000000..3fd014f7e5ccf3864da047743a6af767355c4937 +--- /dev/null ++++ b/test/unpack/compress_files/xz_error.txt +@@ -0,0 +1 @@ ++xz file error +\ No newline at end of file +diff --git a/test/unpack/test_unpack.py b/test/unpack/test_unpack.py +index 64ad3381e58867c83e1c10a9f125341771e2c454..90bcae8dcba6e27375467c292e675e84a64d1e9b 100644 +--- a/test/unpack/test_unpack.py ++++ b/test/unpack/test_unpack.py +@@ -34,13 +34,13 @@ class TestUnpack(TestCase): + def test_gz_unpack(self): + """unpack gz file""" + with self.assertRaises(UnpackError): +- Unpack.dispatch(".gz", file_path=os.path.join(self.path, "bz2_error.txt"), ++ Unpack.dispatch(".gz", file_path=os.path.join(self.path, "gz_error.txt"), + save_file=os.path.join(self.path, "bz2_unpack.sqlite")) + + def test_error_tar(self): + """error tar file""" + with self.assertRaises(IOError): +- Unpack.dispatch(".tar", file_path=os.path.join(self.path, "bz2_error.txt"), ++ Unpack.dispatch(".tar", file_path=os.path.join(self.path, "tar_error.txt"), + save_file=os.path.join(self.path, "bz2_unpack.sqlite")) + + def test_tar_unpack(self): +@@ -50,9 +50,14 @@ class TestUnpack(TestCase): + + def test_error_zip_unpack(self): + """unpack error zip file""" ++ file = os.path.join(self.path, "zip_error.txt") ++ with open(file, "w", encoding="utf-8") as f: ++ f.write("error zip file") + with self.assertRaises(IOError): +- Unpack.dispatch(".zip", file_path=os.path.join(self.path, "bz2_error.txt"), ++ Unpack.dispatch(".zip", file_path=file, + save_file=os.path.join(self.path, "zip_file.sqlite")) ++ if os.path.exists(file): ++ os.remove(file) + + def test_zip_unpack(self): + """unpack zip file""" +@@ -64,7 +69,7 @@ class TestUnpack(TestCase): + def test_xz_unpack(self): + """unpack xz file""" + with self.assertRaises(UnpackError): +- Unpack.dispatch(".xz", file_path=os.path.join(self.path, "bz2_error.txt"), ++ Unpack.dispatch(".xz", file_path=os.path.join(self.path, "xz_error.txt"), + save_file=os.path.join(self.path, "xz.sqlite")) + + def test_file_path_none(self): diff --git a/pkgship.spec b/pkgship.spec index a5f2b81..59de779 100755 --- a/pkgship.spec +++ b/pkgship.spec @@ -1,12 +1,13 @@ Name: pkgship Version: 2.2.0 -Release: 3 +Release: 4 Summary: Pkgship implements rpm package dependence ,maintainer, patch query and so on. License: Mulan 2.0 URL: https://gitee.com/openeuler/pkgship Source0: https://gitee.com/openeuler/pkgship-%{version}.tar.gz Patch0001: 0001-bugfix-pkginfo.patch Patch0002: 0002-fix-install-and-start-script-info.patch +Patch0003: 0003-bugfix-binary-name-mapping-source.patch BuildArch: noarch @@ -112,6 +113,11 @@ create_dir_file /var/log/pkgship-operation 700 d %attr(0640,pkgshipuser,pkgshipuser) /lib/systemd/system/pkgship.service %changelog +* Fri Sep 3 2021 Haiwei Li - 2.2.0-4 +- Due to the inappropriate mapping rules between the binary package and the source package, +- the source package corresponding to the binary package cannot be found when the query bedepend require, +- and an error is reported. + * Thu Sep 2 2021 Haiwei Li - 2.2.0-3 - When the input parameters of the script that executes the installation of es and redis are incorrect, - the prompt message is incorrect.