1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,63 @@ |
0 |
+%define debug_package %{nil} |
|
1 |
+ |
|
2 |
+Summary: CRI tools |
|
3 |
+Name: cri-tools |
|
4 |
+Version: 1.11.1 |
|
5 |
+Release: 1%{?dist} |
|
6 |
+License: Apache License Version 2.0 |
|
7 |
+URL: https://github.com/kubernetes-incubator/cri-tools/archive/%{name}-%{version}.tar.gz |
|
8 |
+Source0: %{name}-%{version}.tar.gz |
|
9 |
+%define sha1 %{name}-%{version}.tar.gz=ba8064bcac65239a9c9e0e21c7d576c6b39f4089 |
|
10 |
+Group: Development/Tools |
|
11 |
+Vendor: VMware, Inc. |
|
12 |
+Distribution: Photon |
|
13 |
+BuildRequires: go |
|
14 |
+ |
|
15 |
+%description |
|
16 |
+cri-tools aims to provide a series of debugging and validation tools for Kubelet CRI, which includes: |
|
17 |
+crictl: CLI for kubelet CRI. |
|
18 |
+critest: validation test suites for kubelet CRI. |
|
19 |
+ |
|
20 |
+%prep |
|
21 |
+%setup -qn %{name}-%{version} |
|
22 |
+ |
|
23 |
+%build |
|
24 |
+make %{?_smp_mflags} |
|
25 |
+ |
|
26 |
+ |
|
27 |
+%install |
|
28 |
+rm -rf %{buildroot} |
|
29 |
+mkdir -p %{buildroot}%{_datadir}/%{name} |
|
30 |
+mkdir -p %{buildroot}/usr/bin |
|
31 |
+mkdir -p %{buildroot}/usr/lib/.build-id |
|
32 |
+mkdir -p %{buildroot}/usr/share/doc/cri-tools |
|
33 |
+mkdir -p %{buildroot}/usr/share/licenses/cri-tools |
|
34 |
+mkdir -p %{buildroot}/man/man1 |
|
35 |
+ |
|
36 |
+make install DESTDIR=%{buildroot} |
|
37 |
+cp /usr/local/bin/crictl %{buildroot}/usr/bin |
|
38 |
+cp /usr/local/bin/critest %{buildroot}/usr/bin |
|
39 |
+cp CHANGELOG.md %{buildroot}/usr/share/doc/cri-tools |
|
40 |
+cp LICENSE %{buildroot}/usr/share/licenses/cri-tools |
|
41 |
+cp CHANGELOG.md %{buildroot}/usr/share/doc/cri-tools |
|
42 |
+cp CONTRIBUTING.md %{buildroot}/usr/share/doc/cri-tools |
|
43 |
+cp OWNERS %{buildroot}/usr/share/doc/cri-tools |
|
44 |
+cp README.md %{buildroot}/usr/share/doc/cri-tools |
|
45 |
+cp code-of-conduct.md %{buildroot}/usr/share/doc/cri-tools |
|
46 |
+cp docs/validation.md %{buildroot}/usr/share/doc/cri-tools |
|
47 |
+cp docs/roadmap.md %{buildroot}/usr/share/doc/cri-tools |
|
48 |
+ |
|
49 |
+%files |
|
50 |
+%defattr(-,root,root) |
|
51 |
+%{_datadir}/%{name} |
|
52 |
+/usr/bin |
|
53 |
+/usr/share/doc/* |
|
54 |
+/usr/share/licenses/* |
|
55 |
+/man/man1/ |
|
56 |
+ |
|
57 |
+%clean |
|
58 |
+rm -rf %{buildroot}/* |
|
59 |
+ |
|
60 |
+%changelog |
|
61 |
+* Thu Jul 26 2018 Tapas Kundu <tkundu@vmware.com> 1.11.1-1 |
|
62 |
+- Initial build added for Photon. |
0 | 63 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,121 @@ |
0 |
+%define debug_package %{nil} |
|
1 |
+ |
|
2 |
+Summary: Elastic Serch |
|
3 |
+Name: elasticsearch |
|
4 |
+Version: 6.3.0 |
|
5 |
+Release: 1%{?dist} |
|
6 |
+License: Apache License Version 2.0 |
|
7 |
+URL: https://artifacts.elastic.co/downloads/elasticsearch/%{name}-%{version}.tar.gz |
|
8 |
+Source0: %{name}-%{version}.tar.gz |
|
9 |
+%define sha1 %{name}-%{version}.tar.gz=3f356bf80bd31c0107622cf7213d0ee9f43536d8 |
|
10 |
+Source1: cacerts |
|
11 |
+%define sha1 cacerts=f584c7c1f48c552f39acfb5560a300a657d9f3bb |
|
12 |
+Group: Development/Daemons |
|
13 |
+Vendor: VMware, Inc. |
|
14 |
+Distribution: Photon |
|
15 |
+BuildRequires: openjdk10 |
|
16 |
+BuildRequires: unzip |
|
17 |
+BuildRequires: curl |
|
18 |
+BuildRequires: which |
|
19 |
+BuildRequires: git |
|
20 |
+BuildRequires: make |
|
21 |
+BuildRequires: automake |
|
22 |
+BuildRequires: autoconf |
|
23 |
+BuildRequires: libtool |
|
24 |
+BuildRequires: tar |
|
25 |
+BuildRequires: wget |
|
26 |
+BuildRequires: patch |
|
27 |
+BuildRequires: texinfo |
|
28 |
+Requires(pre): /usr/sbin/useradd /usr/sbin/groupadd |
|
29 |
+Requires(postun):/usr/sbin/userdel /usr/sbin/groupdel |
|
30 |
+ |
|
31 |
+%description |
|
32 |
+Elasticsearch is a highly distributed RESTful search engine built for the cloud. |
|
33 |
+ |
|
34 |
+%prep |
|
35 |
+%setup -qn %{name}-%{version} |
|
36 |
+ |
|
37 |
+%build |
|
38 |
+export LANG="en_US.UTF-8" |
|
39 |
+export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8" |
|
40 |
+export JAVA_HOME=/usr/lib/jvm/OpenJDK-%{JAVA10_VERSION} |
|
41 |
+export PATH=$JAVA_HOME/bin:$PATH |
|
42 |
+export _JAVA_OPTIONS="-Xmx10g" |
|
43 |
+cp %{SOURCE1} /usr/lib/jvm/OpenJDK-%{JAVA10_VERSION}/lib/security/ |
|
44 |
+./gradlew assemble |
|
45 |
+ |
|
46 |
+%install |
|
47 |
+rm -rf %{buildroot} |
|
48 |
+mkdir -p %{buildroot}%{_datadir}/%{name} |
|
49 |
+mkdir -p %{buildroot}/etc/%{name} |
|
50 |
+mkdir -p %{buildroot}/usr/lib/sysctl.d/ |
|
51 |
+mkdir -p %{buildroot}/usr/lib/systemd/system/ |
|
52 |
+mkdir -p %{buildroot}/usr/lib/tmpfiles.d/ |
|
53 |
+mkdir -p %{buildroot}/etc/init.d/elasticsearch |
|
54 |
+mkdir -p %{buildroot}/etc/sysconfig/elasticsearch |
|
55 |
+mkdir -p %{buildroot}/var/lib/elasticsearch |
|
56 |
+mkdir -p %{buildroot}/var/log/elasticsearch |
|
57 |
+mkdir -p %{buildroot}/var/run/elasticsearch |
|
58 |
+mkdir -p %{buildroot}%{_datadir}/%{name}/data |
|
59 |
+ |
|
60 |
+tar -xvf distribution/archives/oss-tar/build/distributions/elasticsearch-oss-6.3.0-SNAPSHOT.tar.gz |
|
61 |
+cp elasticsearch-6.3.0-SNAPSHOT/LICENSE.txt %{buildroot}%{_datadir}/%{name}/ |
|
62 |
+cp elasticsearch-6.3.0-SNAPSHOT/NOTICE.txt %{buildroot}%{_datadir}/%{name}/ |
|
63 |
+cp elasticsearch-6.3.0-SNAPSHOT/README.textile %{buildroot}%{_datadir}/%{name}/ |
|
64 |
+cp -r elasticsearch-6.3.0-SNAPSHOT/* %{buildroot}%{_datadir}/%{name}/ |
|
65 |
+cp distribution/packages/build/packaging/oss-rpm/systemd/sysctl/elasticsearch.conf %{buildroot}/usr/lib/sysctl.d/ |
|
66 |
+cp distribution/packages/build/packaging/oss-rpm/systemd/elasticsearch.service %{buildroot}/usr/lib/systemd/system/ |
|
67 |
+cp distribution/packages/build/packaging/oss-rpm/systemd/elasticsearch.conf %{buildroot}/usr/lib/tmpfiles.d/ |
|
68 |
+cp elasticsearch-6.3.0-SNAPSHOT/config/log4j2.properties %{buildroot}/etc/%{name}/ |
|
69 |
+cp elasticsearch-6.3.0-SNAPSHOT/config/jvm.options %{buildroot}/etc/%{name}/ |
|
70 |
+ |
|
71 |
+chmod 755 %{buildroot}%{_datadir}/%{name}/ |
|
72 |
+chmod 755 %{buildroot}/etc/%{name}/ |
|
73 |
+chmod 755 %{buildroot}/var/log/%{name}/ |
|
74 |
+chmod 755 %{buildroot}/var/lib/%{name}/ |
|
75 |
+chmod 755 %{buildroot}/var/run/%{name}/ |
|
76 |
+chmod 755 %{buildroot}%{_datadir}/%{name}/data |
|
77 |
+ |
|
78 |
+%pre |
|
79 |
+ |
|
80 |
+getent group elasticsearch >/dev/null || /usr/sbin/groupadd -r elasticsearch |
|
81 |
+getent passwd elasticsearch >/dev/null || /usr/sbin/useradd --comment "ElasticSearch" --shell /bin/bash -M -r --groups elasticsearch --home /usr/share/elasticsearch elasticsearch |
|
82 |
+ |
|
83 |
+ |
|
84 |
+%post |
|
85 |
+%systemd_post elasticsearch.service |
|
86 |
+ |
|
87 |
+%preun |
|
88 |
+%systemd_preun elasticsearch.service |
|
89 |
+ |
|
90 |
+%postun |
|
91 |
+%systemd_postun_with_restart elasticsearch.service |
|
92 |
+if [ $1 -eq 0 ] ; then |
|
93 |
+ /usr/sbin/userdel elasticsearch |
|
94 |
+ /usr/sbin/groupdel elasticsearch |
|
95 |
+fi |
|
96 |
+ |
|
97 |
+ |
|
98 |
+%check |
|
99 |
+ |
|
100 |
+%clean |
|
101 |
+rm -rf %{buildroot}/* |
|
102 |
+ |
|
103 |
+%files |
|
104 |
+%defattr(-,root,root) |
|
105 |
+%attr(755,elasticsearch,elasticsearch) /var/log/elasticsearch |
|
106 |
+%attr(755,elasticsearch,elasticsearch) /usr/share/elasticsearch/data |
|
107 |
+%attr(755,elasticsearch,elasticsearch) /var/lib/elasticsearch |
|
108 |
+%attr(755,elasticsearch,elasticsearch) /var/run/elasticsearch |
|
109 |
+%attr(755,elasticsearch,elasticsearch) /usr/share/elasticsearch |
|
110 |
+%attr(755,elasticsearch,elasticsearch) /usr/share/elasticsearch/logs |
|
111 |
+%dir %{_datadir}/%{name} |
|
112 |
+%{_datadir}/%{name} |
|
113 |
+%attr(755,elasticsearch,elasticsearch) /etc/%{name} |
|
114 |
+%attr(755,elasticsearch,elasticsearch) /usr/lib/systemd/system/elasticsearch.service |
|
115 |
+%attr(755,elasticsearch,elasticsearch) /usr/lib/sysctl.d/elasticsearch.conf |
|
116 |
+%attr(755,elasticsearch,elasticsearch) /usr/lib/tmpfiles.d/elasticsearch.conf |
|
117 |
+ |
|
118 |
+%changelog |
|
119 |
+* Mon Jul 09 2018 Tapas Kundu <tkundu@vmware.com> 6.3.0-1 |
|
120 |
+- Initial build added for Photon. |
... | ... |
@@ -19,13 +19,31 @@ MongoDB (from "humongous") is a scalable, high-performance, open source, documen |
19 | 19 |
%setup -qn mongo-r%{version} |
20 | 20 |
|
21 | 21 |
%build |
22 |
+%ifarch x86_64 |
|
22 | 23 |
scons %{?_smp_mflags} MONGO_VERSION=%{version} \ |
23 | 24 |
--disable-warnings-as-errors |
25 |
+%endif |
|
26 |
+ |
|
27 |
+%ifarch aarch64 |
|
28 |
+scons %{?_smp_mflags} MONGO_VERSION=%{version} CCFLAGS="-march=armv8-a+crc" \ |
|
29 |
+ --disable-warnings-as-errors |
|
30 |
+%endif |
|
31 |
+ |
|
32 |
+ |
|
24 | 33 |
|
25 | 34 |
%install |
35 |
+%ifarch x86_64 |
|
26 | 36 |
scons %{?_smp_mflags} MONGO_VERSION=%{version} install \ |
27 | 37 |
--prefix=%{buildroot}%{_prefix} \ |
28 | 38 |
--disable-warnings-as-errors |
39 |
+%endif |
|
40 |
+ |
|
41 |
+%ifarch aarch64 |
|
42 |
+scons %{?_smp_mflags} MONGO_VERSION=%{version} CCFLAGS="-march=armv8-a+crc" install \ |
|
43 |
+ --prefix=%{buildroot}%{_prefix} \ |
|
44 |
+ --disable-warnings-as-errors |
|
45 |
+%endif |
|
46 |
+ |
|
29 | 47 |
install -d %{buildroot}/var/log/%{name} |
30 | 48 |
install -d %{buildroot}/var/lib/mongo |
31 | 49 |
install -d -m 755 %{buildroot}%{_unitdir} |
32 | 50 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,135 @@ |
0 |
+--- a/src/newgidmap.c 2018-07-31 05:56:46.642785135 +0530 |
|
1 |
+@@ -46,32 +46,36 @@ |
|
2 |
+ */ |
|
3 |
+ const char *Prog; |
|
4 |
+ |
|
5 |
+-static bool verify_range(struct passwd *pw, struct map_range *range) |
|
6 |
++static bool verify_range(struct passwd *pw, struct map_range *range, bool *allow_setgroups) |
|
7 |
+ { |
|
8 |
+ /* An empty range is invalid */ |
|
9 |
+ if (range->count == 0) |
|
10 |
+ return false; |
|
11 |
+ |
|
12 |
+- /* Test /etc/subgid */ |
|
13 |
+- if (have_sub_gids(pw->pw_name, range->lower, range->count)) |
|
14 |
++ /* Test /etc/subgid. If the mapping is valid then we allow setgroups. */ |
|
15 |
++ if (have_sub_gids(pw->pw_name, range->lower, range->count)) { |
|
16 |
++ *allow_setgroups = true; |
|
17 |
+ return true; |
|
18 |
++ } |
|
19 |
+ |
|
20 |
+ /* Allow a process to map it's own gid */ |
|
21 |
+- if ((range->count == 1) && (pw->pw_gid == range->lower)) |
|
22 |
++ if ((range->count == 1) && (pw->pw_gid == range->lower)) { |
|
23 |
++ /* noop -- if setgroups is enabled already we won't disable it. */ |
|
24 |
+ return true; |
|
25 |
++ } |
|
26 |
+ |
|
27 |
+ return false; |
|
28 |
+ } |
|
29 |
+ |
|
30 |
+ static void verify_ranges(struct passwd *pw, int ranges, |
|
31 |
+- struct map_range *mappings) |
|
32 |
++ struct map_range *mappings, bool *allow_setgroups) |
|
33 |
+ { |
|
34 |
+ struct map_range *mapping; |
|
35 |
+ int idx; |
|
36 |
+ |
|
37 |
+ mapping = mappings; |
|
38 |
+ for (idx = 0; idx < ranges; idx++, mapping++) { |
|
39 |
+- if (!verify_range(pw, mapping)) { |
|
40 |
++ if (!verify_range(pw, mapping, allow_setgroups)) { |
|
41 |
+ fprintf(stderr, _( "%s: gid range [%lu-%lu) -> [%lu-%lu) not allowed\n"), |
|
42 |
+ Prog, |
|
43 |
+ mapping->upper, |
|
44 |
+@@ -83,6 +87,70 @@ static void verify_ranges(struct passwd |
|
45 |
+ } |
|
46 |
+ } |
|
47 |
+ |
|
48 |
++void write_setgroups(int proc_dir_fd, bool allow_setgroups) |
|
49 |
++{ |
|
50 |
++ int setgroups_fd; |
|
51 |
++ char *policy, policy_buffer[4096]; |
|
52 |
++ |
|
53 |
++ /* |
|
54 |
++ * Default is "deny", and any "allow" will out-rank a "deny". We don't |
|
55 |
++ * forcefully write an "allow" here because the process we are writing |
|
56 |
++ * mappings for may have already set themselves to "deny" (and "allow" |
|
57 |
++ * is the default anyway). So allow_setgroups == true is a noop. |
|
58 |
++ */ |
|
59 |
++ policy = "deny\n"; |
|
60 |
++ if (allow_setgroups) |
|
61 |
++ return; |
|
62 |
++ |
|
63 |
++ setgroups_fd = openat(proc_dir_fd, "setgroups", O_RDWR|O_CLOEXEC); |
|
64 |
++ if (setgroups_fd < 0) { |
|
65 |
++ /* |
|
66 |
++ * If it's an ENOENT then we are on too old a kernel for the setgroups |
|
67 |
++ * code to exist. Emit a warning and bail on this. |
|
68 |
++ */ |
|
69 |
++ if (ENOENT == errno) { |
|
70 |
++ fprintf(stderr, _("%s: kernel doesn't support setgroups restrictions\n"), Prog); |
|
71 |
++ goto out; |
|
72 |
++ } |
|
73 |
++ fprintf(stderr, _("%s: couldn't open process setgroups: %s\n"), |
|
74 |
++ Prog, |
|
75 |
++ strerror(errno)); |
|
76 |
++ exit(EXIT_FAILURE); |
|
77 |
++ } |
|
78 |
++ |
|
79 |
++ /* |
|
80 |
++ * Check whether the policy is already what we want. /proc/self/setgroups |
|
81 |
++ * is write-once, so attempting to write after it's already written to will |
|
82 |
++ * fail. |
|
83 |
++ */ |
|
84 |
++ if (read(setgroups_fd, policy_buffer, sizeof(policy_buffer)) < 0) { |
|
85 |
++ fprintf(stderr, _("%s: failed to read setgroups: %s\n"), |
|
86 |
++ Prog, |
|
87 |
++ strerror(errno)); |
|
88 |
++ exit(EXIT_FAILURE); |
|
89 |
++ } |
|
90 |
++ if (!strncmp(policy_buffer, policy, strlen(policy))) |
|
91 |
++ goto out; |
|
92 |
++ |
|
93 |
++ /* Write the policy. */ |
|
94 |
++ if (lseek(setgroups_fd, 0, SEEK_SET) < 0) { |
|
95 |
++ fprintf(stderr, _("%s: failed to seek setgroups: %s\n"), |
|
96 |
++ Prog, |
|
97 |
++ strerror(errno)); |
|
98 |
++ exit(EXIT_FAILURE); |
|
99 |
++ } |
|
100 |
++ if (dprintf(setgroups_fd, "%s", policy) < 0) { |
|
101 |
++ fprintf(stderr, _("%s: failed to setgroups %s policy: %s\n"), |
|
102 |
++ Prog, |
|
103 |
++ policy, |
|
104 |
++ strerror(errno)); |
|
105 |
++ exit(EXIT_FAILURE); |
|
106 |
++ } |
|
107 |
++ |
|
108 |
++out: |
|
109 |
++ close(setgroups_fd); |
|
110 |
++} |
|
111 |
++ |
|
112 |
+ static void usage(void) |
|
113 |
+ { |
|
114 |
+ fprintf(stderr, _("usage: %s <pid> <gid> <lowergid> <count> [ <gid> <lowergid> <count> ] ... \n"), Prog); |
|
115 |
+@@ -103,6 +171,7 @@ int main(int argc, char **argv) |
|
116 |
+ struct stat st; |
|
117 |
+ struct passwd *pw; |
|
118 |
+ int written; |
|
119 |
++ bool allow_setgroups = false; |
|
120 |
+ |
|
121 |
+ Prog = Basename (argv[0]); |
|
122 |
+ |
|
123 |
+@@ -174,8 +243,9 @@ int main(int argc, char **argv) |
|
124 |
+ if (!mappings) |
|
125 |
+ usage(); |
|
126 |
+ |
|
127 |
+- verify_ranges(pw, ranges, mappings); |
|
128 |
++ verify_ranges(pw, ranges, mappings, &allow_setgroups); |
|
129 |
+ |
|
130 |
++ write_setgroups(proc_dir_fd, allow_setgroups); |
|
131 |
+ write_mapping(proc_dir_fd, ranges, mappings, "gid_map"); |
|
132 |
+ sub_gid_close(); |
|
133 |
+ |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
Summary: Programs for handling passwords in a secure way |
2 | 2 |
Name: shadow |
3 | 3 |
Version: 4.2.1 |
4 |
-Release: 15%{?dist} |
|
4 |
+Release: 16%{?dist} |
|
5 | 5 |
URL: http://pkg-shadow.alioth.debian.org/ |
6 | 6 |
License: BSD |
7 | 7 |
Group: Applications/System |
... | ... |
@@ -23,6 +23,7 @@ Source11: system-session |
23 | 23 |
Patch0: chkname-allowcase.patch |
24 | 24 |
Patch1: shadow-4.2.1-CVE-2016-6252-fix.patch |
25 | 25 |
Patch2: shadow-4.2.1-CVE-2017-12424.patch |
26 |
+Patch3: shadow-4.2.1-CVE-2018-7169.patch |
|
26 | 27 |
BuildRequires: cracklib |
27 | 28 |
BuildRequires: cracklib-devel |
28 | 29 |
Requires: cracklib |
... | ... |
@@ -53,6 +54,7 @@ These are the additional language files of shadow. |
53 | 53 |
%patch0 -p1 |
54 | 54 |
%patch1 -p1 |
55 | 55 |
%patch2 -p1 |
56 |
+%patch3 -p1 |
|
56 | 57 |
sed -i 's/groups$(EXEEXT) //' src/Makefile.in |
57 | 58 |
find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; |
58 | 59 |
sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \ |
... | ... |
@@ -169,6 +171,8 @@ make %{?_smp_mflags} check |
169 | 169 |
%defattr(-,root,root) |
170 | 170 |
|
171 | 171 |
%changelog |
172 |
+* Mon Jul 30 2018 Tapas Kundu <tkundu@vmware.com> 4.2.1-16 |
|
173 |
+- Added fix for CVE-2018-7169 |
|
172 | 174 |
* Fri Apr 20 2018 Alexey Makhalov <amakhalov@vmware.com> 4.2.1-15 |
173 | 175 |
- Move pam.d config file to here for better tracking. |
174 | 176 |
- Add pam_loginuid module as optional in a session. |
... | ... |
@@ -41,7 +41,7 @@ class PackageBuildDataGenerator(object): |
41 | 41 |
return list(self.__buildDependencyGraph.keys()) |
42 | 42 |
|
43 | 43 |
def _createSortListForPkg(self, pkg): |
44 |
- runTimeDepPkgList = self.__runTimeDependencyGraph[pkg] |
|
44 |
+ runTimeDepPkgList = list(set(self.__runTimeDependencyGraph[pkg])) |
|
45 | 45 |
runTimeDepPkgList.append(pkg) |
46 | 46 |
sortListForPkg = [] |
47 | 47 |
|
... | ... |
@@ -135,7 +135,7 @@ class PackageBuildDataGenerator(object): |
135 | 135 |
dependentRpmPackages = SPECS.getData().getBuildRequiresForPackage(basePackage) |
136 | 136 |
dependentPackages = set() |
137 | 137 |
for rpmPkg in dependentRpmPackages: |
138 |
- basePkg = SPECS.getData().getSpecName(rpmPkg) |
|
138 |
+ basePkg = SPECS.getData().getSpecName(rpmPkg.package) |
|
139 | 139 |
dependentPackages.add(basePkg) |
140 | 140 |
self.__buildDependencyGraph[basePackage] = dependentPackages |
141 | 141 |
nextPackagesToConstructGraph.update(dependentPackages) |
... | ... |
@@ -143,10 +143,13 @@ class PackageBuildDataGenerator(object): |
143 | 143 |
if addRunTimeGraph: |
144 | 144 |
rpmPackages = SPECS.getData().getPackages(basePackage) |
145 | 145 |
dependentPackages = set() |
146 |
+ dependentRpmPackagesNames= set() |
|
146 | 147 |
for rpmPkg in rpmPackages: |
147 | 148 |
dependentRpmPackages = SPECS.getData().getRequiresAllForPackage(rpmPkg) |
148 |
- self.__runTimeDependencyGraph[rpmPkg] = copy.copy(dependentRpmPackages) |
|
149 |
- for pkg in dependentRpmPackages: |
|
149 |
+ for pkgName in dependentRpmPackages: |
|
150 |
+ dependentRpmPackagesNames.add(pkgName.package) |
|
151 |
+ self.__runTimeDependencyGraph[rpmPkg] = copy.copy(dependentRpmPackagesNames) |
|
152 |
+ for pkg in dependentRpmPackagesNames: |
|
150 | 153 |
dependentPackages.add(SPECS.getData().getSpecName(pkg)) |
151 | 154 |
nextPackagesToConstructGraph.update(dependentPackages) |
152 | 155 |
|
... | ... |
@@ -91,48 +91,14 @@ class PackageBuilderBase(object): |
91 | 91 |
def _findBuildTimeCheckRequiredPackages(self, index=0): |
92 | 92 |
return SPECS.getData().getCheckBuildRequiresForPackage(self.package, index) |
93 | 93 |
|
94 |
- def _findRunTimeRequiredRPMPackagesParseObj(self,rpmPackage): |
|
95 |
- listRequiredPackages=SPECS.getData().getRequiresParseObjForPackage(rpmPackage) |
|
96 |
- return listRequiredPackages |
|
97 |
- |
|
98 |
- def _findBuildTimeRequiredPackagesParseObj(self, index): |
|
99 |
- listRequiredPackages=SPECS.getData().getBuildRequiresParseObjForPackage(self.package, index) |
|
100 |
- return listRequiredPackages |
|
101 |
- |
|
102 |
- def _findBuildTimeCheckRequiredPackagesParseObj(self, index): |
|
103 |
- listRequiredPackages=SPECS.getData().getCheckBuildRequiresParseObjForPackage(self.package, index) |
|
104 |
- return listRequiredPackages |
|
105 |
- |
|
106 |
- def _getProperVersion(self,package,parseSpecObj): |
|
107 |
- listOfVersionObjs=self.getSpecObj(package) |
|
108 |
- for num in listOfVersionObjs: |
|
109 |
- if parseSpecObj.compare == 'gte': |
|
110 |
- if LooseVersion(num.version) >= LooseVersion(parseSpecObj.version): |
|
111 |
- return num.version |
|
112 |
- elif parseSpecObj.compare == 'lte': |
|
113 |
- if LooseVersion(num.version) <= LooseVersion(parseSpecObj.version): |
|
114 |
- return num.version |
|
115 |
- elif parseSpecObj.compare == 'eq': |
|
116 |
- if LooseVersion(num.version) == LooseVersion(parseSpecObj.version): |
|
117 |
- return num.version |
|
118 |
- elif parseSpecObj.compare == 'lt': |
|
119 |
- if LooseVersion(num.version) < LooseVersion(parseSpecObj.version): |
|
120 |
- return num.version |
|
121 |
- elif parseSpecObj.compare == 'gt': |
|
122 |
- if LooseVersion(num.version) > LooseVersion(parseSpecObj.version): |
|
123 |
- return num.version |
|
124 |
- return "*" |
|
125 |
- |
|
126 |
- |
|
127 | 94 |
def _installPackage(self, pkgUtils, package,packageVersion, instanceID, destLogPath, |
128 | 95 |
listInstalledPackages, listInstalledRPMs): |
129 |
- latestRPM = os.path.basename( |
|
130 |
- pkgUtils.findRPMFileForGivenPackage(package)).replace(".rpm", "") |
|
131 |
- if package in listInstalledPackages and latestRPM in listInstalledRPMs: |
|
132 |
- return |
|
96 |
+ specificRPM = os.path.basename(pkgUtils.findRPMFileForGivenPackage(package,packageVersion)).replace(".rpm", "") |
|
97 |
+ if package in listInstalledPackages: |
|
98 |
+ return |
|
133 | 99 |
# mark it as installed - to avoid cyclic recursion |
134 | 100 |
listInstalledPackages.append(package) |
135 |
- listInstalledRPMs.append(latestRPM) |
|
101 |
+ listInstalledRPMs.append(specificRPM) |
|
136 | 102 |
self._installDependentRunTimePackages(pkgUtils, package, instanceID, destLogPath, |
137 | 103 |
listInstalledPackages, listInstalledRPMs) |
138 | 104 |
noDeps = False |
... | ... |
@@ -148,7 +114,6 @@ class PackageBuilderBase(object): |
148 | 148 |
def _installDependentRunTimePackages(self, pkgUtils, package, instanceID, destLogPath, |
149 | 149 |
listInstalledPackages, listInstalledRPMs): |
150 | 150 |
listRunTimeDependentPackages = self._findRunTimeRequiredRPMPackages(package) |
151 |
- listRunTimeDependentPackagesParseObj=self._findRunTimeRequiredRPMPackagesParseObj(package) |
|
152 | 151 |
if listRunTimeDependentPackages: |
153 | 152 |
for pkg in listRunTimeDependentPackages: |
154 | 153 |
if pkg in self.mapPackageToCycles: |
... | ... |
@@ -157,40 +122,26 @@ class PackageBuilderBase(object): |
157 | 157 |
pkgUtils.findRPMFileForGivenPackage(pkg)).replace(".rpm", "") |
158 | 158 |
if pkg in listInstalledPackages and latestPkgRPM in listInstalledRPMs: |
159 | 159 |
continue |
160 |
- flag = False |
|
161 |
- for objName in listRunTimeDependentPackagesParseObj: |
|
162 |
- if objName.package == pkg: |
|
163 |
- properVersion=self._getProperVersion(pkg,objName) |
|
164 |
- self._installPackage(pkgUtils, pkg,properVersion, instanceID, destLogPath,listInstalledPackages, listInstalledRPMs) |
|
165 |
- flag = True |
|
166 |
- break; |
|
167 |
- if flag == False: |
|
168 |
- self._installPackage(pkgUtils, pkg,"*", instanceID, destLogPath,listInstalledPackages, listInstalledRPMs) |
|
160 |
+ self._installPackage(pkgUtils, pkg,"*", instanceID, destLogPath,listInstalledPackages, listInstalledRPMs) |
|
169 | 161 |
|
170 | 162 |
def _findDependentPackagesAndInstalledRPM(self, instanceID, index=0): |
171 | 163 |
listInstalledPackages, listInstalledRPMs = self._findInstalledPackages(instanceID) |
172 | 164 |
self.logger.info(listInstalledPackages) |
173 | 165 |
listDependentPackages = self._findBuildTimeRequiredPackages(index) |
174 |
- listDependentPackagesParseObj=self._findBuildTimeRequiredPackagesParseObj(index) |
|
166 |
+ listTestPackages=[] |
|
175 | 167 |
if constants.rpmCheck and self.package in constants.testForceRPMS: |
176 | 168 |
listDependentPackages.extend(self._findBuildTimeCheckRequiredPackages(index)) |
177 |
- listDependentPackagesParseObj.extend(self._findBuildTimeCheckRequiredPackagesParseObj(index)) |
|
178 | 169 |
testPackages = (set(constants.listMakeCheckRPMPkgtoInstall) - |
179 | 170 |
set(listInstalledPackages) - |
180 | 171 |
set([self.package])) |
181 |
- listDependentPackages.extend(testPackages) |
|
172 |
+ listTestPackages=list(set(testPackages)) |
|
182 | 173 |
listDependentPackages = list(set(listDependentPackages)) |
183 |
- listDependentPackagesParseObj=list(set(listDependentPackagesParseObj)) |
|
184 |
- return listDependentPackages, listDependentPackagesParseObj,listInstalledPackages, listInstalledRPMs |
|
174 |
+ return listDependentPackages, listTestPackages, listInstalledPackages, listInstalledRPMs |
|
185 | 175 |
|
186 | 176 |
@staticmethod |
187 | 177 |
def getNumOfVersions(package): |
188 | 178 |
return SPECS.getData().getNumberOfVersions(package) |
189 | 179 |
|
190 |
- @staticmethod |
|
191 |
- def getSpecObj(package): |
|
192 |
- return SPECS.getData().getSpecObj(package) |
|
193 |
- |
|
194 | 180 |
class PackageBuilderContainer(PackageBuilderBase): |
195 | 181 |
def __init__(self, mapPackageToCycles, pkgBuildType): |
196 | 182 |
self.buildContainerImage = "photon_build_container:latest" |
... | ... |
@@ -298,7 +249,7 @@ class PackageBuilderContainer(PackageBuilderBase): |
298 | 298 |
constants.perPackageToolChain[self.package].get(platform.machine(), []), |
299 | 299 |
self.package) |
300 | 300 |
|
301 |
- listDependentPackages,listDependentPackagesParseObj, listInstalledPackages, listInstalledRPMs = ( |
|
301 |
+ listDependentPackages, listTestPackages, listInstalledPackages, listInstalledRPMs = ( |
|
302 | 302 |
self._findDependentPackagesAndInstalledRPM(containerID, index)) |
303 | 303 |
|
304 | 304 |
pkgUtils = PackageUtils(self.logName, self.logPath) |
... | ... |
@@ -307,10 +258,13 @@ class PackageBuilderContainer(PackageBuilderBase): |
307 | 307 |
"Installing dependent packages..") |
308 | 308 |
self.logger.info(listDependentPackages) |
309 | 309 |
for pkg in listDependentPackages: |
310 |
+ properVersion=pkgUtils._getProperVersion(pkg.package,pkg) |
|
311 |
+ self._installPackage(pkgUtils, pkg.package,properVersion, containerID, destLogPath,listInstalledPackages, listInstalledRPMs) |
|
312 |
+ for pkg in listTestPackages: |
|
310 | 313 |
flag = False |
311 |
- for objName in listDependentPackagesParseObj: |
|
312 |
- if objName.package == pkg: |
|
313 |
- properVersion=self._getProperVersion(pkg,objName) |
|
314 |
+ for lineContent in listDependentPackages: |
|
315 |
+ if lineContent.package == pkg: |
|
316 |
+ properVersion=pkgUtils._getProperVersion(pkg,lineContent) |
|
314 | 317 |
self._installPackage(pkgUtils, pkg,properVersion, containerID, destLogPath,listInstalledPackages, listInstalledRPMs) |
315 | 318 |
flag = True |
316 | 319 |
break; |
... | ... |
@@ -385,7 +339,7 @@ class PackageBuilderChroot(PackageBuilderBase): |
385 | 385 |
chrootID = None |
386 | 386 |
try: |
387 | 387 |
chrootID = self._prepareBuildRoot() |
388 |
- listDependentPackages,listDependentPackagesParseObj, listInstalledPackages, listInstalledRPMs = ( |
|
388 |
+ listDependentPackages, listTestPackages, listInstalledPackages, listInstalledRPMs = ( |
|
389 | 389 |
self._findDependentPackagesAndInstalledRPM(chrootID, index)) |
390 | 390 |
|
391 | 391 |
pkgUtils = PackageUtils(self.logName, self.logPath) |
... | ... |
@@ -393,10 +347,13 @@ class PackageBuilderChroot(PackageBuilderBase): |
393 | 393 |
if listDependentPackages: |
394 | 394 |
self.logger.info("Installing the build time dependent packages......") |
395 | 395 |
for pkg in listDependentPackages: |
396 |
+ properVersion=pkgUtils._getProperVersion(pkg.package, pkg) |
|
397 |
+ self._installPackage(pkgUtils, pkg.package,properVersion, chrootID, self.logPath,listInstalledPackages, listInstalledRPMs) |
|
398 |
+ for pkg in listTestPackages: |
|
396 | 399 |
flag = False |
397 |
- for objName in listDependentPackagesParseObj: |
|
398 |
- if objName.package == pkg: |
|
399 |
- properVersion=self._getProperVersion(pkg,objName) |
|
400 |
+ for lineContent in listDependentPackages: |
|
401 |
+ if lineContent.package == pkg: |
|
402 |
+ properVersion=pkgUtils._getProperVersion(pkg,lineContent) |
|
400 | 403 |
self._installPackage(pkgUtils, pkg,properVersion, chrootID, self.logPath,listInstalledPackages, listInstalledRPMs) |
401 | 404 |
flag = True |
402 | 405 |
break; |
... | ... |
@@ -9,6 +9,7 @@ from Logger import Logger |
9 | 9 |
from constants import constants |
10 | 10 |
import PullSources |
11 | 11 |
from SpecData import SPECS |
12 |
+from distutils.version import LooseVersion |
|
12 | 13 |
|
13 | 14 |
class PackageUtils(object): |
14 | 15 |
|
... | ... |
@@ -431,6 +432,26 @@ class PackageUtils(object): |
431 | 431 |
rpmDestDir = rpmDir + "/" + arch |
432 | 432 |
return rpmDestDir |
433 | 433 |
|
434 |
+ def _getProperVersion(self,package,parseSpecObj): |
|
435 |
+ listOfVersionObjs=SPECS.getData().getSpecObj(package) |
|
436 |
+ for num in listOfVersionObjs: |
|
437 |
+ if parseSpecObj.compare == 'gte': |
|
438 |
+ if LooseVersion(num.version) >= LooseVersion(parseSpecObj.version): |
|
439 |
+ return num.version |
|
440 |
+ elif parseSpecObj.compare == 'lte': |
|
441 |
+ if LooseVersion(num.version) <= LooseVersion(parseSpecObj.version): |
|
442 |
+ return num.version |
|
443 |
+ elif parseSpecObj.compare == 'eq': |
|
444 |
+ if LooseVersion(num.version) == LooseVersion(parseSpecObj.version): |
|
445 |
+ return num.version |
|
446 |
+ elif parseSpecObj.compare == 'lt': |
|
447 |
+ if LooseVersion(num.version) < LooseVersion(parseSpecObj.version): |
|
448 |
+ return num.version |
|
449 |
+ elif parseSpecObj.compare == 'gt': |
|
450 |
+ if LooseVersion(num.version) > LooseVersion(parseSpecObj.version): |
|
451 |
+ return num.version |
|
452 |
+ return "*" |
|
453 |
+ |
|
434 | 454 |
def _copyRPM(self, rpmFile, destDir): |
435 | 455 |
cmdUtils = CommandUtils() |
436 | 456 |
rpmName = os.path.basename(rpmFile) |
... | ... |
@@ -105,7 +105,7 @@ class Scheduler(object): |
105 | 105 |
listRequiredPackages = [] |
106 | 106 |
|
107 | 107 |
for pkg in listRequiredRPMPackages: |
108 |
- basePkg = SPECS.getData().getSpecName(pkg) |
|
108 |
+ basePkg = SPECS.getData().getSpecName(pkg.package) |
|
109 | 109 |
if basePkg not in listRequiredPackages: |
110 | 110 |
listRequiredPackages.append(basePkg) |
111 | 111 |
|
... | ... |
@@ -205,7 +205,7 @@ class Scheduler(object): |
205 | 205 |
listRequiredPackages = [] |
206 | 206 |
|
207 | 207 |
for pkg in listRequiredRPMPackages: |
208 |
- basePkg = SPECS.getData().getSpecName(pkg) |
|
208 |
+ basePkg = SPECS.getData().getSpecName(pkg.package) |
|
209 | 209 |
if basePkg not in listRequiredPackages: |
210 | 210 |
listRequiredPackages.append(basePkg) |
211 | 211 |
|
... | ... |
@@ -21,9 +21,6 @@ class SpecObject(object): |
21 | 21 |
self.checkBuildRequirePackages = [] |
22 | 22 |
self.installRequiresAllPackages = [] |
23 | 23 |
self.installRequiresPackages = {} |
24 |
- self.specParseObjBuildRequirePackages = [] |
|
25 |
- self.specParseObjInstallRequiresPackages=[] |
|
26 |
- self.specParseObjCheckBuildRequirePackages=[] |
|
27 | 24 |
self.specFile = "" |
28 | 25 |
self.listSources = [] |
29 | 26 |
self.checksums = {} |
... | ... |
@@ -50,9 +47,9 @@ class SpecObjectsUtils(object): |
50 | 50 |
specName = spec.getBasePackageName() |
51 | 51 |
specObj = SpecObject() |
52 | 52 |
specObj.name = specName |
53 |
- specObj.buildRequirePackages,specObj.specParseObjBuildRequirePackages = spec.getBuildRequiresAllPackages() |
|
54 |
- specObj.installRequiresAllPackages,specObj.specParseObjInstallRequiresPackages = spec.getRequiresAllPackages() |
|
55 |
- specObj.checkBuildRequirePackages,specObj.specParseObjCheckBuildRequirePackages = spec.getCheckBuildRequiresAllPackages() |
|
53 |
+ specObj.buildRequirePackages = spec.getBuildRequiresAllPackages() |
|
54 |
+ specObj.installRequiresAllPackages = spec.getRequiresAllPackages() |
|
55 |
+ specObj.checkBuildRequirePackages = spec.getCheckBuildRequiresAllPackages() |
|
56 | 56 |
specObj.listPackages = spec.getPackageNames() |
57 | 57 |
specObj.specFile = specFile |
58 | 58 |
specObj.version = spec.getVersion() |
... | ... |
@@ -110,22 +107,18 @@ class SpecObjectsUtils(object): |
110 | 110 |
specName = self.getSpecName(package) |
111 | 111 |
return self.mapSpecObjects[specName][index].checkBuildRequirePackages |
112 | 112 |
|
113 |
- def getBuildRequiresParseObjForPackage(self, package, index=0): |
|
114 |
- specName=self.getSpecName(package) |
|
115 |
- return self.mapSpecObjects[specName][index].specParseObjBuildRequirePackages |
|
116 |
- |
|
117 |
- def getRequiresParseObjForPackage(self, package, index=0): |
|
118 |
- specName=self.getSpecName(package) |
|
119 |
- return self.mapSpecObjects[specName][index].specParseObjInstallRequiresPackages |
|
120 |
- |
|
121 |
- def getCheckBuildRequiresParseObjForPackage(self, package, index=0): |
|
122 |
- specName=self.getSpecName(package) |
|
123 |
- return self.mapSpecObjects[specName][index].specParseObjCheckBuildRequirePackages |
|
124 |
- |
|
125 | 113 |
def getSpecObj(self, package): |
126 | 114 |
specName=self.getSpecName(package) |
127 | 115 |
return self.mapSpecObjects[specName] |
128 | 116 |
|
117 |
+ def getPkgNamesFromObj(self, objlist): |
|
118 |
+ listPkgName=[] |
|
119 |
+ listPkgNames=list(set(objlist)) |
|
120 |
+ for name in listPkgNames: |
|
121 |
+ listPkgName.append(name.package) |
|
122 |
+ listPkgName=list(set(listPkgName)) |
|
123 |
+ return listPkgName |
|
124 |
+ |
|
129 | 125 |
def getRelease(self, package, index=0): |
130 | 126 |
specName = self.getSpecName(package) |
131 | 127 |
return self.mapSpecObjects[specName][index].release |
... | ... |
@@ -225,11 +218,11 @@ class SpecObjectsUtils(object): |
225 | 225 |
self.logger.info(" ") |
226 | 226 |
self.logger.info(" ") |
227 | 227 |
self.logger.info("Build require packages") |
228 |
- self.logger.info(specObj.buildRequirePackages) |
|
228 |
+ self.logger.info(self.getPkgNamesFromObj(specObj.buildRequirePackages)) |
|
229 | 229 |
self.logger.info(" ") |
230 | 230 |
self.logger.info(" ") |
231 | 231 |
self.logger.info("install require packages") |
232 |
- self.logger.info(specObj.installRequiresAllPackages) |
|
232 |
+ self.logger.info(self.getPkgNamesFromObj(specObj.installRequiresAllPackages)) |
|
233 | 233 |
self.logger.info(" ") |
234 | 234 |
self.logger.info(specObj.installRequiresPackages) |
235 | 235 |
self.logger.info("security_hardening: " + specObj.securityHardening) |
... | ... |
@@ -265,6 +258,19 @@ class SPECS(object): |
265 | 265 |
java8version = spec.getVersion() |
266 | 266 |
constants.addMacro("JAVA8_VERSION", java8version) |
267 | 267 |
|
268 |
+ # adding openjre9 version rpm macro |
|
269 |
+ if platform.machine() == "x86_64": |
|
270 |
+ spec = Specutils(constants.specPath + "/openjdk9/openjdk9.spec") |
|
271 |
+ java9version = spec.getVersion() |
|
272 |
+ constants.addMacro("JAVA9_VERSION", java9version) |
|
273 |
+ |
|
274 |
+ |
|
275 |
+ # adding openjre10 version rpm macro |
|
276 |
+ if platform.machine() == "x86_64": |
|
277 |
+ spec = Specutils(constants.specPath + "/openjdk10/openjdk10.spec") |
|
278 |
+ java10version = spec.getVersion() |
|
279 |
+ constants.addMacro("JAVA10_VERSION", java10version) |
|
280 |
+ |
|
268 | 281 |
# adding kernelversion rpm macro |
269 | 282 |
spec = Specutils(constants.specPath + "/linux/linux.spec") |
270 | 283 |
kernelversion = spec.getVersion() |
... | ... |
@@ -92,52 +92,39 @@ class Specutils(object): |
92 | 92 |
|
93 | 93 |
def getRequiresAllPackages(self): |
94 | 94 |
dependentPackages = [] |
95 |
- specParseObjDependentPackages=[] |
|
96 | 95 |
for pkg in self.spec.packages.values(): |
97 | 96 |
for dpkg in pkg.requires: |
98 |
- dependentPackages.append(dpkg.package) |
|
99 |
- specParseObjDependentPackages.append(dpkg) |
|
100 |
- dependentPackages = list(set(dependentPackages)) |
|
101 |
- specParseObjDependentPackages = list(set(specParseObjDependentPackages)) |
|
102 |
- specParseObjDependentPackagesTemp = specParseObjDependentPackages[:] |
|
97 |
+ dependentPackages.append(dpkg) |
|
98 |
+ listDependentPackages = list(set(dependentPackages)) |
|
103 | 99 |
packageNames = self.getPackageNames() |
104 | 100 |
for pkgName in packageNames: |
105 |
- if pkgName in dependentPackages: |
|
106 |
- dependentPackages.remove(pkgName) |
|
107 |
- for objName in specParseObjDependentPackagesTemp: |
|
101 |
+ for objName in listDependentPackages: |
|
108 | 102 |
if objName.package == pkgName: |
109 |
- specParseObjDependentPackages.remove(objName) |
|
110 |
- return dependentPackages,specParseObjDependentPackages |
|
103 |
+ dependentPackages.remove(objName) |
|
104 |
+ dependentPackages = list(set(dependentPackages)) |
|
105 |
+ return dependentPackages |
|
111 | 106 |
|
112 | 107 |
def getBuildRequiresAllPackages(self): |
113 | 108 |
dependentPackages = [] |
114 |
- specParseObjDependentPackages=[] |
|
115 | 109 |
for pkg in self.spec.packages.values(): |
116 | 110 |
for dpkg in pkg.buildrequires: |
117 |
- dependentPackages.append(dpkg.package) |
|
118 |
- specParseObjDependentPackages.append(dpkg) |
|
119 |
- dependentPackages = list(set(dependentPackages)) |
|
120 |
- specParseObjDependentPackages = list(set(specParseObjDependentPackages)) |
|
121 |
- specParseObjDependentPackagesTemp = specParseObjDependentPackages[:] |
|
111 |
+ dependentPackages.append(dpkg) |
|
112 |
+ listDependentPackages = list(set(dependentPackages)) |
|
122 | 113 |
packageNames = self.getPackageNames() |
123 | 114 |
for pkgName in packageNames: |
124 |
- if pkgName in dependentPackages: |
|
125 |
- dependentPackages.remove(pkgName) |
|
126 |
- for objName in specParseObjDependentPackagesTemp: |
|
115 |
+ for objName in listDependentPackages: |
|
127 | 116 |
if objName.package == pkgName: |
128 |
- specParseObjDependentPackages.remove(objName) |
|
129 |
- return dependentPackages,specParseObjDependentPackages |
|
117 |
+ dependentPackages.remove(objName) |
|
118 |
+ dependentPackages = list(set(dependentPackages)) |
|
119 |
+ return dependentPackages |
|
130 | 120 |
|
131 | 121 |
def getCheckBuildRequiresAllPackages(self): |
132 | 122 |
dependentPackages = [] |
133 |
- specParseObjDependentPackages=[] |
|
134 | 123 |
for pkg in self.spec.packages.values(): |
135 | 124 |
for dpkg in pkg.checkbuildrequires: |
136 |
- dependentPackages.append(dpkg.package) |
|
137 |
- specParseObjDependentPackages.append(dpkg) |
|
125 |
+ dependentPackages.append(dpkg) |
|
138 | 126 |
dependentPackages = list(set(dependentPackages)) |
139 |
- specParseObjDependentPackages = list(set(specParseObjDependentPackages)) |
|
140 |
- return dependentPackages,specParseObjDependentPackages |
|
127 |
+ return dependentPackages |
|
141 | 128 |
|
142 | 129 |
def getRequires(self, pkgName): |
143 | 130 |
dependentPackages = [] |
... | ... |
@@ -196,8 +183,8 @@ def main(): |
196 | 196 |
print("requires {}".format(spec.getRequires('libtool'))) |
197 | 197 |
|
198 | 198 |
print("provides {}".format(spec.getProvides('libtool'))) |
199 |
- print("all-requires {}".format(spec.getRequiresAllPackages())) |
|
200 |
- print("all-build-requires {}".format(spec.getBuildRequiresAllPackages())) |
|
199 |
+ print("all-requires {}".format(spec.getPkgNamesFromObj(spec.getRequiresAllPackages()))) |
|
200 |
+ print("all-build-requires {}".format(spec.getPkgNamesFromObj(spec.getBuildRequiresAllPackages()))) |
|
201 | 201 |
|
202 | 202 |
if __name__ == '__main__': |
203 | 203 |
main() |
... | ... |
@@ -7,6 +7,7 @@ from ChrootUtils import ChrootUtils |
7 | 7 |
from Logger import Logger |
8 | 8 |
from PackageUtils import PackageUtils |
9 | 9 |
from constants import constants |
10 |
+from SpecData import SPECS |
|
10 | 11 |
|
11 | 12 |
class ToolChainUtils(object): |
12 | 13 |
|
... | ... |
@@ -112,7 +113,13 @@ class ToolChainUtils(object): |
112 | 112 |
raise e |
113 | 113 |
return pkgCount |
114 | 114 |
|
115 |
- def installToolChainRPMS(self, chrootID, packageName, logPath=None): |
|
115 |
+ def getListDependentPackageLineContent(self, index): |
|
116 |
+ listBuildRequiresPkgLineContent=SPECS.getData().getBuildRequiresForPackage(self.package, index) |
|
117 |
+ listBuildRequiresPkgLineContent.extend(SPECS.getData().getCheckBuildRequiresForPackage(self.package, index)) |
|
118 |
+ listBuildRequiresPkgLineContent=list(set(listBuildRequiresPkgLineContent)) |
|
119 |
+ return listBuildRequiresPkgLineContent |
|
120 |
+ |
|
121 |
+ def installToolChainRPMS(self, chrootID, packageName, logPath=None,index=0): |
|
116 | 122 |
if logPath is None: |
117 | 123 |
logPath = self.logPath |
118 | 124 |
cmdUtils = CommandUtils() |
... | ... |
@@ -120,16 +127,22 @@ class ToolChainUtils(object): |
120 | 120 |
self.logger.info("Installing Tool Chain RPMS.......") |
121 | 121 |
rpmFiles = "" |
122 | 122 |
packages = "" |
123 |
+ self.package=packageName |
|
124 |
+ listBuildRequiresPackageLineContent = self.getListDependentPackageLineContent(index) |
|
123 | 125 |
for package in constants.listToolChainRPMsToInstall: |
124 | 126 |
pkgUtils = PackageUtils(self.logName, self.logPath) |
125 | 127 |
rpmFile = None |
128 |
+ version = "*" |
|
129 |
+ for depPkg in listBuildRequiresPackageLineContent: |
|
130 |
+ if depPkg.package == package: |
|
131 |
+ version=pkgUtils._getProperVersion(package,depPkg) |
|
126 | 132 |
if constants.rpmCheck: |
127 |
- rpmFile = pkgUtils.findRPMFileForGivenPackage(package) |
|
133 |
+ rpmFile = pkgUtils.findRPMFileForGivenPackage(package, version) |
|
128 | 134 |
else: |
129 | 135 |
if (packageName not in constants.listToolChainRPMsToInstall or |
130 | 136 |
constants.listToolChainRPMsToInstall.index(packageName) > |
131 | 137 |
constants.listToolChainRPMsToInstall.index(package)): |
132 |
- rpmFile = pkgUtils.findRPMFileForGivenPackage(package) |
|
138 |
+ rpmFile = pkgUtils.findRPMFileForGivenPackage(package, version) |
|
133 | 139 |
if rpmFile is None: |
134 | 140 |
# sqlite-autoconf package was renamed, but it still published as sqlite-autoconf |
135 | 141 |
if (package == "sqlite") and (platform.machine() == "x86_64"): |