On 4/3/24 17:15, Timothy Redaelli wrote: > Since on CentOS/RHEL the builds are based on stable branches and not on > tags for debugging purpose it's better to have the downstream version as > version so it's easier to know which commits are included in a build. > > This commit adds --with-version-suffix as ./configure option in > order to set an OVS version suffix that should be shown to the user via > ovs-vsctl -V and, so, also on database, on ovs-vsctl show and the other > utilities. > > --with-version-suffix is used in Fedora/CentOS/RHEL spec file in order to have > the version be aligned with the downstream one. > > Signed-off-by: Timothy Redaelli <tredae...@redhat.com> > --- > v1 -> v2: Use --with-version-suffix= and add version to other utilies > (as requested by Ilya). > > v2 -> v3: Add versioning to python utilities and python library itself > (as suggested by Aaron). > > v3 -> v4: Remove versioning to python library itself to avoid breaking > PEP440 (as requested by Ilya). Versioning is still used in > python utilities. > > v4 -> v5: Re-add versioning to python library itself, but don't use it on > setup.py (to avoid breaking PEP440). This will permit to have the > custom version as ovs.version.VERSION (in case somebody uses it) > and, > so, also in python/ovs/unixctl/server.py (as suggested by Ilya). > > v5 -> v6: Fix some setup.py leftovers and change the test as a loop > (as suggested by Ilya). > > v6 -> v7: Rebase with last master (it should pass CI now) > --- > Makefile.am | 1 + > acinclude.m4 | 13 +++++++++++++ > configure.ac | 1 + > include/openvswitch/version.h.in | 2 +- > lib/ovsdb-error.c | 2 +- > lib/util.c | 5 +++-- > ovsdb/ovsdb-server.c | 3 ++- > python/.gitignore | 1 + > python/automake.mk | 11 ++++++++++- > python/{setup.py => setup.py.template} | 9 ++++----- > rhel/openvswitch-fedora.spec.in | 1 + > utilities/ovs-dpctl-top.in | 2 +- > utilities/ovs-lib.in | 2 +- > utilities/ovs-parse-backtrace.in | 2 +- > utilities/ovs-pcap.in | 2 +- > utilities/ovs-pki.in | 2 +- > utilities/ovs-tcpdump.in | 4 ++-- > utilities/ovs-tcpundump.in | 2 +- > utilities/ovs-vlan-test.in | 2 +- > vswitchd/bridge.c | 3 ++- > 20 files changed, 49 insertions(+), 21 deletions(-) > rename python/{setup.py => setup.py.template} (95%) > > diff --git a/Makefile.am b/Makefile.am > index 45fce1243..987bc89ca 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -163,6 +163,7 @@ SUFFIXES += .in > -e 's,[@]PYTHON3[@],$(PYTHON3),g' \ > -e 's,[@]RUNDIR[@],$(RUNDIR),g' \ > -e 's,[@]VERSION[@],$(VERSION),g' \ > + -e 's,[@]VERSION_SUFFIX[@],$(VERSION_SUFFIX),g' \ > -e 's,[@]localstatedir[@],$(localstatedir),g' \ > -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \ > -e 's,[@]sysconfdir[@],$(sysconfdir),g' \ > diff --git a/acinclude.m4 b/acinclude.m4 > index f1ba046c2..f7a81a734 100644 > --- a/acinclude.m4 > +++ b/acinclude.m4 > @@ -497,6 +497,19 @@ AC_DEFUN([OVS_CHECK_DPDK], [ > AM_CONDITIONAL([DPDK_NETDEV], test "$DPDKLIB_FOUND" = true) > ]) > > +dnl Append a version suffix > + > +AC_DEFUN([OVS_CHECK_VERSION_SUFFIX], [ > + AC_ARG_WITH([version-suffix], > + [AS_HELP_STRING([--with-version-suffix=ver_suffix], > + [Specify a version suffix that will be appended > + to OVS version])]) > + AC_DEFINE_UNQUOTED([VERSION_SUFFIX], ["$with_version_suffix"], > + [Package version suffix]) > + AC_SUBST([VERSION_SUFFIX], [$with_version_suffix]) > + ]) > +]) > + > dnl Checks for net/if_dl.h. > dnl > dnl (We use this as a proxy for checking whether we're building on FreeBSD > diff --git a/configure.ac b/configure.ac > index dd6553fea..8323e481d 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -202,6 +202,7 @@ OVS_CHECK_LINUX_SCTP_CT > OVS_CHECK_LINUX_VIRTIO_TYPES > OVS_CHECK_DPDK > OVS_CHECK_PRAGMA_MESSAGE > +OVS_CHECK_VERSION_SUFFIX > AC_SUBST([CFLAGS]) > AC_SUBST([OVS_CFLAGS]) > AC_SUBST([OVS_LDFLAGS]) > diff --git a/include/openvswitch/version.h.in > b/include/openvswitch/version.h.in > index 23d8fde4f..231f61e30 100644 > --- a/include/openvswitch/version.h.in > +++ b/include/openvswitch/version.h.in > @@ -19,7 +19,7 @@ > #define OPENVSWITCH_VERSION_H 1 > > #define OVS_PACKAGE_STRING "@PACKAGE_STRING@" > -#define OVS_PACKAGE_VERSION "@PACKAGE_VERSION@" > +#define OVS_PACKAGE_VERSION "@PACKAGE_VERSION@@VERSION_SUFFIX@" > > #define OVS_LIB_VERSION @LT_CURRENT@ > #define OVS_LIB_REVISION @LT_REVISION@ > diff --git a/lib/ovsdb-error.c b/lib/ovsdb-error.c > index 9ad42b232..56512fc28 100644 > --- a/lib/ovsdb-error.c > +++ b/lib/ovsdb-error.c > @@ -146,7 +146,7 @@ ovsdb_internal_error(struct ovsdb_error *inner_error, > ds_put_char(&ds, ')'); > } > > - ds_put_format(&ds, " (%s %s)", program_name, VERSION); > + ds_put_format(&ds, " (%s %s)", program_name, VERSION VERSION_SUFFIX); > > if (inner_error) { > char *s = ovsdb_error_to_string_free(inner_error); > diff --git a/lib/util.c b/lib/util.c > index 3fb3a4b40..c1bfda0e6 100644 > --- a/lib/util.c > +++ b/lib/util.c > @@ -617,8 +617,9 @@ ovs_set_program_name(const char *argv0, const char > *version) > program_name = basename; > > free(program_version); > - if (!strcmp(version, VERSION)) { > - program_version = xasprintf("%s (Open vSwitch) "VERSION"\n", > + if (!strcmp(version, VERSION VERSION_SUFFIX)) { > + program_version = xasprintf("%s (Open vSwitch) "VERSION > + VERSION_SUFFIX"\n", > program_name); > } else { > program_version = xasprintf("%s %s\n" > diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c > index b51fd42fe..a876f8bcf 100644 > --- a/ovsdb/ovsdb-server.c > +++ b/ovsdb/ovsdb-server.c > @@ -816,7 +816,8 @@ main(int argc, char *argv[]) > /* ovsdb-server is usually a long-running process, in which case it > * makes plenty of sense to log the version, but --run makes > * ovsdb-server more like a command-line tool, so skip it. */ > - VLOG_INFO("%s (Open vSwitch) %s", program_name, VERSION); > + VLOG_INFO("%s (Open vSwitch) %s", program_name, > + VERSION VERSION_SUFFIX); > } > > unixctl_command_register("exit", "", 0, 0, ovsdb_server_exit, &exiting); > diff --git a/python/.gitignore b/python/.gitignore > index 60ace6f05..ad5486af8 100644 > --- a/python/.gitignore > +++ b/python/.gitignore > @@ -1,2 +1,3 @@ > dist/ > *.egg-info > +setup.py > diff --git a/python/automake.mk b/python/automake.mk > index 84cf2eab5..a5df8dbee 100644 > --- a/python/automake.mk > +++ b/python/automake.mk > @@ -129,7 +129,7 @@ ovs-uninstall-local: > ALL_LOCAL += $(srcdir)/python/ovs/version.py > $(srcdir)/python/ovs/version.py: config.status > $(AM_V_GEN)$(ro_shell) > $(@F).tmp && \ > - echo 'VERSION = "$(VERSION)"' >> $(@F).tmp && \ > + echo 'VERSION = "$(VERSION)$(VERSION_SUFFIX)"' >> $(@F).tmp && \ > if cmp -s $(@F).tmp $@; then touch $@; rm $(@F).tmp; else mv $(@F).tmp > $@; fi > > ALL_LOCAL += $(srcdir)/python/ovs/dirs.py > @@ -147,6 +147,15 @@ $(srcdir)/python/ovs/dirs.py: python/ovs/dirs.py.template > EXTRA_DIST += python/ovs/dirs.py.template > CLEANFILES += python/ovs/dirs.py > > +ALL_LOCAL += $(srcdir)/python/setup.py > +$(srcdir)/python/setup.py: python/setup.py.template > + $(AM_V_GEN)sed \ > + -e 's,[@]VERSION[@],$(VERSION),g' \ > + < $? > $@.tmp && \ > + mv $@.tmp $@ > +EXTRA_DIST += python/setup.py.template > +CLEANFILES += python/setup.py > +
Hi, Timothy. I think, you missed some of the comments from v5. Since setup.py is now generated, it should become a dependency for some other targets. For example, it should be a dependency for python-sdist target that fails without it: ERROR Source /home/i.maximets/work/git/ovs/python does not appear to be a Python project: no pyproject.toml or setup.py Also, flake8 should check the template instead of the result. And resulted setup.py should not be part of EXTRA_DIST. At least not directly, but maybe via PYFILES. Best regards, Ilya Maximets. _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev