diff --git a/SOURCES/openvswitch-2.17.0.patch b/SOURCES/openvswitch-2.17.0.patch index 50dbba1..27f0b65 100644 --- a/SOURCES/openvswitch-2.17.0.patch +++ b/SOURCES/openvswitch-2.17.0.patch @@ -271,10 +271,33 @@ index c4300cd53e..a297aadac8 100644 - GNU make. diff --git a/Documentation/ref/ovs-actions.7.rst b/Documentation/ref/ovs-actions.7.rst -index b59b7634fa..d138956556 100644 +index b59b7634fa..36adcc5db2 100644 --- a/Documentation/ref/ovs-actions.7.rst +++ b/Documentation/ref/ovs-actions.7.rst -@@ -1380,7 +1380,7 @@ The ``delete_field`` action +@@ -694,7 +694,8 @@ encapsulated in an OpenFlow ``packet-in`` message. The supported options are: + Limit to *max_len* the number of bytes of the packet to send in the + ``packet-in.`` A *max_len* of 0 prevents any of the packet from being + sent (thus, only metadata is included). By default, the entire packet is +- sent, equivalent to a *max_len* of 65535. ++ sent, equivalent to a *max_len* of 65535. This option has no effect in ++ Open vSwith 2.7 and later: the entire packet will always be sent. + + ``reason=``\ *reason* + Specify *reason* as the reason for sending the message in the +@@ -733,6 +734,12 @@ encapsulated in an OpenFlow ``packet-in`` message. The supported options are: + options require the Open vSwitch ``NXAST_CONTROLLER`` extension action added + in Open vSwitch 1.6. + ++ Open vSwitch 2.7 and later is configured to not buffer packets for the ++ packet-in event. As a result, the full packet is always sent to ++ controllers. This means that the ``max_len`` option has no effect on the ++ ``controller`` action, and all values (even 0) are equivalent to the default ++ value of 65535. ++ + + The ``enqueue`` action + ---------------------- +@@ -1380,7 +1387,7 @@ The ``delete_field`` action | ``delete_field:``\ *field* The ``delete_field`` action deletes a *field* in the syntax described under @@ -373,7 +396,7 @@ index 27be4aa412..1dc406170f 100644 +.. |emeritus-status| replace:: `Emeritus Status for OVS Committers + `__ diff --git a/Makefile.am b/Makefile.am -index cb8076433e..2a41e63ad9 100644 +index cb8076433e..22227c4957 100644 --- a/Makefile.am +++ b/Makefile.am @@ -368,7 +368,7 @@ ALL_LOCAL += manpage-check @@ -385,6 +408,15 @@ index cb8076433e..2a41e63ad9 100644 if grep warning: $@.tmp; then error=:; fi; \ rm -f $@.tmp; \ done; \ +@@ -414,7 +414,7 @@ endif + CLEANFILES += flake8-check + + -include manpages.mk +-manpages.mk: $(MAN_ROOTS) build-aux/sodepends.py python/build/soutil.py ++manpages.mk: $(MAN_ROOTS) build-aux/sodepends.py python/ovs_build_helpers/soutil.py + @PYTHONPATH=$$PYTHONPATH$(psep)$(srcdir)/python $(PYTHON3) $(srcdir)/build-aux/sodepends.py -I. -I$(srcdir) $(MAN_ROOTS) >$(@F).tmp + @if cmp -s $(@F).tmp $@; then \ + touch $@; \ diff --git a/NEWS b/NEWS index c10e9bfacc..673f227202 100644 --- a/NEWS @@ -569,10 +601,20 @@ index 0c360fd1ef..c981f90bc7 100644 AM_CONDITIONAL([ENABLE_SPARSE_BY_DEFAULT], [test $enable_sparse = yes])]) diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields -index 8766995d9a..7a9788be96 100755 +index 8766995d9a..9fb4df98ad 100755 --- a/build-aux/extract-ofp-fields +++ b/build-aux/extract-ofp-fields -@@ -578,7 +578,7 @@ def field_to_xml(field_node, f, body, summary): +@@ -5,7 +5,8 @@ import sys + import os.path + import re + import xml.dom.minidom +-import build.nroff ++ ++from ovs_build_helpers import nroff + + line = "" + +@@ -578,7 +579,7 @@ def field_to_xml(field_node, f, body, summary): body += [""".PP \\fB%s Field\\fR .TS @@ -581,8 +623,26 @@ index 8766995d9a..7a9788be96 100755 l lx. """ % title] -@@ -655,7 +655,7 @@ def group_xml_to_nroff(group_node, fields): - '.SH \"%s\"\n' % build.nroff.text_to_nroff(title.upper() + " FIELDS"), +@@ -636,7 +637,7 @@ l lx. + body += [".TE\n"] + + body += ['.PP\n'] +- body += [build.nroff.block_xml_to_nroff(field_node.childNodes)] ++ body += [nroff.block_xml_to_nroff(field_node.childNodes)] + + def group_xml_to_nroff(group_node, fields): + title = group_node.attributes['title'].nodeValue +@@ -648,14 +649,14 @@ def group_xml_to_nroff(group_node, fields): + id_ = node.attributes['id'].nodeValue + field_to_xml(node, fields[id_], body, summary) + else: +- body += [build.nroff.block_xml_to_nroff([node])] ++ body += [nroff.block_xml_to_nroff([node])] + + content = [ + '.bp\n', +- '.SH \"%s\"\n' % build.nroff.text_to_nroff(title.upper() + " FIELDS"), ++ '.SH \"%s\"\n' % nroff.text_to_nroff(title.upper() + " FIELDS"), '.SS "Summary:"\n', '.TS\n', - 'tab(;);\n', @@ -590,7 +650,7 @@ index 8766995d9a..7a9788be96 100755 'l l l l l l l.\n', 'Name;Bytes;Mask;RW?;Prereqs;NXM/OXM Support\n', '\_;\_;\_;\_;\_;\_\n'] -@@ -665,7 +665,7 @@ def group_xml_to_nroff(group_node, fields): +@@ -665,7 +666,7 @@ def group_xml_to_nroff(group_node, fields): return ''.join(content) def make_oxm_classes_xml(document): @@ -599,6 +659,15 @@ index 8766995d9a..7a9788be96 100755 l l l. Prefix;Vendor;Class \_;\_;\_ +@@ -753,7 +754,7 @@ ovs\-fields \- protocol header fields in OpenFlow and Open vSwitch + elif node.nodeType == node.COMMENT_NODE: + pass + else: +- s += build.nroff.block_xml_to_nroff([node]) ++ s += nroff.block_xml_to_nroff([node]) + + for f in fields: + if "used" not in f: diff --git a/build-aux/generate-dhparams-c b/build-aux/generate-dhparams-c index 1884c99e1f..aca1dbca91 100755 --- a/build-aux/generate-dhparams-c @@ -701,6 +770,74 @@ index 1884c99e1f..aca1dbca91 100755 +dhparam_to_c lib/dh2048.pem +dhparam_to_c lib/dh4096.pem +echo "#endif" +diff --git a/build-aux/sodepends.py b/build-aux/sodepends.py +index 45812bcbd7..ac8dd61a4b 100755 +--- a/build-aux/sodepends.py ++++ b/build-aux/sodepends.py +@@ -14,9 +14,10 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-from build import soutil + import sys + ++from ovs_build_helpers import soutil ++ + + def sodepends(include_dirs, filenames, dst): + ok = True +diff --git a/build-aux/soexpand.py b/build-aux/soexpand.py +index 00adcf47a3..7d4dc0486a 100755 +--- a/build-aux/soexpand.py ++++ b/build-aux/soexpand.py +@@ -14,9 +14,10 @@ + # See the License for the specific language governing permissions and + # limitations under the License. + +-from build import soutil + import sys + ++from ovs_build_helpers import soutil ++ + + def soexpand(include_dirs, src, dst): + ok = True +diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff +index ee5553f456..3e937910be 100755 +--- a/build-aux/xml2nroff ++++ b/build-aux/xml2nroff +@@ -18,7 +18,7 @@ import getopt + import sys + import xml.dom.minidom + +-import build.nroff ++from ovs_build_helpers import nroff + + argv0 = sys.argv[0] + +@@ -90,10 +90,10 @@ def manpage_to_nroff(xml_file, subst, include_path, version=None): + . I "\\$1" + . RE + .. +-''' % (build.nroff.text_to_nroff(program), build.nroff.text_to_nroff(section), +- build.nroff.text_to_nroff(title), build.nroff.text_to_nroff(version)) ++''' % (nroff.text_to_nroff(program), nroff.text_to_nroff(section), ++ nroff.text_to_nroff(title), nroff.text_to_nroff(version)) + +- s += build.nroff.block_xml_to_nroff(doc.childNodes) + "\n" ++ s += nroff.block_xml_to_nroff(doc.childNodes) + "\n" + + return s + +@@ -139,7 +139,7 @@ if __name__ == "__main__": + + try: + s = manpage_to_nroff(args[0], subst, include_path, version) +- except build.nroff.error.Error as e: ++ except nroff.error.Error as e: + sys.stderr.write("%s: %s\n" % (argv0, e.msg)) + sys.exit(1) + for line in s.splitlines(): diff --git a/configure.ac b/configure.ac index 4e9bcce272..134106f54a 100644 --- a/configure.ac @@ -52296,7 +52433,7 @@ index 66016eb099..7425dd44e7 100644 /* Statistics. */ struct dp_netdev_flow_stats stats; diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c -index 9f35713ef5..5b0047f5c7 100644 +index 9f35713ef5..f1895aae36 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -93,7 +93,8 @@ VLOG_DEFINE_THIS_MODULE(dpif_netdev); @@ -52351,7 +52488,7 @@ index 9f35713ef5..5b0047f5c7 100644 item->timestamp = pmd->ctx.now; dp_netdev_offload_flow_enqueue(item); -@@ -3335,6 +3335,28 @@ netdev_flow_key_init_masked(struct netdev_flow_key *dst, +@@ -3335,6 +3335,27 @@ netdev_flow_key_init_masked(struct netdev_flow_key *dst, (dst_u64 - miniflow_get_values(&dst->mf)) * 8); } @@ -52360,14 +52497,13 @@ index 9f35713ef5..5b0047f5c7 100644 +netdev_flow_key_init(struct netdev_flow_key *key, + const struct flow *flow) +{ -+ uint64_t *dst = miniflow_values(&key->mf); + uint32_t hash = 0; + uint64_t value; + + miniflow_map_init(&key->mf, flow); + miniflow_init(&key->mf, flow); + -+ size_t n = dst - miniflow_get_values(&key->mf); ++ size_t n = miniflow_n_values(&key->mf); + + FLOW_FOR_EACH_IN_MAPS (value, flow, key->mf.map) { + hash = hash_add64(hash, value); @@ -52380,7 +52516,7 @@ index 9f35713ef5..5b0047f5c7 100644 static inline void emc_change_entry(struct emc_entry *ce, struct dp_netdev_flow *flow, const struct netdev_flow_key *key) -@@ -4095,6 +4117,7 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, +@@ -4095,6 +4116,7 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, flow->dead = false; flow->batch = NULL; flow->mark = INVALID_FLOW_MARK; @@ -52388,7 +52524,7 @@ index 9f35713ef5..5b0047f5c7 100644 *CONST_CAST(unsigned *, &flow->pmd_id) = pmd->core_id; *CONST_CAST(struct flow *, &flow->flow) = match->flow; *CONST_CAST(ovs_u128 *, &flow->ufid) = *ufid; -@@ -4129,7 +4152,7 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, +@@ -4129,7 +4151,7 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, } queue_netdev_flow_put(pmd, flow, match, actions, actions_len, @@ -52397,7 +52533,7 @@ index 9f35713ef5..5b0047f5c7 100644 log_netdev_flow_change(flow, match, NULL, actions, actions_len); return flow; -@@ -4143,7 +4166,7 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, +@@ -4143,7 +4165,7 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, const struct dpif_flow_put *put, struct dpif_flow_stats *stats) { @@ -52406,7 +52542,7 @@ index 9f35713ef5..5b0047f5c7 100644 int error = 0; if (stats) { -@@ -4151,16 +4174,35 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, +@@ -4151,16 +4173,35 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, } ovs_mutex_lock(&pmd->flow_mutex); @@ -52450,7 +52586,7 @@ index 9f35713ef5..5b0047f5c7 100644 struct dp_netdev_actions *new_actions; struct dp_netdev_actions *old_actions; -@@ -4171,7 +4213,7 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, +@@ -4171,7 +4212,7 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, ovsrcu_set(&netdev_flow->actions, new_actions); queue_netdev_flow_put(pmd, netdev_flow, match, @@ -52459,7 +52595,7 @@ index 9f35713ef5..5b0047f5c7 100644 DP_NETDEV_FLOW_OFFLOAD_OP_MOD); log_netdev_flow_change(netdev_flow, match, old_actions, put->actions, put->actions_len); -@@ -4191,15 +4233,11 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, +@@ -4191,15 +4232,11 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, * counter, and subtracting it before outputting the stats */ error = EOPNOTSUPP; } @@ -52477,7 +52613,7 @@ index 9f35713ef5..5b0047f5c7 100644 ovs_mutex_unlock(&pmd->flow_mutex); return error; } -@@ -4208,7 +4246,7 @@ static int +@@ -4208,7 +4245,7 @@ static int dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put) { struct dp_netdev *dp = get_dp_netdev(dpif); @@ -52486,7 +52622,7 @@ index 9f35713ef5..5b0047f5c7 100644 struct dp_netdev_pmd_thread *pmd; struct match match; ovs_u128 ufid; -@@ -4257,9 +4295,12 @@ dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put) +@@ -4257,9 +4294,12 @@ dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put) /* Must produce a netdev_flow_key for lookup. * Use the same method as employed to create the key when adding @@ -52502,7 +52638,7 @@ index 9f35713ef5..5b0047f5c7 100644 if (put->pmd_id == PMD_ID_NULL) { if (cmap_count(&dp->poll_threads) == 0) { -@@ -4778,8 +4819,8 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) +@@ -4778,8 +4818,8 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) uint32_t insert_min, cur_min; uint32_t tx_flush_interval, cur_tx_flush_interval; uint64_t rebalance_intvl; @@ -52513,7 +52649,7 @@ index 9f35713ef5..5b0047f5c7 100644 bool log_autolb = false; enum sched_assignment_type pmd_rxq_assign_type; -@@ -4880,8 +4921,12 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) +@@ -4880,8 +4920,12 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) struct pmd_auto_lb *pmd_alb = &dp->pmd_alb; @@ -52528,7 +52664,7 @@ index 9f35713ef5..5b0047f5c7 100644 /* Input is in min, convert it to msec. */ rebalance_intvl = -@@ -4894,21 +4939,21 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) +@@ -4894,21 +4938,21 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) log_autolb = true; } @@ -52556,7 +52692,7 @@ index 9f35713ef5..5b0047f5c7 100644 if (rebalance_load > 100) { rebalance_load = ALB_LOAD_THRESHOLD; } -@@ -4916,7 +4961,7 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) +@@ -4916,7 +4960,7 @@ dpif_netdev_set_config(struct dpif *dpif, const struct smap *other_config) if (rebalance_load != cur_rebalance_load) { atomic_store_relaxed(&pmd_alb->rebalance_load_thresh, rebalance_load); @@ -52565,7 +52701,7 @@ index 9f35713ef5..5b0047f5c7 100644 rebalance_load); log_autolb = true; } -@@ -5425,7 +5470,6 @@ port_reconfigure(struct dp_netdev_port *port) +@@ -5425,7 +5469,6 @@ port_reconfigure(struct dp_netdev_port *port) port->rxqs[i].port = port; port->rxqs[i].is_vhost = !strncmp(port->type, "dpdkvhost", 9); @@ -52573,7 +52709,7 @@ index 9f35713ef5..5b0047f5c7 100644 err = netdev_rxq_open(netdev, &port->rxqs[i].rx, i); if (err) { -@@ -5684,23 +5728,28 @@ sched_numa_list_put_in_place(struct sched_numa_list *numa_list) +@@ -5684,23 +5727,28 @@ sched_numa_list_put_in_place(struct sched_numa_list *numa_list) } } @@ -52607,7 +52743,7 @@ index 9f35713ef5..5b0047f5c7 100644 rxq->pmd->numa_id != netdev_get_numa_id(rxq->port->netdev)) { return true; -@@ -6000,10 +6049,10 @@ sched_numa_list_schedule(struct sched_numa_list *numa_list, +@@ -6000,10 +6048,10 @@ sched_numa_list_schedule(struct sched_numa_list *numa_list, /* Find any numa with available PMDs. */ for (int j = 0; j < n_numa; j++) { numa = sched_numa_list_next(numa_list, last_cross_numa); @@ -52619,7 +52755,7 @@ index 9f35713ef5..5b0047f5c7 100644 numa = NULL; } } -@@ -6111,7 +6160,7 @@ sched_numa_list_variance(struct sched_numa_list *numa_list) +@@ -6111,7 +6159,7 @@ sched_numa_list_variance(struct sched_numa_list *numa_list) * pmd_rebalance_dry_run() can be avoided when it is not needed. */ static bool @@ -52628,7 +52764,7 @@ index 9f35713ef5..5b0047f5c7 100644 OVS_REQ_RDLOCK(dp->port_rwlock) { struct dp_netdev_pmd_thread *pmd; -@@ -6342,11 +6391,11 @@ pmd_remove_stale_ports(struct dp_netdev *dp, +@@ -6342,11 +6390,11 @@ pmd_remove_stale_ports(struct dp_netdev *dp, OVS_EXCLUDED(pmd->port_mutex) OVS_REQ_RDLOCK(dp->port_rwlock) { @@ -52643,7 +52779,7 @@ index 9f35713ef5..5b0047f5c7 100644 struct dp_netdev_port *port = poll->rxq->port; if (port->need_reconfigure -@@ -6354,7 +6403,7 @@ pmd_remove_stale_ports(struct dp_netdev *dp, +@@ -6354,7 +6402,7 @@ pmd_remove_stale_ports(struct dp_netdev *dp, dp_netdev_del_rxq_from_pmd(pmd, poll); } } @@ -52652,7 +52788,7 @@ index 9f35713ef5..5b0047f5c7 100644 struct dp_netdev_port *port = tx->port; if (port->need_reconfigure -@@ -6430,8 +6479,7 @@ reconfigure_datapath(struct dp_netdev *dp) +@@ -6430,8 +6478,7 @@ reconfigure_datapath(struct dp_netdev *dp) /* We only reconfigure the ports that we determined above, because they're * not being used by any pmd thread at the moment. If a port fails to * reconfigure we remove it from the datapath. */ @@ -52662,7 +52798,7 @@ index 9f35713ef5..5b0047f5c7 100644 int err; if (!port->need_reconfigure) { -@@ -6487,10 +6535,10 @@ reconfigure_datapath(struct dp_netdev *dp) +@@ -6487,10 +6534,10 @@ reconfigure_datapath(struct dp_netdev *dp) } CMAP_FOR_EACH (pmd, node, &dp->poll_threads) { @@ -52675,7 +52811,7 @@ index 9f35713ef5..5b0047f5c7 100644 if (poll->rxq->pmd != pmd) { dp_netdev_del_rxq_from_pmd(pmd, poll); -@@ -6682,7 +6730,7 @@ dpif_netdev_run(struct dpif *dpif) +@@ -6682,7 +6729,7 @@ dpif_netdev_run(struct dpif *dpif) if (pmd_rebalance && !dp_netdev_is_reconf_required(dp) && !ports_require_restart(dp) && @@ -52684,7 +52820,7 @@ index 9f35713ef5..5b0047f5c7 100644 pmd_rebalance_dry_run(dp)) { VLOG_INFO("PMD auto load balance dry run. " "Requesting datapath reconfigure."); -@@ -7364,15 +7412,15 @@ static struct dp_netdev_pmd_thread * +@@ -7364,15 +7411,15 @@ static struct dp_netdev_pmd_thread * dp_netdev_get_pmd(struct dp_netdev *dp, unsigned core_id) { struct dp_netdev_pmd_thread *pmd; @@ -52706,7 +52842,7 @@ index 9f35713ef5..5b0047f5c7 100644 } /* Sets the 'struct dp_netdev_pmd_thread' for non-pmd threads. */ -@@ -7505,6 +7553,7 @@ dp_netdev_destroy_pmd(struct dp_netdev_pmd_thread *pmd) +@@ -7505,6 +7552,7 @@ dp_netdev_destroy_pmd(struct dp_netdev_pmd_thread *pmd) seq_destroy(pmd->reload_seq); ovs_mutex_destroy(&pmd->port_mutex); ovs_mutex_destroy(&pmd->bond_mutex); @@ -52714,7 +52850,7 @@ index 9f35713ef5..5b0047f5c7 100644 free(pmd); } -@@ -8020,17 +8069,15 @@ dp_netdev_hw_flow(const struct dp_netdev_pmd_thread *pmd, +@@ -8020,17 +8068,15 @@ dp_netdev_hw_flow(const struct dp_netdev_pmd_thread *pmd, #ifdef ALLOW_EXPERIMENTAL_API /* Packet restoration API required. */ /* Restore the packet if HW processing was terminated before completion. */ struct dp_netdev_rxq *rxq = pmd->ctx.last_rxq; @@ -52739,7 +52875,7 @@ index 9f35713ef5..5b0047f5c7 100644 } } #endif -@@ -9495,6 +9542,7 @@ dpif_netdev_bond_stats_get(struct dpif *dpif, uint32_t bond_id, +@@ -9495,6 +9541,7 @@ dpif_netdev_bond_stats_get(struct dpif *dpif, uint32_t bond_id, const struct dpif_class dpif_netdev_class = { "netdev", true, /* cleanup_required */ @@ -63547,6 +63683,19 @@ index 0f222cc992..952fa902e4 100644 ovsdb_jsonrpc_monitor_destroy(jm->jsonrpc_monitor, true); } } +diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc +index 10d0c0c134..099770d253 100755 +--- a/ovsdb/ovsdb-doc ++++ b/ovsdb/ovsdb-doc +@@ -24,7 +24,7 @@ import ovs.json + from ovs.db import error + import ovs.db.schema + +-from build.nroff import * ++from ovs_build_helpers.nroff import * + + argv0 = sys.argv[0] + diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in index 10a70ae26f..13c5359395 100755 --- a/ovsdb/ovsdb-idlc.in @@ -64974,6 +65123,57 @@ index 726c138bf0..3a693855b9 100644 json_destroy(txn_json); t->reply = jsonrpc_create_reply(json_object_create(), t->request->id); +diff --git a/python/automake.mk b/python/automake.mk +index 767512f175..3c369e03b8 100644 +--- a/python/automake.mk ++++ b/python/automake.mk +@@ -45,9 +45,9 @@ ovs_pyfiles = \ + # These python files are used at build time but not runtime, + # so they are not installed. + EXTRA_DIST += \ +- python/build/__init__.py \ +- python/build/nroff.py \ +- python/build/soutil.py ++ python/ovs_build_helpers/__init__.py \ ++ python/ovs_build_helpers/nroff.py \ ++ python/ovs_build_helpers/soutil.py + + # PyPI support. + EXTRA_DIST += \ +@@ -64,10 +64,11 @@ PYCOV_CLEAN_FILES += $(PYFILES:.py=.py,cover) + + FLAKE8_PYFILES += \ + $(filter-out python/ovs/compat/% python/ovs/dirs.py,$(PYFILES)) \ +- python/setup.py \ +- python/build/__init__.py \ +- python/build/nroff.py \ +- python/ovs/dirs.py.template ++ python/ovs_build_helpers/__init__.py \ ++ python/ovs_build_helpers/nroff.py \ ++ python/ovs_build_helpers/soutil.py \ ++ python/ovs/dirs.py.template \ ++ python/setup.py + + nobase_pkgdata_DATA = $(ovs_pyfiles) $(ovstest_pyfiles) + ovs-install-data-local: +@@ -86,11 +87,14 @@ ovs-install-data-local: + $(INSTALL_DATA) python/ovs/dirs.py.tmp $(DESTDIR)$(pkgdatadir)/python/ovs/dirs.py + rm python/ovs/dirs.py.tmp + ++.PHONY: python-sdist + python-sdist: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py +- (cd python/ && $(PYTHON3) setup.py sdist) ++ cd python/ && $(PYTHON3) -m build --sdist ++ ++.PHONY: pypi-upload ++pypi-upload: python-sdist ++ twine upload python/dist/ovs-$(VERSION).tar.gz + +-pypi-upload: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py +- (cd python/ && $(PYTHON3) setup.py sdist upload) + install-data-local: ovs-install-data-local + + UNINSTALL_LOCAL += ovs-uninstall-local diff --git a/python/ovs/_json.c b/python/ovs/_json.c index ef7bb4b8ee..c36a140a8e 100644 --- a/python/ovs/_json.c @@ -65490,6 +65690,18 @@ index ac5b0fd0c6..b32341076c 100644 return ovs.socket_util.get_exception_errno(e) return 0 +diff --git a/python/build/__init__.py b/python/ovs_build_helpers/__init__.py +similarity index 100% +rename from python/build/__init__.py +rename to python/ovs_build_helpers/__init__.py +diff --git a/python/build/nroff.py b/python/ovs_build_helpers/nroff.py +similarity index 100% +rename from python/build/nroff.py +rename to python/ovs_build_helpers/nroff.py +diff --git a/python/build/soutil.py b/python/ovs_build_helpers/soutil.py +similarity index 100% +rename from python/build/soutil.py +rename to python/ovs_build_helpers/soutil.py diff --git a/python/setup.py b/python/setup.py index cfe01763f3..36ced65089 100644 --- a/python/setup.py diff --git a/SPECS/openvswitch2.17.spec b/SPECS/openvswitch2.17.spec index 481f898..161db6e 100644 --- a/SPECS/openvswitch2.17.spec +++ b/SPECS/openvswitch2.17.spec @@ -63,7 +63,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.17.0 -Release: 118%{?dist} +Release: 119%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -749,6 +749,16 @@ exit 0 %endif %changelog +* Fri Aug 25 2023 Open vSwitch CI - 2.17.0-119 +- Merging upstream branch-2.17 [RH git: 8a264107bd] + Commit list: + 123b7aaa7c python: Use build to generate PEP517 compatible archives. + 41d2e7e9a8 python: Use twine to upload sdist package to pypi.org. + 66d5562e30 python: Rename build related code to ovs_build_helpers. + c880faea8e dpif-netdev: Fix length calculation of netdet_flow_key. + 8c7aa5f589 doc: Fix description of max_len for controller action. + + * Fri Aug 25 2023 Open vSwitch CI - 2.17.0-118 - Merging upstream branch-2.17 [RH git: 302a65abef] Commit list: