+#!/usr/bin/python
+# Copyright (c) 2000 - 2016 Samsung Electronics Co., Ltd. All rights reserved.
+#
+# Contact:
+# @author Chulwoo Shin <cw1.shin@samsung.com>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Contributors:
+# - S-Core Co., Ltd
+
+import rpm
+
+default_arch = ('noarch', 'src')
+
+archPolicies = {
+ "x86_64": ("x86_64", "i686", "i586", "i486", "i386"),
+ "i686": ("i686", "i586", "i486", "i386"),
+ "i586": ("i586", "i486", "i386"),
+ "ia64": ("ia64", "i686", "i586", "i486", "i386"),
+ "aarch64": ("aarch64"),
+ "armv7tnhl": ("armv7tnhl", "armv7thl", "armv7nhl", "armv7hl"),
+ "armv7thl": ("armv7thl", "armv7hl"),
+ "armv7nhl": ("armv7nhl", "armv7hl"),
+ "armv7hl": ("armv7hl"),
+ "armv7l": ("armv7l", "armv6l", "armv5tejl", "armv5tel", "armv5l", "armv4tl", "armv4l", "armv3l"),
+ "armv6l": ("armv6l", "armv5tejl", "armv5tel", "armv5l", "armv4tl", "armv4l", "armv3l"),
+ "armv5tejl": ("armv5tejl", "armv5tel", "armv5l", "armv4tl", "armv4l", "armv3l"),
+ "armv5tel": ("armv5tel", "armv5l", "armv4tl", "armv4l", "armv3l"),
+ "armv5l": ("armv5l", "armv4tl", "armv4l", "armv3l"),
+}
+
+def compare_ver(ver1, ver2):
+ return rpm.labelCompare((ver1.get('epoch'), ver1.get('ver'), ver1.get('rel')), (ver2.get('epoch'), ver2.get('ver'), ver2.get('rel')))
+
+def compare_req_cap_ver(req, cap):
+ epoch = cap.get('epoch')
+ ver = cap.get('ver')
+ rel = cap.get('rel')
+ if not req.get('epoch'): epoch = None
+ if not req.get('rel'): rel = None
+ return rpm.labelCompare((req.get('epoch'), req.get('ver'), req.get('rel')), (epoch, ver, rel))
+
+def meetRequireVersion(req_ver, cmp_ver):
+ cmp_ret = compare_req_cap_ver(req_ver, cmp_ver)
+ if cmp_ret == 0 and (req_ver['flags'] == 'EQ' or req_ver['flags'] == 'GE' or req_ver['flags'] == 'LE'):
+ return True
+ elif cmp_ret == 1 and (req_ver['flags'] == 'LT' or req_ver['flags'] == 'LE'):
+ return True
+ elif cmp_ret == -1 and (req_ver['flags'] == 'GT' or req_ver['flags'] == 'GE'):
+ return True
+ return False