1 |
commit: cb3e22302fab7f9d4b5cb290e126458565ae2e34 |
2 |
Author: Matthew Thode <prometheanfire <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Apr 29 23:05:12 2019 +0000 |
4 |
Commit: Matthew Thode <prometheanfire <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Apr 29 23:05:27 2019 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cb3e2230 |
7 |
|
8 |
sys-cluster/neutron: 13.0.3 stable amd64/x86 with cleanup |
9 |
|
10 |
Bug: https://bugs.gentoo.org/680864 |
11 |
Package-Manager: Portage-2.3.62, Repoman-2.3.12 |
12 |
Signed-off-by: Matthew Thode <prometheanfire <AT> gentoo.org> |
13 |
|
14 |
sys-cluster/neutron/Manifest | 3 - |
15 |
sys-cluster/neutron/neutron-13.0.2-r1.ebuild | 231 --------------------------- |
16 |
sys-cluster/neutron/neutron-13.0.3.ebuild | 2 +- |
17 |
3 files changed, 1 insertion(+), 235 deletions(-) |
18 |
|
19 |
diff --git a/sys-cluster/neutron/Manifest b/sys-cluster/neutron/Manifest |
20 |
index 981839d6447..e868d8e6b55 100644 |
21 |
--- a/sys-cluster/neutron/Manifest |
22 |
+++ b/sys-cluster/neutron/Manifest |
23 |
@@ -1,12 +1,9 @@ |
24 |
-DIST neutron-13.0.2.tar.gz 10596419 BLAKE2B 5d18c5ada86c2676ecab1c0121834c04e5c12d2c81a42ddb9554d0bdc2b7d472b5941b7290dc701c22b21b69442d04a44768c9423ff5d317b51d8cd37aa076bf SHA512 4fb343039a6f6a6930d9770b02d58be732c57910e36739c8364bf8027a7ed55dafc40201ef8c349278310afc2ab6ee80fea562af94896e38891c35eaeb1faced |
25 |
DIST neutron-13.0.3.tar.gz 10599028 BLAKE2B 1eb3bcbf9986531d24d06de6dcf71707fb6599bf20d85814af42ce9feb24059a94592c2741fbcd71fad78ff829f93f811dbbe63aa2cdb3931b7499b5de2bcc2e SHA512 1c229256733bb1ea03ae3296607a7ee6c9004c03a6c57fdb9c13f006bbb337b39a57c4690e3a59a7d9e313d0f450c4b81f2100a64a14e5e5c81a188a8116e1e9 |
26 |
DIST neutron-14.0.1.tar.gz 10711126 BLAKE2B 43bf5ffeb46249207b8ab55cc01812e12ac719b680a867cbd374fdad50df2443eb44df16e97fff9845467284ac3dbaa3e0e1886703a868c7f26087d8e4e27a1a SHA512 9181d1a63550e205114f33e5626ff66f306d424505fb42cf21bcc8673e80b8e36b8a0bf33d3f2ec90343868a7e2e1f6b221831df64d1bec8e84a1d956da69392 |
27 |
-DIST neutron-configs-13.0.2.tar.gz 26109 BLAKE2B 5de3b90dcb6f8c86ce659b3ab439a79dd920aaf57b66a1e1b29f1b0d0fd433b222335a634dca01ce2b0e07acc3011ff6bf25983071dc0ff00e78ac847ee3fdd6 SHA512 498f41ffec6c14597e9785da9a36c2d906138215b34017aa93f56d051078682279bcce05288d2534ff7ab8208b8251c9f721256488f6850173210e41bc6dd51c |
28 |
DIST neutron-configs-13.0.3.tar.gz 26109 BLAKE2B 5de3b90dcb6f8c86ce659b3ab439a79dd920aaf57b66a1e1b29f1b0d0fd433b222335a634dca01ce2b0e07acc3011ff6bf25983071dc0ff00e78ac847ee3fdd6 SHA512 498f41ffec6c14597e9785da9a36c2d906138215b34017aa93f56d051078682279bcce05288d2534ff7ab8208b8251c9f721256488f6850173210e41bc6dd51c |
29 |
DIST neutron-configs-14.0.1.tar.gz 22973 BLAKE2B f454ccc2569ec1e586d88b410d3acbe557f25894c5f4d06558aa242f3d14971b791eca0d827f22400ef02db9899fdb2a501b1b745a531c0f6577318a28c58278 SHA512 dce4a1fd8880d9ffbde9014dffdbb67f69a798a834f9cc6ac6ccd34d520c21b468b16093b3c54fbb472ded501305775b0b31da3c62a860cf19c4486a30c1da2b |
30 |
DIST neutron-configs-2018.2.9999.tar.gz 26109 BLAKE2B 5de3b90dcb6f8c86ce659b3ab439a79dd920aaf57b66a1e1b29f1b0d0fd433b222335a634dca01ce2b0e07acc3011ff6bf25983071dc0ff00e78ac847ee3fdd6 SHA512 498f41ffec6c14597e9785da9a36c2d906138215b34017aa93f56d051078682279bcce05288d2534ff7ab8208b8251c9f721256488f6850173210e41bc6dd51c |
31 |
DIST neutron-configs-2019.1.9999.tar.gz 22973 BLAKE2B f454ccc2569ec1e586d88b410d3acbe557f25894c5f4d06558aa242f3d14971b791eca0d827f22400ef02db9899fdb2a501b1b745a531c0f6577318a28c58278 SHA512 dce4a1fd8880d9ffbde9014dffdbb67f69a798a834f9cc6ac6ccd34d520c21b468b16093b3c54fbb472ded501305775b0b31da3c62a860cf19c4486a30c1da2b |
32 |
-DIST neutron-ml2-plugins-13.0.2.tar.gz 7068 BLAKE2B fa27bd84c1d67bd36c7c7e47b6e8f98dd100e09c7a3bfa7aec615ed24e3dadf240f8ef44874c868ff92f79452afbf4a21fba46b1b9aec191bad53a62767b1861 SHA512 add4697c78c592dfe5ebadd3b0cf9b9c2a2c33bd05130a8e1422abf7456d8a0cc926a0d46f6b49ceee87017304d7c9c3486c975086e46f178e3bc142844f836f |
33 |
DIST neutron-ml2-plugins-13.0.3.tar.gz 7068 BLAKE2B fa27bd84c1d67bd36c7c7e47b6e8f98dd100e09c7a3bfa7aec615ed24e3dadf240f8ef44874c868ff92f79452afbf4a21fba46b1b9aec191bad53a62767b1861 SHA512 add4697c78c592dfe5ebadd3b0cf9b9c2a2c33bd05130a8e1422abf7456d8a0cc926a0d46f6b49ceee87017304d7c9c3486c975086e46f178e3bc142844f836f |
34 |
DIST neutron-ml2-plugins-14.0.1.tar.gz 8642 BLAKE2B 71d945504f3e2185bffddb94956f019fa38bdd4a8782e936de2b8753e2a934374b6f0ed11ea0cdc9d454a80544b2e225e70ff987acbb971d756ae940cf4d7d16 SHA512 399e3f0cd8daaaf18e36d47aa105cf71d70e3ed5f707093e2292e480e3a0868818ee0ee68ca7a8eeb8e28cec51721e2508ed75815f04a415eb42dfe56708fce2 |
35 |
DIST neutron-ml2-plugins-2018.2.9999.tar.gz 7068 BLAKE2B fa27bd84c1d67bd36c7c7e47b6e8f98dd100e09c7a3bfa7aec615ed24e3dadf240f8ef44874c868ff92f79452afbf4a21fba46b1b9aec191bad53a62767b1861 SHA512 add4697c78c592dfe5ebadd3b0cf9b9c2a2c33bd05130a8e1422abf7456d8a0cc926a0d46f6b49ceee87017304d7c9c3486c975086e46f178e3bc142844f836f |
36 |
|
37 |
diff --git a/sys-cluster/neutron/neutron-13.0.2-r1.ebuild b/sys-cluster/neutron/neutron-13.0.2-r1.ebuild |
38 |
deleted file mode 100644 |
39 |
index 22f5e34848b..00000000000 |
40 |
--- a/sys-cluster/neutron/neutron-13.0.2-r1.ebuild |
41 |
+++ /dev/null |
42 |
@@ -1,231 +0,0 @@ |
43 |
-# Copyright 1999-2018 Gentoo Authors |
44 |
-# Distributed under the terms of the GNU General Public License v2 |
45 |
- |
46 |
-EAPI=6 |
47 |
-PYTHON_COMPAT=( python2_7 python3_{5,6} ) |
48 |
-# still no 34 :( https://bugs.launchpad.net/neutron/+bug/1630439 |
49 |
- |
50 |
-inherit distutils-r1 linux-info user |
51 |
- |
52 |
-DESCRIPTION="A virtual network service for Openstack" |
53 |
-HOMEPAGE="https://launchpad.net/neutron" |
54 |
-if [[ ${PV} == *9999 ]];then |
55 |
- inherit git-r3 |
56 |
- SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/rocky/configs.tar.gz -> neutron-configs-${PV}.tar.gz |
57 |
- https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/rocky/ml2_plugins.tar.gz -> neutron-ml2-plugins-${PV}.tar.gz" |
58 |
- EGIT_REPO_URI="https://github.com/openstack/neutron.git" |
59 |
- EGIT_BRANCH="stable/rocky" |
60 |
-else |
61 |
- SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/rocky/configs.tar.gz -> neutron-configs-${PV}.tar.gz |
62 |
- https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/rocky/ml2_plugins.tar.gz -> neutron-ml2-plugins-${PV}.tar.gz |
63 |
- https://tarballs.openstack.org/${PN}/${P}.tar.gz" |
64 |
- KEYWORDS="amd64 ~arm64 x86" |
65 |
-fi |
66 |
- |
67 |
-LICENSE="Apache-2.0" |
68 |
-SLOT="0" |
69 |
-IUSE="compute-only dhcp haproxy ipv6 l3 metadata openvswitch linuxbridge server sqlite mysql postgres" |
70 |
-REQUIRED_USE="!compute-only? ( || ( mysql postgres sqlite ) ) |
71 |
- compute-only? ( !mysql !postgres !sqlite !dhcp !l3 !metadata !server |
72 |
- || ( openvswitch linuxbridge ) )" |
73 |
- |
74 |
-CDEPEND=">=dev-python/pbr-2.0.0[${PYTHON_USEDEP}] |
75 |
- !~dev-python/pbr-2.1.0" |
76 |
-DEPEND=" |
77 |
- dev-python/setuptools[${PYTHON_USEDEP}] |
78 |
- ${CDEPEND} |
79 |
- app-admin/sudo" |
80 |
- |
81 |
-RDEPEND=" |
82 |
- ${CDEPEND} |
83 |
- >=dev-python/paste-2.0.2[${PYTHON_USEDEP}] |
84 |
- >=dev-python/pastedeploy-1.5.0-r1[${PYTHON_USEDEP}] |
85 |
- >=dev-python/routes-2.3.1[${PYTHON_USEDEP}] |
86 |
- >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}] |
87 |
- >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}] |
88 |
- !~dev-python/eventlet-0.20.1[${PYTHON_USEDEP}] |
89 |
- >=dev-python/pecan-1.1.1[${PYTHON_USEDEP}] |
90 |
- !~dev-python/pecan-1.2.0[${PYTHON_USEDEP}] |
91 |
- >=dev-python/httplib2-0.9.1[${PYTHON_USEDEP}] |
92 |
- >=dev-python/jinja-2.10[${PYTHON_USEDEP}] |
93 |
- >=dev-python/netaddr-0.7.18[${PYTHON_USEDEP}] |
94 |
- >=dev-python/netifaces-0.10.4[${PYTHON_USEDEP}] |
95 |
- >=dev-python/neutron-lib-1.18.0[${PYTHON_USEDEP}] |
96 |
- >=dev-python/python-neutronclient-6.3.0[${PYTHON_USEDEP}] |
97 |
- >=dev-python/tenacity-3.2.1[${PYTHON_USEDEP}] |
98 |
- >=dev-python/ryu-4.24[${PYTHON_USEDEP}] |
99 |
- compute-only? ( |
100 |
- >=dev-python/sqlalchemy-1.2.0[${PYTHON_USEDEP}] |
101 |
- ) |
102 |
- sqlite? ( |
103 |
- >=dev-python/sqlalchemy-1.2.0[sqlite,${PYTHON_USEDEP}] |
104 |
- ) |
105 |
- mysql? ( |
106 |
- >=dev-python/pymysql-0.7.6[${PYTHON_USEDEP}] |
107 |
- !~dev-python/pymysql-0.7.7[${PYTHON_USEDEP}] |
108 |
- >=dev-python/sqlalchemy-1.2.0[${PYTHON_USEDEP}] |
109 |
- ) |
110 |
- postgres? ( |
111 |
- >=dev-python/psycopg-2.5.0[${PYTHON_USEDEP}] |
112 |
- >=dev-python/sqlalchemy-1.2.0[${PYTHON_USEDEP}] |
113 |
- ) |
114 |
- >=dev-python/webob-1.7.1[${PYTHON_USEDEP}] |
115 |
- >=dev-python/keystoneauth-3.4.0[${PYTHON_USEDEP}] |
116 |
- >=dev-python/alembic-0.8.10[${PYTHON_USEDEP}] |
117 |
- >=dev-python/six-1.10.0[${PYTHON_USEDEP}] |
118 |
- >=dev-python/stevedore-1.20.1[${PYTHON_USEDEP}] |
119 |
- >=dev-python/oslo-cache-1.26.0[${PYTHON_USEDEP}] |
120 |
- >=dev-python/oslo-concurrency-3.25.0[${PYTHON_USEDEP}] |
121 |
- >=dev-python/oslo-config-5.1.0[${PYTHON_USEDEP}] |
122 |
- >=dev-python/oslo-context-2.19.2[${PYTHON_USEDEP}] |
123 |
- >=dev-python/oslo-db-4.27.0[${PYTHON_USEDEP}] |
124 |
- >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}] |
125 |
- >=dev-python/oslo-log-3.36.0[${PYTHON_USEDEP}] |
126 |
- >=dev-python/oslo-messaging-5.29.0[${PYTHON_USEDEP}] |
127 |
- >=dev-python/oslo-middleware-3.31.0[${PYTHON_USEDEP}] |
128 |
- >=dev-python/oslo-policy-1.30.0[${PYTHON_USEDEP}] |
129 |
- >=dev-python/oslo-privsep-1.23.0[${PYTHON_USEDEP}] |
130 |
- >=dev-python/oslo-reports-1.18.0[${PYTHON_USEDEP}] |
131 |
- >=dev-python/oslo-rootwrap-5.8.0[${PYTHON_USEDEP}] |
132 |
- >=dev-python/oslo-serialization-1.18.0[${PYTHON_USEDEP}] |
133 |
- !~dev-python/oslo-serialization-2.19.1[${PYTHON_USEDEP}] |
134 |
- >=dev-python/oslo-service-1.24.0[${PYTHON_USEDEP}] |
135 |
- !~dev-python/oslo-service-1.28.1[${PYTHON_USEDEP}] |
136 |
- >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}] |
137 |
- >=dev-python/oslo-versionedobjects-1.31.2[${PYTHON_USEDEP}] |
138 |
- >=dev-python/osprofiler-1.4.0[${PYTHON_USEDEP}] |
139 |
- >=dev-python/ovs-2.8.0[${PYTHON_USEDEP}] |
140 |
- >=dev-python/ovsdbapp-0.9.1[${PYTHON_USEDEP}] |
141 |
- >=dev-python/psutil-3.2.2[${PYTHON_USEDEP}] |
142 |
- >=dev-python/pyroute2-0.4.21[${PYTHON_USEDEP}] |
143 |
- >=dev-python/weakrefmethod-1.0.2[$(python_gen_usedep 'python2_7')] |
144 |
- >=dev-python/python-novaclient-9.1.0[${PYTHON_USEDEP}] |
145 |
- >=dev-python/python-designateclient-2.7.0[${PYTHON_USEDEP}] |
146 |
- >=dev-python/os-xenapi-0.3.1[${PYTHON_USEDEP}] |
147 |
- dev-python/pyudev[${PYTHON_USEDEP}] |
148 |
- sys-apps/iproute2 |
149 |
- net-misc/iputils[arping] |
150 |
- net-misc/bridge-utils |
151 |
- net-firewall/ipset |
152 |
- net-firewall/iptables |
153 |
- net-firewall/ebtables |
154 |
- net-firewall/conntrack-tools |
155 |
- haproxy? ( net-proxy/haproxy ) |
156 |
- openvswitch? ( net-misc/openvswitch ) |
157 |
- ipv6? ( |
158 |
- net-misc/radvd |
159 |
- >=net-misc/dibbler-1.0.1 |
160 |
- ) |
161 |
- dhcp? ( net-dns/dnsmasq[dhcp-tools] )" |
162 |
- |
163 |
-#PATCHES=( |
164 |
-#) |
165 |
- |
166 |
-pkg_pretend() { |
167 |
- linux-info_pkg_setup |
168 |
- CONFIG_CHECK_MODULES="VLAN_8021Q IP6_NF_FILTER IP6_NF_IPTABLES IP_NF_TARGET_REJECT \ |
169 |
- IP_NF_MANGLE IP_NF_TARGET_MASQUERADE NF_NAT_IPV4 NF_CONNTRACK_IPV4 NF_DEFRAG_IPV4 \ |
170 |
- NF_NAT_IPV4 NF_NAT NF_CONNTRACK IP_NF_FILTER IP_NF_IPTABLES NETFILTER_XTABLES" |
171 |
- if linux_config_exists; then |
172 |
- for module in ${CONFIG_CHECK_MODULES}; do |
173 |
- linux_chkconfig_present ${module} || ewarn "${module} needs to be enabled in kernel" |
174 |
- done |
175 |
- fi |
176 |
-} |
177 |
- |
178 |
-pkg_setup() { |
179 |
- enewgroup neutron |
180 |
- enewuser neutron -1 -1 /var/lib/neutron neutron |
181 |
-} |
182 |
- |
183 |
-pkg_config() { |
184 |
- fperms 0700 /var/log/neutron |
185 |
- fowners neutron:neutron /var/log neutron |
186 |
-} |
187 |
- |
188 |
-src_prepare() { |
189 |
- sed -i '/^hacking/d' test-requirements.txt || die |
190 |
- # it's /bin/ip not /sbin/ip |
191 |
- sed -i 's/sbin\/ip\,/bin\/ip\,/g' etc/neutron/rootwrap.d/* || die |
192 |
- distutils-r1_python_prepare_all |
193 |
-} |
194 |
- |
195 |
-python_install_all() { |
196 |
- distutils-r1_python_install_all |
197 |
- if use server; then |
198 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-server" |
199 |
- newconfd "${FILESDIR}/neutron-server.confd" "neutron-server" |
200 |
- dosym /etc/neutron/plugin.ini /etc/neutron/plugins/ml2/ml2_conf.ini |
201 |
- fi |
202 |
- if use dhcp; then |
203 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-dhcp-agent" |
204 |
- newconfd "${FILESDIR}/neutron-dhcp-agent.confd" "neutron-dhcp-agent" |
205 |
- fi |
206 |
- if use l3; then |
207 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-l3-agent" |
208 |
- newconfd "${FILESDIR}/neutron-l3-agent.confd" "neutron-l3-agent" |
209 |
- fi |
210 |
- if use metadata; then |
211 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-metadata-agent" |
212 |
- newconfd "${FILESDIR}/neutron-metadata-agent.confd" "neutron-metadata-agent" |
213 |
- fi |
214 |
- if use openvswitch; then |
215 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-openvswitch-agent" |
216 |
- newconfd "${FILESDIR}/neutron-openvswitch-agent.confd" "neutron-openvswitch-agent" |
217 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-ovs-cleanup" |
218 |
- newconfd "${FILESDIR}/neutron-openvswitch-agent.confd" "neutron-ovs-cleanup" |
219 |
- fi |
220 |
- if use linuxbridge; then |
221 |
- newinitd "${FILESDIR}/neutron.initd" "neutron-linuxbridge-agent" |
222 |
- newconfd "${FILESDIR}/neutron-linuxbridge-agent.confd" "neutron-linuxbridge-agent" |
223 |
- fi |
224 |
- diropts -m 755 -o neutron -g neutron |
225 |
- dodir /var/log/neutron /var/lib/neutron |
226 |
- keepdir /etc/neutron |
227 |
- insinto /etc/neutron |
228 |
- insopts -m 0640 -o neutron -g neutron |
229 |
- |
230 |
- doins etc/* |
231 |
- # stupid renames |
232 |
- insinto /etc/neutron |
233 |
- doins -r "etc/neutron/plugins" |
234 |
- insopts -m 0640 -o root -g root |
235 |
- doins "etc/rootwrap.conf" |
236 |
- doins -r "etc/neutron/rootwrap.d" |
237 |
- |
238 |
- #add sudoers definitions for user neutron |
239 |
- insinto /etc/sudoers.d/ |
240 |
- insopts -m 0440 -o root -g root |
241 |
- newins "${FILESDIR}/neutron.sudoersd" neutron |
242 |
- |
243 |
- # add generated configs |
244 |
- cd "${D}/etc/neutron" || die |
245 |
- unpack "neutron-configs-${PV}.tar.gz" |
246 |
- cd "${D}/etc/neutron/plugins/ml2" || die |
247 |
- unpack "neutron-ml2-plugins-${PV}.tar.gz" |
248 |
- |
249 |
- # correcting perms |
250 |
- fowners neutron:neutron -R "/etc/neutron" |
251 |
- fperms o-rwx -R "/etc/neutron/" |
252 |
- |
253 |
- #remove superfluous stuff |
254 |
- rm -R "${D}/usr/etc/" |
255 |
-} |
256 |
- |
257 |
-python_install() { |
258 |
- distutils-r1_python_install |
259 |
- # copy migration conf file (not coppied on install via setup.py script) |
260 |
- insopts -m 0644 |
261 |
- insinto "/$(python_get_sitedir)/neutron/db/migration/alembic_migrations/" |
262 |
- doins -r "neutron/db/migration/alembic_migrations/versions" |
263 |
-} |
264 |
- |
265 |
-pkg_postinst() { |
266 |
- elog |
267 |
- elog "neutron-server's conf.d file may need updating to include additional ini files" |
268 |
- elog "We currently assume the ml2 plugin will be used but do not make assumptions" |
269 |
- elog "on if you will use openvswitch or linuxbridge (or something else)" |
270 |
- elog |
271 |
- elog "Other conf.d files may need updating too, but should be good for the default use case" |
272 |
- elog |
273 |
-} |
274 |
|
275 |
diff --git a/sys-cluster/neutron/neutron-13.0.3.ebuild b/sys-cluster/neutron/neutron-13.0.3.ebuild |
276 |
index 7b0f728c6c0..7379b294ab0 100644 |
277 |
--- a/sys-cluster/neutron/neutron-13.0.3.ebuild |
278 |
+++ b/sys-cluster/neutron/neutron-13.0.3.ebuild |
279 |
@@ -19,7 +19,7 @@ else |
280 |
SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/rocky/configs.tar.gz -> neutron-configs-${PV}.tar.gz |
281 |
https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/rocky/ml2_plugins.tar.gz -> neutron-ml2-plugins-${PV}.tar.gz |
282 |
https://tarballs.openstack.org/${PN}/${P}.tar.gz" |
283 |
- KEYWORDS="~amd64 ~arm64 ~x86" |
284 |
+ KEYWORDS="amd64 ~arm64 x86" |
285 |
fi |
286 |
|
287 |
LICENSE="Apache-2.0" |