summaryrefslogtreecommitdiffstats
path: root/recipes-networking/openvswitch
diff options
context:
space:
mode:
authorMark Asselstine <mark.asselstine@windriver.com>2018-05-30 11:47:10 -0400
committerBruce Ashfield <bruce.ashfield@windriver.com>2018-06-03 23:26:54 -0400
commit1fd1ff3720140baa3680d795f6d97597e5113e90 (patch)
tree41e63c2363391e512dae7cd1c8777db51ad928a1 /recipes-networking/openvswitch
parent1a5853f87cfc0b16d992ed222bbb0ff6066b2617 (diff)
downloadmeta-virtualization-1fd1ff3720140baa3680d795f6d97597e5113e90.tar.gz
openvswitch: uprev to v2.9.2
This brings us up to date with the latest upstream release. I suspect there will be an upcoming release to add compatibility with DPDK v18.05 (the DPDK release is due out any day now) but getting this fairly large release bump out of the way first will facilitate any upcoming uprev. We are able to drop they python3 patches as they have been merged upstream. Some scripts which needed to be updated to use python3 disappeared, new ones appeared so the 'use python3' patches are updated accordingly. Beyond this the biggest change is related to the systemd unit files, the ovsdb-server has been updated upstream to be generated on the fly via the spec file, we mimic this in the install_prepend. We also add the various configuration files which the unit files source before launching the services. As usual this was tested against out typical usecases including usage in meta-overc. As well the ptests have been run and the results are no better or worse. Previous version: ERROR: 2332 tests were run, 21 failed unexpectedly. 3 tests were skipped. New version: ERROR: 2527 tests were run, 29 failed unexpectedly. 3 tests were skipped. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Diffstat (limited to 'recipes-networking/openvswitch')
-rw-r--r--recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch298
-rw-r--r--recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch15
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch8
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-7e614671cba3c4e338d1c5003b74a10047d7a8eb.patch110
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch45
-rw-r--r--recipes-networking/openvswitch/openvswitch.inc18
-rw-r--r--recipes-networking/openvswitch/openvswitch_git.bb22
7 files changed, 443 insertions, 73 deletions
diff --git a/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch b/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
index deff10b0..0dc6b11b 100644
--- a/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
+++ b/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
@@ -1,4 +1,4 @@
1From f21a0490555d5fe8f5a9ce982defa666a64151c0 Mon Sep 17 00:00:00 2001 1From a0a2d829642e916bd5d1c498a3e6f3641ed717a0 Mon Sep 17 00:00:00 2001
2From: Mark Asselstine <mark.asselstine@windriver.com> 2From: Mark Asselstine <mark.asselstine@windriver.com>
3Date: Fri, 13 Jan 2017 16:12:55 -0500 3Date: Fri, 13 Jan 2017 16:12:55 -0500
4Subject: [PATCH] python: make remaining scripts use /usr/bin/env 4Subject: [PATCH] python: make remaining scripts use /usr/bin/env
@@ -12,24 +12,43 @@ PYTHON. To make this function smoothly all installed scripts should
12make use of /usr/bin/env to increase the chances of finding python. 12make use of /usr/bin/env to increase the chances of finding python.
13 13
14Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> 14Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
15
16--- 15---
17 build-aux/check-structs | 2 +- 16 build-aux/check-structs | 2 +-
18 build-aux/extract-ofp-actions | 2 +- 17 build-aux/dpdkstrip.py | 2 +-
19 build-aux/extract-ofp-errors | 2 +- 18 build-aux/extract-ofp-actions | 2 +-
20 build-aux/extract-ofp-fields | 2 +- 19 build-aux/extract-ofp-errors | 2 +-
21 build-aux/extract-ofp-msgs | 2 +- 20 build-aux/extract-ofp-fields | 2 +-
22 build-aux/xml2nroff | 2 +- 21 build-aux/extract-ofp-msgs | 2 +-
23 ovn/utilities/ovn-docker-overlay-driver | 2 +- 22 build-aux/sodepends.py | 2 +-
24 ovn/utilities/ovn-docker-underlay-driver | 2 +- 23 build-aux/soexpand.py | 2 +-
25 ovsdb/ovsdb-doc | 2 +- 24 build-aux/text2c | 2 +-
26 ovsdb/ovsdb-dot.in | 2 +- 25 build-aux/xml2nroff | 2 +-
27 ovsdb/ovsdb-idlc.in | 2 +- 26 ovn/utilities/ovn-detrace.in | 2 +-
28 utilities/bugtool/ovs-bugtool.in | 2 +- 27 ovn/utilities/ovn-docker-overlay-driver.in | 2 +-
29 12 files changed, 12 insertions(+), 12 deletions(-) 28 ovn/utilities/ovn-docker-underlay-driver.in | 2 +-
29 ovsdb/dot2pic | 2 +-
30 ovsdb/ovsdb-doc | 2 +-
31 ovsdb/ovsdb-dot.in | 2 +-
32 ovsdb/ovsdb-idlc.in | 2 +-
33 python/build/soutil.py | 2 +-
34 tests/flowgen.py | 2 +-
35 tests/ovsdb-monitor-sort.py | 2 +-
36 tests/uuidfilt.py | 2 +-
37 utilities/bugtool/ovs-bugtool.in | 2 +-
38 utilities/ovs-check-dead-ifs.in | 2 +-
39 utilities/ovs-dpctl-top.in | 2 +-
40 utilities/ovs-l3ping.in | 2 +-
41 utilities/ovs-parse-backtrace.in | 2 +-
42 utilities/ovs-pcap.in | 2 +-
43 utilities/ovs-tcpdump.in | 2 +-
44 utilities/ovs-tcpundump.in | 2 +-
45 utilities/ovs-test.in | 2 +-
46 utilities/ovs-vlan-test.in | 2 +-
47 vtep/ovs-vtep.in | 2 +-
48 32 files changed, 32 insertions(+), 32 deletions(-)
30 49
31diff --git a/build-aux/check-structs b/build-aux/check-structs 50diff --git a/build-aux/check-structs b/build-aux/check-structs
32index f79f235..5129b72 100755 51index 37ffa06..eb44c91 100755
33--- a/build-aux/check-structs 52--- a/build-aux/check-structs
34+++ b/build-aux/check-structs 53+++ b/build-aux/check-structs
35@@ -1,4 +1,4 @@ 54@@ -1,4 +1,4 @@
@@ -38,8 +57,18 @@ index f79f235..5129b72 100755
38 57
39 import os.path 58 import os.path
40 import sys 59 import sys
60diff --git a/build-aux/dpdkstrip.py b/build-aux/dpdkstrip.py
61index 48c7f06..b8b8ba9 100755
62--- a/build-aux/dpdkstrip.py
63+++ b/build-aux/dpdkstrip.py
64@@ -1,4 +1,4 @@
65-#! /usr/bin/env python
66+#! /usr/bin/env python3
67 # Copyright (c) 2017 Red Hat, Inc.
68 #
69 # Licensed under the Apache License, Version 2.0 (the "License");
41diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions 70diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions
42index 0062ab8..ee8c4ff 100755 71index bd7131f..4d05ef9 100755
43--- a/build-aux/extract-ofp-actions 72--- a/build-aux/extract-ofp-actions
44+++ b/build-aux/extract-ofp-actions 73+++ b/build-aux/extract-ofp-actions
45@@ -1,4 +1,4 @@ 74@@ -1,4 +1,4 @@
@@ -49,7 +78,7 @@ index 0062ab8..ee8c4ff 100755
49 import sys 78 import sys
50 import os.path 79 import os.path
51diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors 80diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors
52index 2312b76..e36444e 100755 81index 71ae0bd..58ba006 100755
53--- a/build-aux/extract-ofp-errors 82--- a/build-aux/extract-ofp-errors
54+++ b/build-aux/extract-ofp-errors 83+++ b/build-aux/extract-ofp-errors
55@@ -1,4 +1,4 @@ 84@@ -1,4 +1,4 @@
@@ -59,7 +88,7 @@ index 2312b76..e36444e 100755
59 import sys 88 import sys
60 import os.path 89 import os.path
61diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields 90diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
62index 498b887..c248e76 100755 91index 184b75e..cf339f8 100755
63--- a/build-aux/extract-ofp-fields 92--- a/build-aux/extract-ofp-fields
64+++ b/build-aux/extract-ofp-fields 93+++ b/build-aux/extract-ofp-fields
65@@ -1,4 +1,4 @@ 94@@ -1,4 +1,4 @@
@@ -69,7 +98,7 @@ index 498b887..c248e76 100755
69 import getopt 98 import getopt
70 import sys 99 import sys
71diff --git a/build-aux/extract-ofp-msgs b/build-aux/extract-ofp-msgs 100diff --git a/build-aux/extract-ofp-msgs b/build-aux/extract-ofp-msgs
72index 1813638..c2a91f9 100755 101index a67e870..92c4bda 100755
73--- a/build-aux/extract-ofp-msgs 102--- a/build-aux/extract-ofp-msgs
74+++ b/build-aux/extract-ofp-msgs 103+++ b/build-aux/extract-ofp-msgs
75@@ -1,4 +1,4 @@ 104@@ -1,4 +1,4 @@
@@ -78,6 +107,36 @@ index 1813638..c2a91f9 100755
78 107
79 import sys 108 import sys
80 import os.path 109 import os.path
110diff --git a/build-aux/sodepends.py b/build-aux/sodepends.py
111index 90cfaa0..45812bc 100755
112--- a/build-aux/sodepends.py
113+++ b/build-aux/sodepends.py
114@@ -1,4 +1,4 @@
115-#! /usr/bin/env python
116+#! /usr/bin/env python3
117
118 # Copyright (c) 2008, 2011, 2017 Nicira, Inc.
119 #
120diff --git a/build-aux/soexpand.py b/build-aux/soexpand.py
121index 53ca640..00adcf4 100755
122--- a/build-aux/soexpand.py
123+++ b/build-aux/soexpand.py
124@@ -1,4 +1,4 @@
125-#! /usr/bin/env python
126+#! /usr/bin/env python3
127
128 # Copyright (c) 2008, 2017 Nicira, Inc.
129 #
130diff --git a/build-aux/text2c b/build-aux/text2c
131index cb1f256..ab7910e 100755
132--- a/build-aux/text2c
133+++ b/build-aux/text2c
134@@ -1,4 +1,4 @@
135-#! /usr/bin/python
136+#! /usr/bin/env python3
137
138 import re
139 import sys
81diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff 140diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff
82index bd4e879..db45c56 100755 141index bd4e879..db45c56 100755
83--- a/build-aux/xml2nroff 142--- a/build-aux/xml2nroff
@@ -88,28 +147,48 @@ index bd4e879..db45c56 100755
88 147
89 # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc. 148 # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
90 # 149 #
91diff --git a/ovn/utilities/ovn-docker-overlay-driver b/ovn/utilities/ovn-docker-overlay-driver 150diff --git a/ovn/utilities/ovn-detrace.in b/ovn/utilities/ovn-detrace.in
92index 52de3db..3b1fa45 100755 151index e2e5b4c..5549219 100755
93--- a/ovn/utilities/ovn-docker-overlay-driver 152--- a/ovn/utilities/ovn-detrace.in
94+++ b/ovn/utilities/ovn-docker-overlay-driver 153+++ b/ovn/utilities/ovn-detrace.in
95@@ -1,4 +1,4 @@ 154@@ -1,4 +1,4 @@
96-#! /usr/bin/python 155-#! @PYTHON@
97+#! /usr/bin/env python3 156+#!/usr/bin/env @PYTHON@
157 #
158 # Copyright (c) 2017 eBay Inc.
159 #
160diff --git a/ovn/utilities/ovn-docker-overlay-driver.in b/ovn/utilities/ovn-docker-overlay-driver.in
161index 65edfcd..895426b 100755
162--- a/ovn/utilities/ovn-docker-overlay-driver.in
163+++ b/ovn/utilities/ovn-docker-overlay-driver.in
164@@ -1,4 +1,4 @@
165-#! @PYTHON@
166+#!/usr/bin/env @PYTHON@
98 # Copyright (C) 2015 Nicira, Inc. 167 # Copyright (C) 2015 Nicira, Inc.
99 # 168 #
100 # Licensed under the Apache License, Version 2.0 (the "License"); 169 # Licensed under the Apache License, Version 2.0 (the "License");
101diff --git a/ovn/utilities/ovn-docker-underlay-driver b/ovn/utilities/ovn-docker-underlay-driver 170diff --git a/ovn/utilities/ovn-docker-underlay-driver.in b/ovn/utilities/ovn-docker-underlay-driver.in
102index 2c9c4b6..551e7a1 100755 171index d91ce9f..e0c8db6 100755
103--- a/ovn/utilities/ovn-docker-underlay-driver 172--- a/ovn/utilities/ovn-docker-underlay-driver.in
104+++ b/ovn/utilities/ovn-docker-underlay-driver 173+++ b/ovn/utilities/ovn-docker-underlay-driver.in
105@@ -1,4 +1,4 @@ 174@@ -1,4 +1,4 @@
106-#! /usr/bin/python 175-#! @PYTHON@
107+#! /usr/bin/env python3 176+#!/usr/bin/env @PYTHON@
108 # Copyright (C) 2015 Nicira, Inc. 177 # Copyright (C) 2015 Nicira, Inc.
109 # 178 #
110 # Licensed under the Apache License, Version 2.0 (the "License"); 179 # Licensed under the Apache License, Version 2.0 (the "License");
180diff --git a/ovsdb/dot2pic b/ovsdb/dot2pic
181index de67261..174e723 100755
182--- a/ovsdb/dot2pic
183+++ b/ovsdb/dot2pic
184@@ -1,4 +1,4 @@
185-#! /usr/bin/env python
186+#! /usr/bin/env python3
187
188 # Copyright (c) 2009, 2010, 2011, 2013, 2017 Nicira, Inc.
189 #
111diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc 190diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
112index 5cf26ee..bdf2dcc 100755 191index 406c293..d55c6e6 100755
113--- a/ovsdb/ovsdb-doc 192--- a/ovsdb/ovsdb-doc
114+++ b/ovsdb/ovsdb-doc 193+++ b/ovsdb/ovsdb-doc
115@@ -1,4 +1,4 @@ 194@@ -1,4 +1,4 @@
@@ -119,7 +198,7 @@ index 5cf26ee..bdf2dcc 100755
119 # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc. 198 # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
120 # 199 #
121diff --git a/ovsdb/ovsdb-dot.in b/ovsdb/ovsdb-dot.in 200diff --git a/ovsdb/ovsdb-dot.in b/ovsdb/ovsdb-dot.in
122index 134ce22..893c408 100755 201index 8eea617..38ba33a 100755
123--- a/ovsdb/ovsdb-dot.in 202--- a/ovsdb/ovsdb-dot.in
124+++ b/ovsdb/ovsdb-dot.in 203+++ b/ovsdb/ovsdb-dot.in
125@@ -1,4 +1,4 @@ 204@@ -1,4 +1,4 @@
@@ -129,17 +208,57 @@ index 134ce22..893c408 100755
129 from datetime import date 208 from datetime import date
130 import ovs.db.error 209 import ovs.db.error
131diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in 210diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
132index 721ab50..bfbcf23 100755 211index 1ea2115..4ecb2e2 100755
133--- a/ovsdb/ovsdb-idlc.in 212--- a/ovsdb/ovsdb-idlc.in
134+++ b/ovsdb/ovsdb-idlc.in 213+++ b/ovsdb/ovsdb-idlc.in
135@@ -1,4 +1,4 @@ 214@@ -1,4 +1,4 @@
136-#! @PYTHON@ 215-#! @PYTHON@
137+#! /usr/bin/env @PYTHON@ 216+#!/usr/bin/env @PYTHON@
138 217
218 from __future__ import print_function
139 import getopt 219 import getopt
140 import os 220diff --git a/python/build/soutil.py b/python/build/soutil.py
221index b8027af..8f52803 100755
222--- a/python/build/soutil.py
223+++ b/python/build/soutil.py
224@@ -1,4 +1,4 @@
225-#! /usr/bin/env python
226+#! /usr/bin/env python3
227
228 # Copyright (c) 2008, 2017 Nicira, Inc.
229 #
230diff --git a/tests/flowgen.py b/tests/flowgen.py
231index 221a8f2..5d96d76 100755
232--- a/tests/flowgen.py
233+++ b/tests/flowgen.py
234@@ -1,4 +1,4 @@
235-#! /usr/bin/env python
236+#! /usr/bin/env python3
237
238 # Copyright (c) 2009, 2010, 2011, 2012, 2015, 2017 Nicira, Inc.
239 #
240diff --git a/tests/ovsdb-monitor-sort.py b/tests/ovsdb-monitor-sort.py
241index 7d368a7..ab4c38c 100755
242--- a/tests/ovsdb-monitor-sort.py
243+++ b/tests/ovsdb-monitor-sort.py
244@@ -1,4 +1,4 @@
245-#! /usr/bin/env python
246+#! /usr/bin/env python3
247
248 # Breaks lines read from stdin into groups using blank lines as
249 # group separators, then sorts lines within the groups for
250diff --git a/tests/uuidfilt.py b/tests/uuidfilt.py
251index ea72812..f1a9aff 100755
252--- a/tests/uuidfilt.py
253+++ b/tests/uuidfilt.py
254@@ -1,4 +1,4 @@
255-#!/usr/bin/env python
256+#!/usr/bin/env python3
257
258 import re
259 import sys
141diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in 260diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
142index 963c50c..c84d7c2 100755 261index 8d220fd..76cedf4 100755
143--- a/utilities/bugtool/ovs-bugtool.in 262--- a/utilities/bugtool/ovs-bugtool.in
144+++ b/utilities/bugtool/ovs-bugtool.in 263+++ b/utilities/bugtool/ovs-bugtool.in
145@@ -1,4 +1,4 @@ 264@@ -1,4 +1,4 @@
@@ -148,3 +267,106 @@ index 963c50c..c84d7c2 100755
148 267
149 # This library is free software; you can redistribute it and/or 268 # This library is free software; you can redistribute it and/or
150 # modify it under the terms of version 2.1 of the GNU Lesser General Public 269 # modify it under the terms of version 2.1 of the GNU Lesser General Public
270diff --git a/utilities/ovs-check-dead-ifs.in b/utilities/ovs-check-dead-ifs.in
271index ac54f6c..13d86b3 100755
272--- a/utilities/ovs-check-dead-ifs.in
273+++ b/utilities/ovs-check-dead-ifs.in
274@@ -1,4 +1,4 @@
275-#! @PYTHON@
276+#!/usr/bin/env @PYTHON@
277
278 import os
279 import re
280diff --git a/utilities/ovs-dpctl-top.in b/utilities/ovs-dpctl-top.in
281index 7f0f1f8..ece707a 100755
282--- a/utilities/ovs-dpctl-top.in
283+++ b/utilities/ovs-dpctl-top.in
284@@ -1,4 +1,4 @@
285-#! @PYTHON@
286+#!/usr/bin/env @PYTHON@
287 #
288 # Copyright (c) 2013 Nicira, Inc.
289 #
290diff --git a/utilities/ovs-l3ping.in b/utilities/ovs-l3ping.in
291index 1b07972..9852699 100644
292--- a/utilities/ovs-l3ping.in
293+++ b/utilities/ovs-l3ping.in
294@@ -1,4 +1,4 @@
295-#! @PYTHON@
296+#!/usr/bin/env @PYTHON@
297 #
298 # Licensed under the Apache License, Version 2.0 (the "License");
299 # you may not use this file except in compliance with the License.
300diff --git a/utilities/ovs-parse-backtrace.in b/utilities/ovs-parse-backtrace.in
301index 350cbd9..1960fb4 100755
302--- a/utilities/ovs-parse-backtrace.in
303+++ b/utilities/ovs-parse-backtrace.in
304@@ -1,4 +1,4 @@
305-#! @PYTHON@
306+#!/usr/bin/env @PYTHON@
307 #
308 # Copyright (c) 2012 Nicira, Inc.
309 #
310diff --git a/utilities/ovs-pcap.in b/utilities/ovs-pcap.in
311index fc15321..bd55a41 100755
312--- a/utilities/ovs-pcap.in
313+++ b/utilities/ovs-pcap.in
314@@ -1,4 +1,4 @@
315-#! @PYTHON@
316+#!/usr/bin/env @PYTHON@
317 #
318 # Copyright (c) 2010 Nicira, Inc.
319 #
320diff --git a/utilities/ovs-tcpdump.in b/utilities/ovs-tcpdump.in
321index 91fa14e..bad67b7 100755
322--- a/utilities/ovs-tcpdump.in
323+++ b/utilities/ovs-tcpdump.in
324@@ -1,4 +1,4 @@
325-#! @PYTHON@
326+#!/usr/bin/env @PYTHON@
327 #
328 # Copyright (c) 2016 Red Hat, Inc.
329 #
330diff --git a/utilities/ovs-tcpundump.in b/utilities/ovs-tcpundump.in
331index c99015b..9a617ce 100755
332--- a/utilities/ovs-tcpundump.in
333+++ b/utilities/ovs-tcpundump.in
334@@ -1,4 +1,4 @@
335-#! @PYTHON@
336+#!/usr/bin/env @PYTHON@
337 #
338 # Copyright (c) 2010 Nicira, Inc.
339 #
340diff --git a/utilities/ovs-test.in b/utilities/ovs-test.in
341index fb1f9ad..4dba169 100644
342--- a/utilities/ovs-test.in
343+++ b/utilities/ovs-test.in
344@@ -1,4 +1,4 @@
345-#! @PYTHON@
346+#!/usr/bin/env @PYTHON@
347 #
348 # Licensed under the Apache License, Version 2.0 (the "License");
349 # you may not use this file except in compliance with the License.
350diff --git a/utilities/ovs-vlan-test.in b/utilities/ovs-vlan-test.in
351index e229498..5b70118 100755
352--- a/utilities/ovs-vlan-test.in
353+++ b/utilities/ovs-vlan-test.in
354@@ -1,4 +1,4 @@
355-#! @PYTHON@
356+#!/usr/bin/env @PYTHON@
357 #
358 # Copyright (c) 2010 Nicira, Inc.
359 #
360diff --git a/vtep/ovs-vtep.in b/vtep/ovs-vtep.in
361index 98748e4..3f12ae2 100755
362--- a/vtep/ovs-vtep.in
363+++ b/vtep/ovs-vtep.in
364@@ -1,4 +1,4 @@
365-#! @PYTHON@
366+#!/usr/bin/env @PYTHON@
367 # Copyright (C) 2013 Nicira, Inc. All Rights Reserved.
368 #
369 # Licensed under the Apache License, Version 2.0 (the "License");
370--
3712.7.4
372
diff --git a/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch b/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
index 6a1b8320..540bda6d 100644
--- a/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
+++ b/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
@@ -13,11 +13,10 @@ Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
13 utilities/checkpatch.py | 2 +- 13 utilities/checkpatch.py | 2 +-
14 utilities/ovs-dev.py | 2 +- 14 utilities/ovs-dev.py | 2 +-
15 utilities/ovs-pipegen.py | 2 +- 15 utilities/ovs-pipegen.py | 2 +-
16 vtep/ovs-vtep | 2 +-
17 xenserver/etc_xapi.d_plugins_openvswitch-cfg-update | 2 +- 16 xenserver/etc_xapi.d_plugins_openvswitch-cfg-update | 2 +-
18 xenserver/opt_xensource_libexec_interface-reconfigure | 2 +- 17 xenserver/opt_xensource_libexec_interface-reconfigure | 2 +-
19 xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync | 2 +- 18 xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync | 2 +-
20 9 files changed, 9 insertions(+), 9 deletions(-) 19 8 files changed, 8 insertions(+), 8 deletions(-)
21 20
22diff --git a/ofproto/ipfix-gen-entities b/ofproto/ipfix-gen-entities 21diff --git a/ofproto/ipfix-gen-entities b/ofproto/ipfix-gen-entities
23index 0be7199..d2cce42 100755 22index 0be7199..d2cce42 100755
@@ -46,7 +45,7 @@ index 26eb5c3..2e1932b 100755
46@@ -1,4 +1,4 @@ 45@@ -1,4 +1,4 @@
47-#!/usr/bin/env python 46-#!/usr/bin/env python
48+#!/usr/bin/env python3 47+#!/usr/bin/env python3
49 # Copyright (c) 2016 Red Hat, Inc. 48 # Copyright (c) 2016, 2017 Red Hat, Inc.
50 # 49 #
51 # Licensed under the Apache License, Version 2.0 (the "License"); 50 # Licensed under the Apache License, Version 2.0 (the "License");
52diff --git a/utilities/ovs-dev.py b/utilities/ovs-dev.py 51diff --git a/utilities/ovs-dev.py b/utilities/ovs-dev.py
@@ -69,16 +68,6 @@ index 4bf240f..2a8f13e 100755
69 # Copyright (c) 2013, 2014, 2015 Nicira, Inc. 68 # Copyright (c) 2013, 2014, 2015 Nicira, Inc.
70 # 69 #
71 # Licensed under the Apache License, Version 2.0 (the "License"); 70 # Licensed under the Apache License, Version 2.0 (the "License");
72diff --git a/vtep/ovs-vtep b/vtep/ovs-vtep
73index fd652d4..19d63f9 100755
74--- a/vtep/ovs-vtep
75+++ b/vtep/ovs-vtep
76@@ -1,4 +1,4 @@
77-#! /usr/bin/env python
78+#! /usr/bin/env python3
79 # Copyright (C) 2013 Nicira, Inc. All Rights Reserved.
80 #
81 # Licensed under the Apache License, Version 2.0 (the "License");
82diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update 71diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
83index e7404e3..5edad76 100755 72index e7404e3..5edad76 100755
84--- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update 73--- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
diff --git a/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch b/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
index 5c86aacc..711a1487 100644
--- a/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
+++ b/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
@@ -13,10 +13,10 @@ diff --git a/Makefile.am b/Makefile.am
13index ff7d70a..2fc1f13 100644 13index ff7d70a..2fc1f13 100644
14--- a/Makefile.am 14--- a/Makefile.am
15+++ b/Makefile.am 15+++ b/Makefile.am
16@@ -189,7 +189,7 @@ CLEAN_LOCAL += clean-pycov 16@@ -187,7 +187,7 @@ CLEAN_LOCAL += clean-pycov
17 # Makefile in datapath/linux, needed to get the list of files to 17
18 # distribute, requires GNU make extensions. 18 # If we're checked out from a Git repository, make sure that every
19 if GNU_MAKE 19 # file that is in Git is distributed.
20-ALL_LOCAL += dist-hook-git 20-ALL_LOCAL += dist-hook-git
21+# ALL_LOCAL += dist-hook-git 21+# ALL_LOCAL += dist-hook-git
22 dist-hook-git: distfiles 22 dist-hook-git: distfiles
diff --git a/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-7e614671cba3c4e338d1c5003b74a10047d7a8eb.patch b/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-7e614671cba3c4e338d1c5003b74a10047d7a8eb.patch
new file mode 100644
index 00000000..5b53f969
--- /dev/null
+++ b/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-7e614671cba3c4e338d1c5003b74a10047d7a8eb.patch
@@ -0,0 +1,110 @@
1From fb68120ef8aed625b04b2fbd2cb78fc59a7b7432 Mon Sep 17 00:00:00 2001
2From: He Zhe <zhe.he@windriver.com>
3Date: Wed, 30 Mar 2016 06:23:45 -0400
4Subject: [PATCH] openvswitch: Add test-install rule to support ptest execution
5
6Signed-off-by: Radu Patriu <radu.patriu@enea.com>
7
8Fix ptest for v2.5
9 - Copy certain files from srcdir since it has been different from
10 build directory.
11 - Copy more necessary files for new added test cases.
12 - Modify config files for running on target.
13
14Signed-off-by: He Zhe <zhe.he@windriver.com>
15
16---
17 Makefile.am | 1 +
18 test.mk | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
19 2 files changed, 73 insertions(+)
20 create mode 100644 test.mk
21
22diff --git a/Makefile.am b/Makefile.am
23index ea63acb..ff7d70a 100644
24--- a/Makefile.am
25+++ b/Makefile.am
26@@ -429,3 +429,4 @@ include windows/automake.mk
27 include ovn/automake.mk
28 include selinux/automake.mk
29 include build-aux/automake.mk
30+include test.mk
31diff --git a/test.mk b/test.mk
32new file mode 100644
33index 0000000..b10a581
34--- /dev/null
35+++ b/test.mk
36@@ -0,0 +1,74 @@
37+TEST_DEST ?= ${prefix}/lib/openvswitch
38+TEST_ROOT ?= ${prefix}/lib/openvswitch
39+TEST_DEPEND =
40+
41+if HAVE_OPENSSL
42+TEST_DEPEND += $(TESTPKI_FILES)
43+endif
44+
45+test-install: $(TEST_DEPEND)
46+ @list='$(noinst_PROGRAMS) $(EXTRA_DIST) $(dist_check_SCRIPTS) $(TEST_DEPEND) tests/atlocal tests/atconfig' ;\
47+ install -d $(TEST_DEST)/tests ;\
48+ install $(srcdir)/vtep/ovs-vtep $(TEST_DEST)/tests ;\
49+ install -d $(TEST_DEST)/python ;\
50+ install -d $(TEST_DEST)/python/ovs ;\
51+ install -d $(TEST_DEST)/python/ovs/db ;\
52+ install -d $(TEST_DEST)/python/ovs/compat ;\
53+ install -d $(TEST_DEST)/python/ovs/compat/sortedcontainers ;\
54+ install -d $(TEST_DEST)/python/ovs/unixctl ;\
55+ install -d $(TEST_DEST)/vswitchd ;\
56+ install $(srcdir)/vswitchd/vswitch.ovsschema $(TEST_DEST)/vswitchd ;\
57+ install vswitchd/ovs-vswitchd $(TEST_DEST)/vswitchd ;\
58+ install -d $(TEST_DEST)/debian ;\
59+ install $(srcdir)/debian/ovs-monitor-ipsec $(TEST_DEST)/debian ;\
60+ install -d $(TEST_DEST)/build-aux ;\
61+ install $(srcdir)/build-aux/check-structs $(TEST_DEST)/build-aux ;\
62+ install -d $(TEST_DEST)/xenserver ;\
63+ install $(srcdir)/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync $(TEST_DEST)/xenserver ;\
64+ install $(srcdir)/xenserver/opt_xensource_libexec_interface-reconfigure $(TEST_DEST)/xenserver ;\
65+ install $(srcdir)/xenserver/opt_xensource_libexec_InterfaceReconfigure.py $(TEST_DEST)/xenserver ;\
66+ install $(srcdir)/xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py $(TEST_DEST)/xenserver ;\
67+ install $(srcdir)/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py $(TEST_DEST)/xenserver ;\
68+ install -d $(TEST_DEST)/vtep ;\
69+ install $(srcdir)/vtep/vtep.ovsschema $(TEST_DEST)/vtep ;\
70+ install -d $(TEST_DEST)/ovn ;\
71+ install $(srcdir)/ovn/ovn-nb.ovsschema $(TEST_DEST)/ovn ;\
72+ install $(srcdir)/ovn/ovn-sb.ovsschema $(TEST_DEST)/ovn ;\
73+ install -d $(TEST_DEST)/utilities ;\
74+ install $(srcdir)/utilities/ovs-pcap.in $(TEST_DEST)/utilities ;\
75+ install $(srcdir)/utilities/ovs-pki.in $(TEST_DEST)/utilities ;\
76+ for p in $$list ; do \
77+ echo $$p ;\
78+ p=$${p#../git/} ;\
79+ pre=$${p#tests\/} ;\
80+ if test $$pre != $$p ; then \
81+ echo installing $$p to $(TEST_DEST)/tests/$$pre ;\
82+ if test -f $$p ; then \
83+ install $$p $(TEST_DEST)/tests/$$pre ;\
84+ else \
85+ install $(srcdir)/$$p $(TEST_DEST)/tests/$$pre ;\
86+ fi ;\
87+ continue ;\
88+ fi ;\
89+ pre=$${p#python\/ovs\/} ;\
90+ if test $$pre != $$p ; then \
91+ echo installing $$p to $(TEST_DEST)/python/ovs/$$pre ;\
92+ if test -f $$p ; then \
93+ install $$p $(TEST_DEST)/python/ovs/$$pre ;\
94+ else \
95+ install $(srcdir)/$$p $(TEST_DEST)/python/ovs/$$pre ;\
96+ fi ;\
97+ continue ;\
98+ fi; \
99+ done ;\
100+ sed -i 's|abs_builddir=.*|abs_builddir='"'"'$(TEST_ROOT)/tests'"'"'|g' $(TEST_DEST)/tests/atconfig
101+ sed -i 's|abs_srcdir=.*|abs_srcdir='"'"'$(TEST_ROOT)/tests'"'"'|g' $(TEST_DEST)/tests/atconfig
102+ sed -i 's|abs_top_srcdir=.*|abs_top_srcdir='"'"'$(TEST_ROOT)'"'"'|g' $(TEST_DEST)/tests/atconfig
103+ sed -i 's|abs_top_builddir=.*|abs_top_builddir='"'"'$(TEST_ROOT)'"'"'|g' $(TEST_DEST)/tests/atconfig
104+ sed -i 's|at_srcdir=.*|at_srcdir='"'"'.'"'"'|g' $(TEST_DEST)/tests/atconfig
105+ sed -i 's|at_top_srcdir=.*|at_top_srcdir='"'"'..'"'"'|g' $(TEST_DEST)/tests/atconfig
106+ sed -i 's|at_top_build_prefix=.*|at_top_build_prefix='"'"'../'"'"'|g' $(TEST_DEST)/tests/atconfig
107+ sed -i 's|^\(.*config\.log.*\)|#\1|g' $(TEST_DEST)/tests/testsuite
108+ sed -i 's|$$srcdir|$$abs_srcdir|g' $(TEST_DEST)/tests/testsuite
109+ sed -i 's|ovs-appctl-bashcomp\.bash|/etc/bash_completion.d/ovs-appctl-bashcomp\.bash|g' $(TEST_DEST)/tests/testsuite
110+ sed -i 's|ovs-vsctl-bashcomp\.bash|/etc/bash_completion.d/ovs-vsctl-bashcomp\.bash|g' $(TEST_DEST)/tests/testsuite
diff --git a/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch b/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch
new file mode 100644
index 00000000..9a792e63
--- /dev/null
+++ b/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch
@@ -0,0 +1,45 @@
1From f45c0a9d712113417e7b56c199f8576b470695ae Mon Sep 17 00:00:00 2001
2From: Mark Asselstine <mark.asselstine@windriver.com>
3Date: Tue, 29 May 2018 18:57:46 +0000
4Subject: [PATCH] systemd: update tool paths
5
6We are using the rhel files but we install our tools in a slightly
7different path, update accordingly.
8
9Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
10---
11 rhel/usr_lib_systemd_system_ovs-vswitchd.service.in | 4 ++--
12 rhel/usr_lib_systemd_system_ovsdb-server.service | 2 +-
13 2 files changed, 3 insertions(+), 3 deletions(-)
14
15diff --git a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
16index 11b34c6..94c48f8 100644
17--- a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
18+++ b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
19@@ -15,8 +15,8 @@ EnvironmentFile=/etc/openvswitch/default.conf
20 EnvironmentFile=-/etc/sysconfig/openvswitch
21 EnvironmentFile=-/run/openvswitch/useropts
22 @begin_dpdk@
23-ExecStartPre=-/bin/sh -c '/usr/bin/chown :$${OVS_USER_ID##*:} /dev/hugepages'
24-ExecStartPre=-/usr/bin/chmod 0775 /dev/hugepages
25+ExecStartPre=-/bin/sh -c '/bin/chown :$${OVS_USER_ID##*:} /dev/hugepages'
26+ExecStartPre=-/bin/chmod 0775 /dev/hugepages
27 @end_dpdk@
28 ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
29 --no-ovsdb-server --no-monitor --system-id=random \
30diff --git a/rhel/usr_lib_systemd_system_ovsdb-server.service b/rhel/usr_lib_systemd_system_ovsdb-server.service
31index 0fa57a9..75c9e02 100644
32--- a/rhel/usr_lib_systemd_system_ovsdb-server.service
33+++ b/rhel/usr_lib_systemd_system_ovsdb-server.service
34@@ -10,7 +10,7 @@ Type=forking
35 Restart=on-failure
36 EnvironmentFile=/etc/openvswitch/default.conf
37 EnvironmentFile=-/etc/sysconfig/openvswitch
38-ExecStartPre=/usr/bin/chown ${OVS_USER_ID} /var/run/openvswitch
39+ExecStartPre=/bin/chown ${OVS_USER_ID} /var/run/openvswitch
40 ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch/useropts; if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /usr/bin/echo "OVSUSER=--ovs-user=${OVS_USER_ID}" > /run/openvswitch/useropts; fi'
41 EnvironmentFile=-/run/openvswitch/useropts
42 ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
43--
442.7.4
45
diff --git a/recipes-networking/openvswitch/openvswitch.inc b/recipes-networking/openvswitch/openvswitch.inc
index 58e0fcb0..70ac5bc5 100644
--- a/recipes-networking/openvswitch/openvswitch.inc
+++ b/recipes-networking/openvswitch/openvswitch.inc
@@ -63,6 +63,8 @@ FILES_${PN}-switch = "\
63 ${systemd_unitdir}/system/ovs-vswitchd.service \ 63 ${systemd_unitdir}/system/ovs-vswitchd.service \
64 ${systemd_unitdir}/system/openvswitch.service \ 64 ${systemd_unitdir}/system/openvswitch.service \
65 ${systemd_unitdir}/system/ovsdb-server.service \ 65 ${systemd_unitdir}/system/ovsdb-server.service \
66 ${sysconfdir}/sysconfig/openvswitch \
67 ${sysconfdir}/openvswitch/default.conf \
66 " 68 "
67 69
68# silence a warning 70# silence a warning
@@ -92,6 +94,14 @@ do_configure_prepend() {
92 CC=`echo '${CC}' | sed 's/-Wa,/-Xassembler /g'` 94 CC=`echo '${CC}' | sed 's/-Wa,/-Xassembler /g'`
93} 95}
94 96
97do_install_prepend() {
98 SERVICE_FILE="${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service"
99 ${S}/build-aux/dpdkstrip.py \
100 ${@bb.utils.contains('PACKAGECONFIG','dpdk','--dpdk','--nodpdk',d)} \
101 < ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in \
102 > ${SERVICE_FILE}
103}
104
95do_install_append() { 105do_install_append() {
96 install -d ${D}/${sysconfdir}/default/ 106 install -d ${D}/${sysconfdir}/default/
97 install -m 660 ${WORKDIR}/openvswitch-switch-setup ${D}/${sysconfdir}/default/openvswitch-switch 107 install -m 660 ${WORKDIR}/openvswitch-switch-setup ${D}/${sysconfdir}/default/openvswitch-switch
@@ -103,6 +113,14 @@ do_install_append() {
103 install -m 755 ${WORKDIR}/openvswitch-switch ${D}/${sysconfdir}/init.d/openvswitch-switch 113 install -m 755 ${WORKDIR}/openvswitch-switch ${D}/${sysconfdir}/init.d/openvswitch-switch
104 true || rm -fr ${D}/${datadir}/${PN}/pki 114 true || rm -fr ${D}/${datadir}/${PN}/pki
105 115
116 install -d ${D}/${sysconfdir}/sysconfig
117 install -m 644 ${S}/rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
118 ${D}/${sysconfdir}/sysconfig/openvswitch
119
120 install -d ${D}/${sysconfdir}/openvswitch
121 install -m 644 ${S}/rhel/etc_openvswitch_default.conf \
122 ${D}/${sysconfdir}/openvswitch/default.conf
123
106 install -d ${D}/${systemd_unitdir}/system/ 124 install -d ${D}/${systemd_unitdir}/system/
107 install -m 644 ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service \ 125 install -m 644 ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service \
108 ${D}/${systemd_unitdir}/system/ovs-vswitchd.service 126 ${D}/${systemd_unitdir}/system/ovs-vswitchd.service
diff --git a/recipes-networking/openvswitch/openvswitch_git.bb b/recipes-networking/openvswitch/openvswitch_git.bb
index c3a83019..9cdd4842 100644
--- a/recipes-networking/openvswitch/openvswitch_git.bb
+++ b/recipes-networking/openvswitch/openvswitch_git.bb
@@ -12,39 +12,26 @@ RDEPENDS_${PN}-ptest += "\
12 " 12 "
13 13
14S = "${WORKDIR}/git" 14S = "${WORKDIR}/git"
15PV = "2.7.3+${SRCREV}" 15PV = "2.9.2+${SRCREV}"
16 16
17FILESEXTRAPATHS_append := "${THISDIR}/${PN}-git:" 17FILESEXTRAPATHS_append := "${THISDIR}/${PN}-git:"
18 18
19SRCREV = "b8dcfbebee9e7dbc74ec5eecc9b45d335d6150c1" 19SRCREV = "7e614671cba3c4e338d1c5003b74a10047d7a8eb"
20SRC_URI = "file://openvswitch-switch \ 20SRC_URI = "file://openvswitch-switch \
21 file://openvswitch-switch-setup \ 21 file://openvswitch-switch-setup \
22 file://openvswitch-testcontroller \ 22 file://openvswitch-testcontroller \
23 file://openvswitch-testcontroller-setup \ 23 file://openvswitch-testcontroller-setup \
24 git://github.com/openvswitch/ovs.git;protocol=git;branch=branch-2.7 \ 24 git://github.com/openvswitch/ovs.git;protocol=git;branch=branch-2.9 \
25 file://openvswitch-add-ptest-${SRCREV}.patch \ 25 file://openvswitch-add-ptest-${SRCREV}.patch \
26 file://run-ptest \ 26 file://run-ptest \
27 file://disable_m4_check.patch \ 27 file://disable_m4_check.patch \
28 file://kernel_module.patch \ 28 file://kernel_module.patch \
29 file://python-make-remaining-scripts-use-usr-bin-env.patch \ 29 file://python-make-remaining-scripts-use-usr-bin-env.patch \
30 file://0001-use-the-linux-if_packet.h-Interface-directly.patch \
31 file://0002-Define-WAIT_ANY-if-not-provided-by-system.patch \ 30 file://0002-Define-WAIT_ANY-if-not-provided-by-system.patch \
32 file://python-switch-remaining-scripts-to-use-python3.patch \ 31 file://python-switch-remaining-scripts-to-use-python3.patch \
32 file://systemd-update-tool-paths.patch \
33 " 33 "
34 34
35# Temporarily backport patches to better support py3. These have been
36# merged upstream but are not part of v2.7.1.
37SRC_URI += " \
38 file://0001-Python3-compatibility-Convert-print-statements.patch \
39 file://0002-Python3-compatibility-exception-cleanup.patch \
40 file://0003-Python3-compatibility-execfile-to-exec.patch \
41 file://0004-Python3-compatibility-iteritems-to-items.patch \
42 file://0005-Python3-compatibility-fix-integer-problems.patch \
43 file://0006-Python3-compatibility-math-error-compatibility.patch \
44 file://0007-Python3-compatibility-unicode-to-str.patch \
45 file://0008-AUTHORS-Add-Jason-Wessel.patch \
46"
47
48LIC_FILES_CHKSUM = "file://COPYING;md5=17b2c9d4c70853a09c0e143137754b35" 35LIC_FILES_CHKSUM = "file://COPYING;md5=17b2c9d4c70853a09c0e143137754b35"
49 36
50DPDK_INSTALL_DIR ?= "/opt/dpdk" 37DPDK_INSTALL_DIR ?= "/opt/dpdk"
@@ -71,5 +58,4 @@ do_install_ptest() {
71 58
72do_install_append() { 59do_install_append() {
73 oe_runmake modules_install INSTALL_MOD_PATH=${D} 60 oe_runmake modules_install INSTALL_MOD_PATH=${D}
74 rm -r ${D}/${localstatedir}/run
75} 61}