2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-29 05:18:13 +00:00

rhel: Make the version, displayed to the user, customizable.

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 <tredaelli@redhat.com>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
This commit is contained in:
Timothy Redaelli 2024-07-10 13:06:11 +02:00 committed by Ilya Maximets
parent 1aa9e137fe
commit 9e6d43ef32
20 changed files with 63 additions and 40 deletions

View File

@ -8,6 +8,8 @@
AUTOMAKE_OPTIONS = foreign subdir-objects AUTOMAKE_OPTIONS = foreign subdir-objects
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
AM_DISTCHECK_CONFIGURE_FLAGS = --with-version-suffix="$(VERSION_SUFFIX)"
AM_CPPFLAGS = $(SSL_CFLAGS) AM_CPPFLAGS = $(SSL_CFLAGS)
AM_LDFLAGS = $(SSL_LDFLAGS) AM_LDFLAGS = $(SSL_LDFLAGS)
AM_LDFLAGS += $(OVS_LDFLAGS) AM_LDFLAGS += $(OVS_LDFLAGS)
@ -163,6 +165,7 @@ SUFFIXES += .in
-e 's,[@]PYTHON3[@],$(PYTHON3),g' \ -e 's,[@]PYTHON3[@],$(PYTHON3),g' \
-e 's,[@]RUNDIR[@],$(RUNDIR),g' \ -e 's,[@]RUNDIR[@],$(RUNDIR),g' \
-e 's,[@]VERSION[@],$(VERSION),g' \ -e 's,[@]VERSION[@],$(VERSION),g' \
-e 's,[@]VERSION_SUFFIX[@],$(VERSION_SUFFIX),g' \
-e 's,[@]localstatedir[@],$(localstatedir),g' \ -e 's,[@]localstatedir[@],$(localstatedir),g' \
-e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \ -e 's,[@]pkgdatadir[@],$(pkgdatadir),g' \
-e 's,[@]sysconfdir[@],$(sysconfdir),g' \ -e 's,[@]sysconfdir[@],$(sysconfdir),g' \

View File

@ -497,6 +497,19 @@ AC_DEFUN([OVS_CHECK_DPDK], [
AM_CONDITIONAL([DPDK_NETDEV], test "$DPDKLIB_FOUND" = true) 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 string 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 Checks for net/if_dl.h.
dnl dnl
dnl (We use this as a proxy for checking whether we're building on FreeBSD dnl (We use this as a proxy for checking whether we're building on FreeBSD

View File

@ -202,6 +202,7 @@ OVS_CHECK_LINUX_SCTP_CT
OVS_CHECK_LINUX_VIRTIO_TYPES OVS_CHECK_LINUX_VIRTIO_TYPES
OVS_CHECK_DPDK OVS_CHECK_DPDK
OVS_CHECK_PRAGMA_MESSAGE OVS_CHECK_PRAGMA_MESSAGE
OVS_CHECK_VERSION_SUFFIX
AC_SUBST([CFLAGS]) AC_SUBST([CFLAGS])
AC_SUBST([OVS_CFLAGS]) AC_SUBST([OVS_CFLAGS])
AC_SUBST([OVS_LDFLAGS]) AC_SUBST([OVS_LDFLAGS])

View File

@ -19,7 +19,7 @@
#define OPENVSWITCH_VERSION_H 1 #define OPENVSWITCH_VERSION_H 1
#define OVS_PACKAGE_STRING "@PACKAGE_STRING@" #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_VERSION @LT_CURRENT@
#define OVS_LIB_REVISION @LT_REVISION@ #define OVS_LIB_REVISION @LT_REVISION@

View File

@ -146,7 +146,7 @@ ovsdb_internal_error(struct ovsdb_error *inner_error,
ds_put_char(&ds, ')'); 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) { if (inner_error) {
char *s = ovsdb_error_to_string_free(inner_error); char *s = ovsdb_error_to_string_free(inner_error);

View File

@ -618,12 +618,14 @@ ovs_set_program_name(const char *argv0, const char *version)
program_name = basename; program_name = basename;
free(program_version); free(program_version);
if (!strcmp(version, VERSION)) { if (!strcmp(version, VERSION VERSION_SUFFIX)) {
program_version = xasprintf("%s (Open vSwitch) "VERSION, program_version = xasprintf("%s (Open vSwitch) "VERSION
VERSION_SUFFIX,
program_name); program_name);
} else { } else {
program_version = xasprintf("%s %s\n" program_version = xasprintf("%s %s\n"
"Open vSwitch Library "VERSION, "Open vSwitch Library "VERSION
VERSION_SUFFIX,
program_name, version); program_name, version);
} }
} }

View File

@ -816,7 +816,8 @@ main(int argc, char *argv[])
/* ovsdb-server is usually a long-running process, in which case it /* ovsdb-server is usually a long-running process, in which case it
* makes plenty of sense to log the version, but --run makes * makes plenty of sense to log the version, but --run makes
* ovsdb-server more like a command-line tool, so skip it. */ * 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); unixctl_command_register("exit", "", 0, 0, ovsdb_server_exit, &exiting);

1
python/.gitignore vendored
View File

@ -1,2 +1,3 @@
dist/ dist/
*.egg-info *.egg-info
setup.py

View File

@ -75,25 +75,24 @@ EXTRA_DIST += \
EXTRA_DIST += \ EXTRA_DIST += \
python/ovs/compat/sortedcontainers/LICENSE \ python/ovs/compat/sortedcontainers/LICENSE \
python/README.rst \ python/README.rst \
python/setup.py \
python/test_requirements.txt python/test_requirements.txt
# C extension support. # C extension support.
EXTRA_DIST += python/ovs/_json.c EXTRA_DIST += python/ovs/_json.c
PYFILES = $(ovs_pyfiles) python/ovs/dirs.py $(ovstest_pyfiles) $(ovs_pytests) PYFILES = $(ovs_pyfiles) python/ovs/dirs.py python/setup.py $(ovstest_pyfiles) $(ovs_pytests)
EXTRA_DIST += $(PYFILES) EXTRA_DIST += $(PYFILES)
PYCOV_CLEAN_FILES += $(PYFILES:.py=.py,cover) PYCOV_CLEAN_FILES += $(PYFILES:.py=.py,cover)
FLAKE8_PYFILES += \ FLAKE8_PYFILES += \
$(filter-out python/ovs/compat/% python/ovs/dirs.py,$(PYFILES)) \ $(filter-out python/ovs/compat/% python/ovs/dirs.py python/setup.py,$(PYFILES)) \
python/ovs_build_helpers/__init__.py \ python/ovs_build_helpers/__init__.py \
python/ovs_build_helpers/extract_ofp_fields.py \ python/ovs_build_helpers/extract_ofp_fields.py \
python/ovs_build_helpers/nroff.py \ python/ovs_build_helpers/nroff.py \
python/ovs_build_helpers/soutil.py \ python/ovs_build_helpers/soutil.py \
python/ovs/dirs.py.template \ python/ovs/dirs.py.template \
python/setup.py python/setup.py.template
nobase_pkgdata_DATA = $(ovs_pyfiles) $(ovstest_pyfiles) nobase_pkgdata_DATA = $(ovs_pyfiles) $(ovstest_pyfiles)
ovs-install-data-local: ovs-install-data-local:
@ -113,7 +112,7 @@ ovs-install-data-local:
rm python/ovs/dirs.py.tmp rm python/ovs/dirs.py.tmp
.PHONY: python-sdist .PHONY: python-sdist
python-sdist: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py python-sdist: $(srcdir)/python/ovs/version.py $(ovs_pyfiles) python/ovs/dirs.py python/setup.py
cd python/ && $(PYTHON3) -m build --sdist cd python/ && $(PYTHON3) -m build --sdist
.PHONY: pypi-upload .PHONY: pypi-upload
@ -129,8 +128,8 @@ ovs-uninstall-local:
ALL_LOCAL += $(srcdir)/python/ovs/version.py ALL_LOCAL += $(srcdir)/python/ovs/version.py
$(srcdir)/python/ovs/version.py: config.status $(srcdir)/python/ovs/version.py: config.status
$(AM_V_GEN)$(ro_shell) > $(@F).tmp && \ $(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 if cmp -s $(@F).tmp $@; then touch $@; else cp $(@F).tmp $@; fi; rm $(@F).tmp
ALL_LOCAL += $(srcdir)/python/ovs/dirs.py ALL_LOCAL += $(srcdir)/python/ovs/dirs.py
$(srcdir)/python/ovs/dirs.py: python/ovs/dirs.py.template $(srcdir)/python/ovs/dirs.py: python/ovs/dirs.py.template
@ -147,6 +146,15 @@ $(srcdir)/python/ovs/dirs.py: python/ovs/dirs.py.template
EXTRA_DIST += python/ovs/dirs.py.template EXTRA_DIST += python/ovs/dirs.py.template
CLEANFILES += python/ovs/dirs.py CLEANFILES += python/ovs/dirs.py
ALL_LOCAL += $(srcdir)/python/setup.py
$(srcdir)/python/setup.py: python/setup.py.template config.status
$(AM_V_GEN)sed \
-e 's,[@]VERSION[@],$(VERSION),g' \
< $(srcdir)/python/setup.py.template > $(@F).tmp && \
if cmp -s $(@F).tmp $@; then touch $@; else cp $(@F).tmp $@; fi; rm $(@F).tmp
EXTRA_DIST += python/setup.py.template
CLEANFILES += python/setup.py
EXTRA_DIST += python/TODO.rst EXTRA_DIST += python/TODO.rst
$(srcdir)/python/ovs/flow/ofp_fields.py: $(srcdir)/build-aux/gen_ofp_field_decoders include/openvswitch/meta-flow.h $(srcdir)/python/ovs/flow/ofp_fields.py: $(srcdir)/build-aux/gen_ofp_field_decoders include/openvswitch/meta-flow.h

View File

@ -23,24 +23,16 @@ except ImportError: # Needed for setuptools < 59.0
import setuptools import setuptools
VERSION = "unknown" VERSION = "@VERSION@"
try: for x in ("version.py", "dirs.py"):
# Try to set the version from the generated ovs/version.py try:
exec(open("ovs/version.py").read()) # Try to open generated ovs/{version,dirs}.py
except IOError: open(f"ovs/{x}")
print("Ensure version.py is created by running make python/ovs/version.py", except IOError:
file=sys.stderr) print(f"Ensure {x} is created by running make python/ovs/{x}",
sys.exit(-1) file=sys.stderr)
sys.exit(-1)
try:
# Try to open generated ovs/dirs.py. However, in this case we
# don't need to exec()
open("ovs/dirs.py")
except IOError:
print("Ensure dirs.py is created by running make python/ovs/dirs.py",
file=sys.stderr)
sys.exit(-1)
ext_errors = (CCompilerError, ExecError, PlatformError) ext_errors = (CCompilerError, ExecError, PlatformError)
if sys.platform == 'win32': if sys.platform == 'win32':

View File

@ -186,6 +186,7 @@ This package provides IPsec tunneling support for OVS tunnels.
--disable-static \ --disable-static \
--enable-shared \ --enable-shared \
--with-pkidir=%{_sharedstatedir}/openvswitch/pki \ --with-pkidir=%{_sharedstatedir}/openvswitch/pki \
--with-version-suffix=-%{release} \
PYTHON3=%{__python3} PYTHON3=%{__python3}
build-aux/dpdkstrip.py \ build-aux/dpdkstrip.py \

View File

@ -351,7 +351,7 @@ def args_get():
# None is a special value indicating to read flows from stdin. # None is a special value indicating to read flows from stdin.
# This handles the case # This handles the case
# ovs-dpctl dump-flows | ovs-dpctl-flows.py # ovs-dpctl dump-flows | ovs-dpctl-flows.py
parser.add_argument("-v", "--version", version="@VERSION@", parser.add_argument("-v", "--version", version="@VERSION@@VERSION_SUFFIX@",
action="version", help="show version") action="version", help="show version")
parser.add_argument("-f", "--flow-file", dest="flowFiles", default=None, parser.add_argument("-f", "--flow-file", dest="flowFiles", default=None,
action="append", action="append",

View File

@ -70,7 +70,7 @@ ovs_ctl () {
esac esac
} }
VERSION='@VERSION@' VERSION='@VERSION@@VERSION_SUFFIX@'
DAEMON_CWD=/ DAEMON_CWD=/

View File

@ -51,7 +51,7 @@ def addr2line(binary, addr):
def main(): def main():
parser = optparse.OptionParser(version='@VERSION@', parser = optparse.OptionParser(version='@VERSION@@VERSION_SUFFIX@',
usage="usage: %prog [binary]", usage="usage: %prog [binary]",
description="""\ description="""\
Parses the output of ovs-appctl backtrace producing a more human readable Parses the output of ovs-appctl backtrace producing a more human readable

View File

@ -85,7 +85,7 @@ if __name__ == "__main__":
if key in ['-h', '--help']: if key in ['-h', '--help']:
usage() usage()
elif key in ['-V', '--version']: elif key in ['-V', '--version']:
print("ovs-pcap (Open vSwitch) @VERSION@") print("ovs-pcap (Open vSwitch) @VERSION@@VERSION_SUFFIX@")
else: else:
sys.exit(0) sys.exit(0)

View File

@ -189,7 +189,7 @@ EOF
exit 0 exit 0
;; ;;
-V|--version) -V|--version)
echo "ovs-pki (Open vSwitch) @VERSION@" echo "ovs-pki (Open vSwitch) @VERSION@@VERSION_SUFFIX@"
exit 0 exit 0
;; ;;
--di*=*) --di*=*)

View File

@ -47,7 +47,7 @@ try:
from ovs.fatal_signal import add_hook from ovs.fatal_signal import add_hook
except Exception: except Exception:
print("ERROR: Please install the correct Open vSwitch python support") print("ERROR: Please install the correct Open vSwitch python support")
print(" libraries (version @VERSION@).") print(" libraries (version @VERSION@@VERSION_SUFFIX@).")
print(" Alternatively, check that your PYTHONPATH is pointing to") print(" Alternatively, check that your PYTHONPATH is pointing to")
print(" the correct location.") print(" the correct location.")
sys.exit(1) sys.exit(1)
@ -453,7 +453,7 @@ def main():
if cur in ['-h', '--help']: if cur in ['-h', '--help']:
usage() usage()
elif cur in ['-V', '--version']: elif cur in ['-V', '--version']:
print("ovs-tcpdump (Open vSwitch) @VERSION@") print("ovs-tcpdump (Open vSwitch) @VERSION@@VERSION_SUFFIX@")
sys.exit(0) sys.exit(0)
elif cur in ['--db-sock']: elif cur in ['--db-sock']:
db_sock = nxt db_sock = nxt

View File

@ -46,7 +46,7 @@ if __name__ == "__main__":
if key in ['-h', '--help']: if key in ['-h', '--help']:
usage() usage()
elif key in ['-V', '--version']: elif key in ['-V', '--version']:
print("ovs-tcpundump (Open vSwitch) @VERSION@") print("ovs-tcpundump (Open vSwitch) @VERSION@@VERSION_SUFFIX@")
sys.exit(0) sys.exit(0)
else: else:
sys.exit(0) sys.exit(0)

View File

@ -393,7 +393,7 @@ def main():
usage() usage()
return 0 return 0
elif key in ['-V', '--version']: elif key in ['-V', '--version']:
print_safe('ovs-vlan-test (Open vSwitch) @VERSION@') print_safe('ovs-vlan-test (Open vSwitch) @VERSION@@VERSION_SUFFIX@')
return 0 return 0
elif key in ['-s', '--server']: elif key in ['-s', '--server']:
server = True server = True

View File

@ -3470,7 +3470,8 @@ bridge_run(void)
vlog_enable_async(); vlog_enable_async();
VLOG_INFO_ONCE("%s (Open vSwitch) %s", program_name, VERSION); VLOG_INFO_ONCE("%s (Open vSwitch) %s", program_name,
VERSION VERSION_SUFFIX);
} }
} }