diff mbox series

[ovs-dev,4/5] debian: Update debian package source.

Message ID 20220805203452.3060165-5-frode.nordahl@canonical.com
State Deferred
Headers show
Series debian: Update debian package source. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success
ovsrobot/github-robot-_Build_and_Test fail github build: failed
ovsrobot/github-robot-_ovn-kubernetes fail github build: failed

Commit Message

Frode Nordahl Aug. 5, 2022, 8:34 p.m. UTC
Update debian package source from Debian and Ubuntu.

debian/ovn-common.logrotate comes from the RHEL packaging in this
tree, and author is credited below.

The debian/automake.mk tricks to generate the copyright file while
building came from the work on the debian packaging in openvswitch
and author is credited below.

Signed-off-by: James Page <james.page@ubuntu.com>
Co-Authored-by: James Page <james.page@ubuntu.com>
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Co-Authored-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
Signed-off-by: Numan Siddique <numans@ovn.org>
Co-Authored-by: Numan Siddique <numans@ovn.org>
Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Co-Authored-by: Ilya Maximets <i.maximets@ovn.org>
Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
---
 build-aux/initial-tab-whitelist               |   3 +-
 debian/.gitignore                             |  17 ++
 debian/automake.mk                            |  85 ++++++++-
 debian/control                                | 176 ++++++++++++++++++
 debian/copyright.in                           | 146 +++++++++++++++
 debian/flaky-tests-amd64.txt                  |   6 +
 debian/flaky-tests-arm64.txt                  |   5 +
 debian/flaky-tests-armel.txt                  |   7 +
 debian/flaky-tests-armhf.txt                  |   9 +
 debian/flaky-tests-i386.txt                   |   8 +
 debian/flaky-tests-mips64el.txt               |   5 +
 debian/flaky-tests-mipsel.txt                 |  21 +++
 debian/flaky-tests-ppc64el.txt                |   6 +
 debian/flaky-tests-riscv64.txt                |   6 +
 debian/flaky-tests-s390x.txt                  |   5 +
 debian/gbp.conf                               |  13 ++
 debian/not-installed                          |   5 +
 debian/ovn-central.default                    |   5 +
 debian/ovn-central.install                    |   3 +
 debian/ovn-central.ovn-northd.service         |  15 ++
 .../ovn-central.ovn-ovsdb-server-nb.service   |  18 ++
 .../ovn-central.ovn-ovsdb-server-sb.service   |  18 ++
 debian/ovn-central.postrm                     |  47 +++++
 debian/ovn-central.service                    |  16 ++
 debian/ovn-common.docs                        |   1 +
 debian/ovn-common.install                     |  32 ++++
 debian/ovn-common.logrotate                   |  22 +++
 debian/ovn-common.postinst                    |  24 +++
 debian/ovn-common.postrm                      |  23 +++
 debian/ovn-controller-vtep.install            |   1 +
 debian/ovn-controller-vtep.service            |  16 ++
 debian/ovn-doc.doc-base                       |   9 +
 debian/ovn-doc.install                        |   1 +
 debian/ovn-docker.install                     |   2 +
 debian/ovn-host.default                       |   5 +
 debian/ovn-host.install                       |   1 +
 debian/ovn-host.ovn-controller.service        |  15 ++
 debian/ovn-host.postrm                        |  43 +++++
 debian/ovn-host.service                       |  14 ++
 debian/ovn-ic-db.install                      |   2 +
 .../ovn-ic-db.ovn-ovsdb-server-ic-nb.service  |  15 ++
 .../ovn-ic-db.ovn-ovsdb-server-ic-sb.service  |  15 ++
 debian/ovn-ic-db.service                      |  15 ++
 debian/ovn-ic.install                         |   1 +
 debian/ovn-ic.service                         |  16 ++
 debian/rules                                  | 104 +++++++++++
 debian/source/format                          |   1 +
 debian/source/include-binaries                |   1 +
 debian/testlist.py                            |  72 +++++++
 debian/watch                                  |   5 +
 50 files changed, 1098 insertions(+), 3 deletions(-)
 create mode 100644 debian/.gitignore
 create mode 100644 debian/control
 create mode 100644 debian/copyright.in
 create mode 100644 debian/flaky-tests-amd64.txt
 create mode 100644 debian/flaky-tests-arm64.txt
 create mode 100644 debian/flaky-tests-armel.txt
 create mode 100644 debian/flaky-tests-armhf.txt
 create mode 100644 debian/flaky-tests-i386.txt
 create mode 100644 debian/flaky-tests-mips64el.txt
 create mode 100644 debian/flaky-tests-mipsel.txt
 create mode 100644 debian/flaky-tests-ppc64el.txt
 create mode 100644 debian/flaky-tests-riscv64.txt
 create mode 100644 debian/flaky-tests-s390x.txt
 create mode 100644 debian/gbp.conf
 create mode 100644 debian/not-installed
 create mode 100644 debian/ovn-central.default
 create mode 100644 debian/ovn-central.install
 create mode 100644 debian/ovn-central.ovn-northd.service
 create mode 100644 debian/ovn-central.ovn-ovsdb-server-nb.service
 create mode 100644 debian/ovn-central.ovn-ovsdb-server-sb.service
 create mode 100644 debian/ovn-central.postrm
 create mode 100644 debian/ovn-central.service
 create mode 100644 debian/ovn-common.docs
 create mode 100644 debian/ovn-common.install
 create mode 100644 debian/ovn-common.logrotate
 create mode 100644 debian/ovn-common.postinst
 create mode 100644 debian/ovn-common.postrm
 create mode 100644 debian/ovn-controller-vtep.install
 create mode 100644 debian/ovn-controller-vtep.service
 create mode 100644 debian/ovn-doc.doc-base
 create mode 100644 debian/ovn-doc.install
 create mode 100644 debian/ovn-docker.install
 create mode 100644 debian/ovn-host.default
 create mode 100644 debian/ovn-host.install
 create mode 100644 debian/ovn-host.ovn-controller.service
 create mode 100644 debian/ovn-host.postrm
 create mode 100644 debian/ovn-host.service
 create mode 100644 debian/ovn-ic-db.install
 create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
 create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
 create mode 100644 debian/ovn-ic-db.service
 create mode 100644 debian/ovn-ic.install
 create mode 100644 debian/ovn-ic.service
 create mode 100755 debian/rules
 create mode 100644 debian/source/format
 create mode 100644 debian/source/include-binaries
 create mode 100755 debian/testlist.py
 create mode 100644 debian/watch

Comments

Frode Nordahl Aug. 5, 2022, 8:39 p.m. UTC | #1
Ilya and Numan,

I preemptively added your names to the commit message because the
patch contains your work as detailed in the commit message.

I hope this is ok.

On Fri, Aug 5, 2022 at 10:35 PM Frode Nordahl
<frode.nordahl@canonical.com> wrote:
>
> Update debian package source from Debian and Ubuntu.
>
> debian/ovn-common.logrotate comes from the RHEL packaging in this
> tree, and author is credited below.
>
> The debian/automake.mk tricks to generate the copyright file while
> building came from the work on the debian packaging in openvswitch
> and author is credited below.
>
> Signed-off-by: James Page <james.page@ubuntu.com>
> Co-Authored-by: James Page <james.page@ubuntu.com>
> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> Co-Authored-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> Signed-off-by: Numan Siddique <numans@ovn.org>
> Co-Authored-by: Numan Siddique <numans@ovn.org>
> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
> Co-Authored-by: Ilya Maximets <i.maximets@ovn.org>
> Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
> ---
>  build-aux/initial-tab-whitelist               |   3 +-
>  debian/.gitignore                             |  17 ++
>  debian/automake.mk                            |  85 ++++++++-
>  debian/control                                | 176 ++++++++++++++++++
>  debian/copyright.in                           | 146 +++++++++++++++
>  debian/flaky-tests-amd64.txt                  |   6 +
>  debian/flaky-tests-arm64.txt                  |   5 +
>  debian/flaky-tests-armel.txt                  |   7 +
>  debian/flaky-tests-armhf.txt                  |   9 +
>  debian/flaky-tests-i386.txt                   |   8 +
>  debian/flaky-tests-mips64el.txt               |   5 +
>  debian/flaky-tests-mipsel.txt                 |  21 +++
>  debian/flaky-tests-ppc64el.txt                |   6 +
>  debian/flaky-tests-riscv64.txt                |   6 +
>  debian/flaky-tests-s390x.txt                  |   5 +
>  debian/gbp.conf                               |  13 ++
>  debian/not-installed                          |   5 +
>  debian/ovn-central.default                    |   5 +
>  debian/ovn-central.install                    |   3 +
>  debian/ovn-central.ovn-northd.service         |  15 ++
>  .../ovn-central.ovn-ovsdb-server-nb.service   |  18 ++
>  .../ovn-central.ovn-ovsdb-server-sb.service   |  18 ++
>  debian/ovn-central.postrm                     |  47 +++++
>  debian/ovn-central.service                    |  16 ++
>  debian/ovn-common.docs                        |   1 +
>  debian/ovn-common.install                     |  32 ++++
>  debian/ovn-common.logrotate                   |  22 +++
>  debian/ovn-common.postinst                    |  24 +++
>  debian/ovn-common.postrm                      |  23 +++
>  debian/ovn-controller-vtep.install            |   1 +
>  debian/ovn-controller-vtep.service            |  16 ++
>  debian/ovn-doc.doc-base                       |   9 +
>  debian/ovn-doc.install                        |   1 +
>  debian/ovn-docker.install                     |   2 +
>  debian/ovn-host.default                       |   5 +
>  debian/ovn-host.install                       |   1 +
>  debian/ovn-host.ovn-controller.service        |  15 ++
>  debian/ovn-host.postrm                        |  43 +++++
>  debian/ovn-host.service                       |  14 ++
>  debian/ovn-ic-db.install                      |   2 +
>  .../ovn-ic-db.ovn-ovsdb-server-ic-nb.service  |  15 ++
>  .../ovn-ic-db.ovn-ovsdb-server-ic-sb.service  |  15 ++
>  debian/ovn-ic-db.service                      |  15 ++
>  debian/ovn-ic.install                         |   1 +
>  debian/ovn-ic.service                         |  16 ++
>  debian/rules                                  | 104 +++++++++++
>  debian/source/format                          |   1 +
>  debian/source/include-binaries                |   1 +
>  debian/testlist.py                            |  72 +++++++
>  debian/watch                                  |   5 +
>  50 files changed, 1098 insertions(+), 3 deletions(-)
>  create mode 100644 debian/.gitignore
>  create mode 100644 debian/control
>  create mode 100644 debian/copyright.in
>  create mode 100644 debian/flaky-tests-amd64.txt
>  create mode 100644 debian/flaky-tests-arm64.txt
>  create mode 100644 debian/flaky-tests-armel.txt
>  create mode 100644 debian/flaky-tests-armhf.txt
>  create mode 100644 debian/flaky-tests-i386.txt
>  create mode 100644 debian/flaky-tests-mips64el.txt
>  create mode 100644 debian/flaky-tests-mipsel.txt
>  create mode 100644 debian/flaky-tests-ppc64el.txt
>  create mode 100644 debian/flaky-tests-riscv64.txt
>  create mode 100644 debian/flaky-tests-s390x.txt
>  create mode 100644 debian/gbp.conf
>  create mode 100644 debian/not-installed
>  create mode 100644 debian/ovn-central.default
>  create mode 100644 debian/ovn-central.install
>  create mode 100644 debian/ovn-central.ovn-northd.service
>  create mode 100644 debian/ovn-central.ovn-ovsdb-server-nb.service
>  create mode 100644 debian/ovn-central.ovn-ovsdb-server-sb.service
>  create mode 100644 debian/ovn-central.postrm
>  create mode 100644 debian/ovn-central.service
>  create mode 100644 debian/ovn-common.docs
>  create mode 100644 debian/ovn-common.install
>  create mode 100644 debian/ovn-common.logrotate
>  create mode 100644 debian/ovn-common.postinst
>  create mode 100644 debian/ovn-common.postrm
>  create mode 100644 debian/ovn-controller-vtep.install
>  create mode 100644 debian/ovn-controller-vtep.service
>  create mode 100644 debian/ovn-doc.doc-base
>  create mode 100644 debian/ovn-doc.install
>  create mode 100644 debian/ovn-docker.install
>  create mode 100644 debian/ovn-host.default
>  create mode 100644 debian/ovn-host.install
>  create mode 100644 debian/ovn-host.ovn-controller.service
>  create mode 100644 debian/ovn-host.postrm
>  create mode 100644 debian/ovn-host.service
>  create mode 100644 debian/ovn-ic-db.install
>  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
>  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
>  create mode 100644 debian/ovn-ic-db.service
>  create mode 100644 debian/ovn-ic.install
>  create mode 100644 debian/ovn-ic.service
>  create mode 100755 debian/rules
>  create mode 100644 debian/source/format
>  create mode 100644 debian/source/include-binaries
>  create mode 100755 debian/testlist.py
>  create mode 100644 debian/watch
>
> diff --git a/build-aux/initial-tab-whitelist b/build-aux/initial-tab-whitelist
> index b2f5a0791..71d4f007d 100644
> --- a/build-aux/initial-tab-whitelist
> +++ b/build-aux/initial-tab-whitelist
> @@ -6,6 +6,5 @@
>  ^ovs/
>  ^third-party/
>  ^xenserver/
> -^debian/rules.modules$
> -^debian/rules$
> +^debian/
>  ^\.gitmodules$
> diff --git a/debian/.gitignore b/debian/.gitignore
> new file mode 100644
> index 000000000..d2393b3fd
> --- /dev/null
> +++ b/debian/.gitignore
> @@ -0,0 +1,17 @@
> +*.debhelper
> +*.debhelper.log
> +*.substvars
> +/autoreconf.after
> +/autoreconf.before
> +/copyright
> +/files
> +/ovn-common
> +/ovn-controller-vtep
> +/ovn-host
> +/ovn-central
> +/ovn-docker
> +/debhelper-build-stamp
> +/ovn-doc/
> +/ovn-ic-db/
> +/ovn-ic/
> +/tmp
> diff --git a/debian/automake.mk b/debian/automake.mk
> index ce11fd040..d199c925d 100644
> --- a/debian/automake.mk
> +++ b/debian/automake.mk
> @@ -1,2 +1,85 @@
>  EXTRA_DIST += \
> -       debian/changelog
> +       debian/changelog \
> +       debian/control \
> +       debian/copyright.in \
> +       debian/flaky-tests-amd64.txt \
> +       debian/flaky-tests-arm64.txt \
> +       debian/flaky-tests-armel.txt \
> +       debian/flaky-tests-armhf.txt \
> +       debian/flaky-tests-i386.txt \
> +       debian/flaky-tests-mips64el.txt \
> +       debian/flaky-tests-mipsel.txt \
> +       debian/flaky-tests-ppc64el.txt \
> +       debian/flaky-tests-riscv64.txt \
> +       debian/flaky-tests-s390x.txt \
> +       debian/gbp.conf \
> +       debian/not-installed \
> +       debian/ovn-central.default \
> +       debian/ovn-central.install \
> +       debian/ovn-central.ovn-northd.service \
> +       debian/ovn-central.postrm \
> +       debian/ovn-central.service \
> +       debian/ovn-common.docs \
> +       debian/ovn-common.install \
> +       debian/ovn-common.logrotate \
> +       debian/ovn-common.postinst \
> +       debian/ovn-common.postrm \
> +       debian/ovn-controller-vtep.install \
> +       debian/ovn-controller-vtep.service \
> +       debian/ovn-doc.doc-base \
> +       debian/ovn-doc.install \
> +       debian/ovn-docker.install \
> +       debian/ovn-host.default \
> +       debian/ovn-host.install \
> +       debian/ovn-host.ovn-controller.service \
> +       debian/ovn-host.postrm \
> +       debian/ovn-host.service \
> +       debian/ovn-ic-db.install \
> +       debian/ovn-ic-db.service \
> +       debian/ovn-ic.install \
> +       debian/ovn-ic.service \
> +       debian/rules \
> +       debian/source/format \
> +       debian/source/include-binaries \
> +       debian/testlist.py \
> +       debian/watch
> +
> +check-debian-changelog-version:
> +       @DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`;                \
> +       if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \
> +       then                                                                 \
> +         :;                                                                 \
> +       else                                                                 \
> +         echo "Update debian/changelog to mention version $(VERSION)";      \
> +         exit 1;                                                            \
> +       fi
> +ALL_LOCAL += check-debian-changelog-version
> +DIST_HOOKS += check-debian-changelog-version
> +
> +update_deb_copyright = \
> +       $(AM_V_GEN) \
> +       { sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in;   \
> +         tail -n +28 $(srcdir)/AUTHORS.rst | sed '1,/^$$/d' |             \
> +               sed -n -e '/^$$/q' -e 's/^/  /p';                          \
> +         sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in;           \
> +       } > debian/copyright
> +
> +debian/copyright: AUTHORS.rst debian/copyright.in
> +       $(update_deb_copyright)
> +
> +CLEANFILES += debian/copyright
> +
> +debian: debian/copyright
> +.PHONY: debian
> +
> +debian-deb: debian
> +       @if test X"$(srcdir)" != X"$(top_builddir)"; then                   \
> +               echo "Debian packages should be built from $(abs_srcdir)/"; \
> +               exit 1;                                                     \
> +       fi
> +       $(MAKE) distclean
> +       $(update_deb_copyright)
> +       $(update_deb_control)
> +       $(AM_V_GEN) fakeroot debian/rules clean
> +       $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \
> +               fakeroot debian/rules binary
> diff --git a/debian/control b/debian/control
> new file mode 100644
> index 000000000..a6f395842
> --- /dev/null
> +++ b/debian/control
> @@ -0,0 +1,176 @@
> +Source: ovn
> +Section: net
> +Priority: optional
> +Maintainer: OVN developers <dev@openvswitch.org>
> +Build-Depends:
> + autoconf,
> + automake,
> + bzip2,
> + debhelper-compat (= 10),
> + dh-python,
> + graphviz,
> + libcap-ng-dev,
> + libnuma-dev [amd64 i386 ppc64el arm64],
> + libpcap-dev [amd64 i386 ppc64el arm64],
> + libssl-dev,
> + libtool,
> + libudev-dev,
> + libunbound-dev,
> + openssl,
> + openstack-pkg-tools,
> + openvswitch-source (>= 2.17.2-3~),
> + pkg-config,
> + procps,
> + python3-all-dev,
> + python3-setuptools,
> + python3-sortedcontainers,
> + python3-sphinx,
> + tcpdump,
> +Standards-Version: 4.6.1
> +Homepage: https://www.ovn.org/
> +
> +Package: ovn-central
> +Architecture: linux-any
> +Pre-Depends: ${misc:Pre-Depends},
> +Depends:
> + lsb-base,
> + lsb-release,
> + openvswitch-common (>= 2.17.0~),
> + ovn-common (= ${binary:Version}),
> + ${misc:Depends},
> + ${shlibs:Depends},
> +Description: OVN central components
> + OVN, the Open Virtual Network, is a system to support virtual network
> + abstraction. OVN complements the existing capabilities of OVS to add native
> + support for virtual network abstractions, such as virtual L2 and L3 overlays
> + and security groups.
> + .
> + ovn-central provides the userspace daemons, utilities and
> + databases for OVN that is run at a central location.
> +
> +Package: ovn-common
> +Architecture: linux-any
> +Depends:
> + ${misc:Depends},
> + ${python3:Depends},
> + ${shlibs:Depends},
> +Breaks:
> + ovn-ic-db (<< 22.03~),
> +Replaces:
> + ovn-ic-db (<< 22.03~),
> +Description: OVN common components
> + OVN, the Open Virtual Network, is a system to support virtual network
> + abstraction. OVN complements the existing capabilities of OVS to add native
> + support for virtual network abstractions, such as virtual L2 and L3 overlays
> + and security groups.
> + .
> + ovn-common provides components required by other OVN packages.
> +
> +Package: ovn-controller-vtep
> +Architecture: linux-any
> +Pre-Depends: ${misc:Pre-Depends},
> +Depends:
> + lsb-base,
> + ovn-common (= ${binary:Version}),
> + ${misc:Depends},
> + ${shlibs:Depends},
> +Description: OVN vtep controller
> + ovn-controller-vtep is the local controller daemon in OVN, the Open Virtual
> + Network, for VTEP enabled physical switches. It connects up to the OVN
> + Southbound database over the OVSDB protocol, and down to the VTEP database
> + over the OVSDB protocol.
> + .
> + ovn-controller-vtep provides the ovn-controller-vtep binary for controlling
> + vtep gateways.
> +
> +Package: ovn-doc
> +Section: doc
> +Architecture: all
> +Depends:
> + ${misc:Depends},
> + ${sphinxdoc:Depends},
> +Description: OVN documentation
> + OVN, the Open Virtual Network, is a system to support virtual network
> + abstraction.  OVN complements the existing capabilities of OVS to add
> + native support for virtual network abstractions, such as virtual L2 and L3
> + overlays and security groups.
> + .
> + This package provides documentation for configuration and use
> + of OVN.
> +
> +Package: ovn-docker
> +Architecture: linux-any
> +Depends:
> + openvswitch-common (>= 2.17.0~),
> + ovn-common (= ${binary:Version}),
> + python3-openvswitch (>= 2.17.0~),
> + ${misc:Depends},
> + ${python3:Depends},
> + ${shlibs:Depends},
> +Description: OVN Docker drivers
> + OVN, the Open Virtual Network, is a system to support virtual network
> + abstraction.  OVN complements the existing capabilities of OVS to add
> + native support for virtual network abstractions, such as virtual L2 and L3
> + overlays and security groups.
> + .
> + ovn-docker provides the docker drivers for OVN.
> +
> +Package: ovn-host
> +Architecture: linux-any
> +Pre-Depends: ${misc:Pre-Depends},
> +Depends:
> + lsb-base,
> + lsb-release,
> + openvswitch-switch (>= 2.17.0~),
> + ovn-common (= ${binary:Version}),
> + ${misc:Depends},
> + ${shlibs:Depends},
> +Description: OVN host components
> + OVN, the Open Virtual Network, is a system to support virtual network
> + abstraction.  OVN complements the existing capabilities of OVS to add
> + native support for virtual network abstractions, such as virtual L2 and L3
> + overlays and security groups.
> + .
> + ovn-host provides the userspace components and utilities for
> + OVN that can be run on every host/hypervisor.
> +
> +Package: ovn-ic
> +Architecture: linux-any
> +Pre-Depends: ${misc:Pre-Depends},
> +Depends:
> + lsb-base,
> + lsb-release,
> + ovn-common (= ${binary:Version}),
> + ${misc:Depends},
> + ${shlibs:Depends},
> +Enhances:
> + ovn-central,
> +Suggests:
> + ovn-ic-db,
> +Description: Open Virtual Network interconnection controller
> + OVN IC, the Open Virtual Network interconnection controller, is a
> + centralized daemon which communicates with global interconnection
> + databases to configure and exchange data with local OVN databases for
> + interconnection with other OVN deployments.
> + .
> + This package provides the ovn-ic daemon which should be run alongside
> + ovn-central services in each OVN deployment zone.
> +
> +Package: ovn-ic-db
> +Architecture: linux-any
> +Pre-Depends: ${misc:Pre-Depends},
> +Depends:
> + lsb-base,
> + lsb-release,
> + openvswitch-common (>= 2.17.0~),
> + ovn-common (= ${binary:Version}),
> + ${misc:Depends},
> + ${shlibs:Depends},
> +Description: Open Virtual Network interconnection controller databases
> + OVN IC, the Open Virtual Network interconnection controller, is a
> + centralized daemon which communicates with global interconnection
> + databases to configure and exchange data with local OVN databases for
> + interconnection with other OVN deployments.
> + .
> + This package provides the global OVN IC southbound and northbound
> + OVSDB databases.
> diff --git a/debian/copyright.in b/debian/copyright.in
> new file mode 100644
> index 000000000..911704ae0
> --- /dev/null
> +++ b/debian/copyright.in
> @@ -0,0 +1,146 @@
> +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
> +Upstream-Name: Open Virtual Network (OVN)
> +Source: https://github.com/ovn-org/ovn
> +Files-Excluded: debian
> +Upstream-Authors:
> +%AUTHORS%
> +
> +Files: *
> +Copyright: 2007-2017 Nicira, Inc.
> +           2010 Jean Tourrilhes - HP-Labs.
> +           2008,2009,2010 Citrix Systems, Inc.
> +           2011 Gaetano Catalli
> +           2000-2003 Geoffrey Wossum <gwossum@acm.org>
> +           2000 The NetBSD Foundation, Inc.
> +           1995, 1996, 1997, and 1998 WIDE Project.
> +           1982, 1986, 1990, 1993 The Regents of the University of California.
> +           2008, 2012 Vincent Bernat <bernat@luffy.cx>
> +           2014 Michael Chapman
> +           2014 WindRiver, Inc.
> +           2014 Avaya, Inc.
> +           2001 Daniel Hartmeier
> +           2002 - 2008 Henning Brauer
> +           2012 Gleb Smirnoff <glebius@FreeBSD.org>
> +           2015-2019 Red Hat, Inc.
> +           2017 DtDream Technology Co., Ltd.
> +           2018 eBay Inc.
> +License: Apache-2.0
> +Comment:
> + This package contains code from other projects and authors not
> + mentioned elsewhere.
> + .
> + Open vSwitch
> + Copyright (c) 2007, 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
> + .
> + Open vSwitch BSD port
> + Copyright (c) 2011 Gaetano Catalli
> + .
> + Apache Portable Runtime
> + Copyright 2008 The Apache Software Foundation.
> + .
> + This product includes software developed by
> + The Apache Software Foundation (http://www.apache.org/).
> + .
> + Portions of this software were developed at the National Center
> + for Supercomputing Applications (NCSA) at the University of
> + Illinois at Urbana-Champaign.
> + .
> + lib/ovs.tmac includes troff macros written by Eric S. Raymond
> + and Werner Lemberg.
> + .
> + m4/include_next.m4 and m4/absolute-header.m4
> + Copyright (C) 2006-2013 Free Software Foundation, Inc.
> + .
> + Rapid Spanning Tree Protocol (RSTP) implementation
> + Copyright (c) 2011-2014 M3S, Srl - Italy
> + .
> + LLDP implementation
> + Copyright (c) 2008, 2012 Vincent Bernat <bernat@luffy.cx>
> + .
> + LLDP includes code used from the Net::CDP project based on the ISC license
> + Copyright (c) 2014 Michael Chapman
> + .
> + LLDP includes code used from the ladvd project based on the ISC license
> + Copyright (c) 2008, 2009, 2010 Sten Spans <sten@blinkenlights.nl>
> + .
> + Auto Attach implementation
> + Copyright (c) 2014, 2015 WindRiver, Inc
> + Copyright (c) 2014, 2015 Avaya, Inc
> + .
> + TCP connection tracker from FreeBSD pf, BSD licensed
> + Copyright (c) 2001 Daniel Hartmeier
> + Copyright (c) 2002 - 2008 Henning Brauer
> + Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>
> +
> +Files: build-aux/cccl
> +Copyright: 2000-2003 Geoffrey Wossum <gwossum@acm.org>
> +License: GPL-2
> +
> +Files: utilities/bugtool/ovn-bugtool-*
> +       utilities/bugtool/plugins/network-status/ovn.xml
> +Copyright: 2016 Nicira, Inc.
> +License: LGPL-2.1
> +
> +Files: m4/absolute-header.m4
> +       m4/include_next.m4
> +Copyright: Derek Price
> +           Paul Eggert
> +           2006-2013 Free Software Foundation, Inc.
> +License: file-is-free-software
> + This file is free software; the Free Software Foundation
> + gives unlimited permission to copy and/or distribute it,
> + with or without modifications, as long as this notice is preserved.
> +
> +Files: ovn-vif/*
> +Copyright: 2021 Canonical
> +License: Apache-2.0
> +
> +License: GPL-2
> + This program is free software; you can redistribute it and/or modify it under
> + the terms of the GNU General Public License as published by the Free Software
> + Foundation; either version 2 of the License, or (at your option) any later
> + version.
> + .
> + This program is distributed in the hope that it will be useful, but WITHOUT
> + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
> + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
> + .
> + You should have received a copy of the GNU General Public License along with
> + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
> + St, Fifth Floor, Boston, MA 02110-1301 USA
> + .
> + On Debian systems, the complete text of the GNU General Public License v2
> + (GPL) can be found in /usr/share/common-licenses/GPL-2.
> +
> +License: LGPL-2.1
> + This library is free software; you can redistribute it and/or modify it under
> + the terms of the GNU Lesser General Public License as published by the Free
> + Software Foundation; either version 2.1 of the License.
> + .
> + This library is distributed in the hope that it will be useful, but WITHOUT
> + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
> + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
> + details.
> + .
> + You should have received a copy of the GNU Lesser General Public License along
> + with this library; if not, write to the Free Software Foundation, Inc., 51
> + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> + .
> + On Debian systems, the complete text of the GNU Lesser General Public License
> + (LGPL) may be found in /usr/share/common-licenses/LGPL-2.
> +
> +License: Apache-2.0
> + Licensed under the Apache License, Version 2.0 (the "License");
> + you may not use this file except in compliance with the License.
> + You may obtain a copy of the License at
> + .
> +    http://www.apache.org/licenses/LICENSE-2.0
> + .
> + Unless required by applicable law or agreed to in writing, software
> + distributed under the License is distributed on an "AS IS" BASIS,
> + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> + See the License for the specific language governing permissions and
> + limitations under the License.
> + .
> + On Debian-based systems the full text of the Apache version 2.0 license
> + can be found in `/usr/share/common-licenses/Apache-2.0'.
> diff --git a/debian/flaky-tests-amd64.txt b/debian/flaky-tests-amd64.txt
> new file mode 100644
> index 000000000..cfe5d8c66
> --- /dev/null
> +++ b/debian/flaky-tests-amd64.txt
> @@ -0,0 +1,6 @@
> +send gratuitous arp on localnet
> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> +ACLs on Port Groups
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +northd ssl file change
> diff --git a/debian/flaky-tests-arm64.txt b/debian/flaky-tests-arm64.txt
> new file mode 100644
> index 000000000..996d0537e
> --- /dev/null
> +++ b/debian/flaky-tests-arm64.txt
> @@ -0,0 +1,5 @@
> +ovn-controller incremental processing
> +nb_cfg timestamp
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +ipsec -- basic configuration
> diff --git a/debian/flaky-tests-armel.txt b/debian/flaky-tests-armel.txt
> new file mode 100644
> index 000000000..6ce03bb10
> --- /dev/null
> +++ b/debian/flaky-tests-armel.txt
> @@ -0,0 +1,7 @@
> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> +1 LR with distributed router gateway port
> +ACL conjunction
> +IP packet buffering
> +test transport zones
> +lflow cache for conjunctions
> +nb_cfg timestamp
> diff --git a/debian/flaky-tests-armhf.txt b/debian/flaky-tests-armhf.txt
> new file mode 100644
> index 000000000..43654f3ae
> --- /dev/null
> +++ b/debian/flaky-tests-armhf.txt
> @@ -0,0 +1,9 @@
> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> +ovn-controller incremental processing
> +ACL conjunction
> +neighbor update on same HV
> +nb_cfg timestamp
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +ovn-ic -- gateway sync
> +ipsec -- basic configuration
> diff --git a/debian/flaky-tests-i386.txt b/debian/flaky-tests-i386.txt
> new file mode 100644
> index 000000000..b82300de9
> --- /dev/null
> +++ b/debian/flaky-tests-i386.txt
> @@ -0,0 +1,8 @@
> +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
> +nb_cfg timestamp
> +ARP replies for SNAT external ips
> +conflict ACLs with address set
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +ovn-ic -- gateway sync
> +ipsec -- basic configuration
> diff --git a/debian/flaky-tests-mips64el.txt b/debian/flaky-tests-mips64el.txt
> new file mode 100644
> index 000000000..e67e2c4ca
> --- /dev/null
> +++ b/debian/flaky-tests-mips64el.txt
> @@ -0,0 +1,5 @@
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +ovn-ic -- gateway sync
> +ipsec -- basic configuration
> +nb_cfg timestamp
> diff --git a/debian/flaky-tests-mipsel.txt b/debian/flaky-tests-mipsel.txt
> new file mode 100644
> index 000000000..00d383572
> --- /dev/null
> +++ b/debian/flaky-tests-mipsel.txt
> @@ -0,0 +1,21 @@
> +vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS
> +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> +send gratuitous arp for nat ips in localnet
> +send gratuitous arp for NAT rules on distributed router
> +vlan traffic for external network with distributed router gateway port
> +send gratuitous ARP for NAT rules on HA distributed router
> +ACL conjunction
> +router - check packet length - icmp defrag
> +router - check packet length - icmp defrag
> +IP packet buffering
> +test transport zones
> +Load balancer health checks
> +interconnection
> +nb_cfg timestamp
> +conflict ACLs with address set
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +northd ssl file change
> +ovn-ic -- gateway sync
> +ipsec -- basic configuration
> diff --git a/debian/flaky-tests-ppc64el.txt b/debian/flaky-tests-ppc64el.txt
> new file mode 100644
> index 000000000..6e089b6cb
> --- /dev/null
> +++ b/debian/flaky-tests-ppc64el.txt
> @@ -0,0 +1,6 @@
> +options:requested-chassis for logical port
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +northd ssl file change
> +ovn-ic -- gateway sync
> +ipsec -- basic configuration
> diff --git a/debian/flaky-tests-riscv64.txt b/debian/flaky-tests-riscv64.txt
> new file mode 100644
> index 000000000..50570ab80
> --- /dev/null
> +++ b/debian/flaky-tests-riscv64.txt
> @@ -0,0 +1,6 @@
> +send gratuitous arp on localnet
> +1 LR with distributed router gateway port
> +router - check packet length - icmp defrag
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +ipsec -- basic configuration
> diff --git a/debian/flaky-tests-s390x.txt b/debian/flaky-tests-s390x.txt
> new file mode 100644
> index 000000000..a642063d9
> --- /dev/null
> +++ b/debian/flaky-tests-s390x.txt
> @@ -0,0 +1,5 @@
> +options:requested-chassis for logical port
> +ACLs on Port Groups
> +multi-vtep SB Chassis encap updates
> +ACL with Port Group conjunction flow efficiency
> +ipsec -- basic configuration
> diff --git a/debian/gbp.conf b/debian/gbp.conf
> new file mode 100644
> index 000000000..438b3fa8d
> --- /dev/null
> +++ b/debian/gbp.conf
> @@ -0,0 +1,13 @@
> +[DEFAULT]
> +debian-branch = main
> +upstream-branch = upstream
> +pristine-tar = True
> +components = ['ovn-vif']
> +
> +[import-orig]
> +upstream-vcs-tag = v%(version)s
> +
> +[dch]
> +multimaint-merge = True
> +customizations=/usr/share/doc/git-buildpackage/examples/wrap_cl.py
> +git-log=--first-parent
> diff --git a/debian/not-installed b/debian/not-installed
> new file mode 100644
> index 000000000..e213b139d
> --- /dev/null
> +++ b/debian/not-installed
> @@ -0,0 +1,5 @@
> +# The OVN library and headers are currently not considered ABI/API stable.
> +# If the need arises to build sibling projects we should probably provide an
> +# ovn-source package.
> +usr/include/*
> +usr/lib/*
> diff --git a/debian/ovn-central.default b/debian/ovn-central.default
> new file mode 100644
> index 000000000..7cea13e50
> --- /dev/null
> +++ b/debian/ovn-central.default
> @@ -0,0 +1,5 @@
> +# This is a POSIX shell fragment                -*- sh -*-
> +
> +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
> +# a suitable place to specify --ovn-northd-wrapper=valgrind.
> +# OVN_CTL_OPTS=
> diff --git a/debian/ovn-central.install b/debian/ovn-central.install
> new file mode 100644
> index 000000000..095ca7cfa
> --- /dev/null
> +++ b/debian/ovn-central.install
> @@ -0,0 +1,3 @@
> +usr/bin/ovn-northd
> +usr/share/ovn/ovn-nb.ovsschema
> +usr/share/ovn/ovn-sb.ovsschema
> diff --git a/debian/ovn-central.ovn-northd.service b/debian/ovn-central.ovn-northd.service
> new file mode 100644
> index 000000000..09c600016
> --- /dev/null
> +++ b/debian/ovn-central.ovn-northd.service
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=Open Virtual Network central control daemon
> +After=network.target ovn-nb-ovsdb.service ovn-sb-ovsdb.service
> +PartOf=ovn-central.service
> +DefaultDependencies=no
> +
> +[Service]
> +Type=forking
> +EnvironmentFile=-/etc/default/ovn-central
> +PIDFile=%t/ovn/ovn-northd.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_northd --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_northd --no-monitor
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> diff --git a/debian/ovn-central.ovn-ovsdb-server-nb.service b/debian/ovn-central.ovn-ovsdb-server-nb.service
> new file mode 100644
> index 000000000..81f6c75a3
> --- /dev/null
> +++ b/debian/ovn-central.ovn-ovsdb-server-nb.service
> @@ -0,0 +1,18 @@
> +[Unit]
> +Description=Open vSwitch database server for OVN Northbound database
> +After=network.target
> +PartOf=ovn-central.service
> +DefaultDependencies=no
> +
> +[Service]
> +Type=simple
> +EnvironmentFile=-/etc/default/ovn-central
> +PIDFile=%t/ovn/ovnnb_db.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_nb_ovsdb
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> +
> +[Install]
> +Alias=ovn-nb-ovsdb.service
> diff --git a/debian/ovn-central.ovn-ovsdb-server-sb.service b/debian/ovn-central.ovn-ovsdb-server-sb.service
> new file mode 100644
> index 000000000..3aa840d2f
> --- /dev/null
> +++ b/debian/ovn-central.ovn-ovsdb-server-sb.service
> @@ -0,0 +1,18 @@
> +[Unit]
> +Description=Open vSwitch database server for OVN Southbound database
> +After=network.target
> +PartOf=ovn-central.service
> +DefaultDependencies=no
> +
> +[Service]
> +Type=simple
> +EnvironmentFile=-/etc/default/ovn-central
> +PIDFile=%t/run/ovn/ovnsb_db.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_sb_ovsdb
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> +
> +[Install]
> +Alias=ovn-sb-ovsdb.service
> diff --git a/debian/ovn-central.postrm b/debian/ovn-central.postrm
> new file mode 100644
> index 000000000..3b3483fc3
> --- /dev/null
> +++ b/debian/ovn-central.postrm
> @@ -0,0 +1,47 @@
> +#!/bin/sh
> +# postrm script for ovn-central
> +#
> +# see: dh_installdeb(1)
> +
> +set -e
> +
> +# summary of how this script can be called:
> +#        * <postrm> `remove'
> +#        * <postrm> `purge'
> +#        * <old-postrm> `upgrade' <new-version>
> +#        * <new-postrm> `failed-upgrade' <old-version>
> +#        * <new-postrm> `abort-install'
> +#        * <new-postrm> `abort-install' <old-version>
> +#        * <new-postrm> `abort-upgrade' <old-version>
> +#        * <disappearer's-postrm> `disappear' <overwriter>
> +#          <overwriter-version>
> +# for details, see http://www.debian.org/doc/debian-policy/ or
> +# the debian-policy package
> +
> +
> +case "$1" in
> +    purge)
> +        rm -f /etc/openvswitch/ovnnb.db*
> +        rm -f /etc/openvswitch/.ovnnb.db.~lock~
> +        rm -f /etc/openvswitch/ovnsb.db*
> +        rm -f /etc/openvswitch/.ovnsb.db.~lock~
> +        rm -f /var/log/openvswitch/ovn-northd.log* || true
> +        ;;
> +
> +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> +        ;;
> +
> +    *)
> +        echo "postrm called with unknown argument \`$1'" >&2
> +        exit 1
> +        ;;
> +esac
> +
> +# dh_installdeb will replace this with shell code automatically
> +# generated by other debhelper scripts.
> +
> +#DEBHELPER#
> +
> +exit 0
> +
> +
> diff --git a/debian/ovn-central.service b/debian/ovn-central.service
> new file mode 100644
> index 000000000..aead7eae6
> --- /dev/null
> +++ b/debian/ovn-central.service
> @@ -0,0 +1,16 @@
> +[Unit]
> +Description=Open Virtual Network central components
> +After=network.target
> +Requires=network.target
> +Wants=ovn-northd.service
> +Wants=ovn-ovsdb-server-sb.service
> +Wants=ovn-ovsdb-server-nb.service
> +
> +[Service]
> +Type=oneshot
> +ExecStart=/bin/true
> +ExecStop=/bin/true
> +RemainAfterExit=yes
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/debian/ovn-common.docs b/debian/ovn-common.docs
> new file mode 100644
> index 000000000..6d5ee1d05
> --- /dev/null
> +++ b/debian/ovn-common.docs
> @@ -0,0 +1 @@
> +NOTICE
> diff --git a/debian/ovn-common.install b/debian/ovn-common.install
> new file mode 100644
> index 000000000..52e9e0050
> --- /dev/null
> +++ b/debian/ovn-common.install
> @@ -0,0 +1,32 @@
> +usr/bin/ovn-appctl
> +usr/bin/ovn_detrace.py
> +usr/bin/ovn-detrace
> +usr/bin/ovn-nbctl
> +usr/bin/ovn-sbctl
> +/usr/bin/ovn-ic-nbctl
> +/usr/bin/ovn-ic-sbctl
> +usr/bin/ovn-trace
> +usr/share/ovn/bugtool-plugins/network-status/ovn.xml
> +usr/share/ovn/scripts/ovn-ctl
> +usr/share/ovn/scripts/ovn-lib
> +usr/share/ovn/scripts/ovndb-servers.ocf
> +usr/share/ovn/scripts/ovn-bugtool-nbctl-show
> +usr/share/ovn/scripts/ovn-bugtool-sbctl-lflow-list
> +usr/share/ovn/scripts/ovn-bugtool-sbctl-show
> +usr/share/man/man1/ovn-detrace.1
> +usr/share/man/man5/ovn-ic-nb.5
> +usr/share/man/man5/ovn-ic-sb.5
> +usr/share/man/man5/ovn-nb.5
> +usr/share/man/man5/ovn-sb.5
> +usr/share/man/man7/ovn-architecture.7
> +usr/share/man/man8/ovn-appctl.8
> +usr/share/man/man8/ovn-controller-vtep.8
> +usr/share/man/man8/ovn-controller.8
> +usr/share/man/man8/ovn-ctl.8
> +usr/share/man/man8/ovn-ic-nbctl.8
> +usr/share/man/man8/ovn-ic-sbctl.8
> +usr/share/man/man8/ovn-ic.8
> +usr/share/man/man8/ovn-nbctl.8
> +usr/share/man/man8/ovn-northd.8
> +usr/share/man/man8/ovn-sbctl.8
> +usr/share/man/man8/ovn-trace.8
> diff --git a/debian/ovn-common.logrotate b/debian/ovn-common.logrotate
> new file mode 100644
> index 000000000..a351ec303
> --- /dev/null
> +++ b/debian/ovn-common.logrotate
> @@ -0,0 +1,22 @@
> +# Copyright (C) 2019 Red Hat, Inc.
> +#
> +# Copying and distribution of this file, with or without modification,
> +# are permitted in any medium without royalty provided the copyright
> +# notice and this notice are preserved.  This file is offered as-is,
> +# without warranty of any kind.
> +
> +/var/log/ovn/*.log {
> +    su root root
> +    daily
> +    compress
> +    sharedscripts
> +    missingok
> +    postrotate
> +        # Tell OVN daemons to reopen their log files
> +        if [ -d /var/run/ovn ]; then
> +            for ctl in /var/run/ovn/*.ctl; do
> +                ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
> +            done
> +        fi
> +    endscript
> +}
> diff --git a/debian/ovn-common.postinst b/debian/ovn-common.postinst
> new file mode 100644
> index 000000000..588044fbc
> --- /dev/null
> +++ b/debian/ovn-common.postinst
> @@ -0,0 +1,24 @@
> +#!/bin/sh
> +# postinst script for ovn-common
> +#
> +# see: dh_installdeb(1)
> +
> +set -e
> +
> +case "$1" in
> +    configure)
> +        mkdir -p /usr/lib/ocf/resource.d/ovn
> +        ln -sf /usr/share/openvswitch/scripts/ovndb-servers.ocf /usr/lib/ocf/resource.d/ovn/ovndb-servers
> +        ;;
> +    abort-upgrade|abort-remove|abort-deconfigure)
> +        ;;
> +
> +    *)
> +        echo "postinst called with unknown argument \`$1'" >&2
> +        exit 1
> +        ;;
> +esac
> +
> +#DEBHELPER#
> +
> +exit 0
> diff --git a/debian/ovn-common.postrm b/debian/ovn-common.postrm
> new file mode 100644
> index 000000000..9face726b
> --- /dev/null
> +++ b/debian/ovn-common.postrm
> @@ -0,0 +1,23 @@
> +#!/bin/sh
> +# postrm script for openvswitch-testcontroller
> +#
> +# see: dh_installdeb(1)
> +
> +set -e
> +
> +case "$1" in
> +    purge|remove)
> +        rm -rf /usr/lib/ocf/resource.d/ovn
> +        ;;
> +    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> +        ;;
> +
> +    *)
> +        echo "postrm called with unknown argument \`$1'" >&2
> +        exit 1
> +        ;;
> +esac
> +
> +#DEBHELPER#
> +
> +exit 0
> diff --git a/debian/ovn-controller-vtep.install b/debian/ovn-controller-vtep.install
> new file mode 100644
> index 000000000..1d208f37e
> --- /dev/null
> +++ b/debian/ovn-controller-vtep.install
> @@ -0,0 +1 @@
> +usr/bin/ovn-controller-vtep
> diff --git a/debian/ovn-controller-vtep.service b/debian/ovn-controller-vtep.service
> new file mode 100644
> index 000000000..d51e75277
> --- /dev/null
> +++ b/debian/ovn-controller-vtep.service
> @@ -0,0 +1,16 @@
> +[Unit]
> +Description=Open Virtual Network VTEP gateway controller daemon
> +After=openvswitch-switch.service
> +Requires=openvswitch-switch.service
> +
> +[Service]
> +Type=forking
> +PIDFile=%t/ovn/ovn-controller-vtep.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller_vtep --no-monitor $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller_vtep --no-monitor
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/debian/ovn-doc.doc-base b/debian/ovn-doc.doc-base
> new file mode 100644
> index 000000000..c7192ebdb
> --- /dev/null
> +++ b/debian/ovn-doc.doc-base
> @@ -0,0 +1,9 @@
> +Document: ovn-doc
> +Title: Open Virtual Network Documentation
> +Author: N/A
> +Abstract: Sphinx documentation for Open Virtual Network
> +Section: Network/Communication
> +
> +Format: HTML
> +Index: /usr/share/doc/ovn-doc/html/index.html
> +Files: /usr/share/doc/ovn-doc/html/*
> diff --git a/debian/ovn-doc.install b/debian/ovn-doc.install
> new file mode 100644
> index 000000000..4cfd153cf
> --- /dev/null
> +++ b/debian/ovn-doc.install
> @@ -0,0 +1 @@
> +Documentation/_build/html/* /usr/share/doc/ovn-doc/html/
> diff --git a/debian/ovn-docker.install b/debian/ovn-docker.install
> new file mode 100644
> index 000000000..583306732
> --- /dev/null
> +++ b/debian/ovn-docker.install
> @@ -0,0 +1,2 @@
> +usr/bin/ovn-docker-overlay-driver
> +usr/bin/ovn-docker-underlay-driver
> diff --git a/debian/ovn-host.default b/debian/ovn-host.default
> new file mode 100644
> index 000000000..7fd54efda
> --- /dev/null
> +++ b/debian/ovn-host.default
> @@ -0,0 +1,5 @@
> +# This is a POSIX shell fragment                -*- sh -*-
> +
> +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
> +# a suitable place to specify --ovn-controller-wrapper=valgrind.
> +# OVN_CTL_OPTS=
> diff --git a/debian/ovn-host.install b/debian/ovn-host.install
> new file mode 100644
> index 000000000..d2de82fd9
> --- /dev/null
> +++ b/debian/ovn-host.install
> @@ -0,0 +1 @@
> +usr/bin/ovn-controller
> diff --git a/debian/ovn-host.ovn-controller.service b/debian/ovn-host.ovn-controller.service
> new file mode 100644
> index 000000000..a41e77d75
> --- /dev/null
> +++ b/debian/ovn-host.ovn-controller.service
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=Open Virtual Network host control daemon
> +After=network.target openvswitch-switch.service
> +PartOf=ovn-host.service
> +DefaultDependencies=no
> +
> +[Service]
> +Type=forking
> +EnvironmentFile=-/etc/default/ovn-host
> +PIDFile=%t/ovn/ovn-controller.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller --no-monitor
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> diff --git a/debian/ovn-host.postrm b/debian/ovn-host.postrm
> new file mode 100644
> index 000000000..9d17ef966
> --- /dev/null
> +++ b/debian/ovn-host.postrm
> @@ -0,0 +1,43 @@
> +#!/bin/sh
> +# postrm script for ovn-host
> +#
> +# see: dh_installdeb(1)
> +
> +set -e
> +
> +# summary of how this script can be called:
> +#        * <postrm> `remove'
> +#        * <postrm> `purge'
> +#        * <old-postrm> `upgrade' <new-version>
> +#        * <new-postrm> `failed-upgrade' <old-version>
> +#        * <new-postrm> `abort-install'
> +#        * <new-postrm> `abort-install' <old-version>
> +#        * <new-postrm> `abort-upgrade' <old-version>
> +#        * <disappearer's-postrm> `disappear' <overwriter>
> +#          <overwriter-version>
> +# for details, see http://www.debian.org/doc/debian-policy/ or
> +# the debian-policy package
> +
> +
> +case "$1" in
> +    purge)
> +        rm -f /var/log/openvswitch/ovn-controller.log* || true
> +        ;;
> +
> +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> +        ;;
> +
> +    *)
> +        echo "postrm called with unknown argument \`$1'" >&2
> +        exit 1
> +        ;;
> +esac
> +
> +# dh_installdeb will replace this with shell code automatically
> +# generated by other debhelper scripts.
> +
> +#DEBHELPER#
> +
> +exit 0
> +
> +
> diff --git a/debian/ovn-host.service b/debian/ovn-host.service
> new file mode 100644
> index 000000000..b524888fd
> --- /dev/null
> +++ b/debian/ovn-host.service
> @@ -0,0 +1,14 @@
> +[Unit]
> +Description=Open Virtual Network host components
> +After=network.target
> +Requires=network.target
> +Wants=ovn-controller.service
> +
> +[Service]
> +Type=oneshot
> +ExecStart=/bin/true
> +ExecStop=/bin/true
> +RemainAfterExit=yes
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/debian/ovn-ic-db.install b/debian/ovn-ic-db.install
> new file mode 100644
> index 000000000..a4d50002e
> --- /dev/null
> +++ b/debian/ovn-ic-db.install
> @@ -0,0 +1,2 @@
> +/usr/share/ovn/ovn-ic-nb.ovsschema
> +/usr/share/ovn/ovn-ic-sb.ovsschema
> diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> new file mode 100644
> index 000000000..193024daf
> --- /dev/null
> +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=Open vSwitch database server for OVN IC Northbound database
> +After=network.target
> +PartOf=ovn-ic-db.service
> +DefaultDependencies=no
> +
> +[Service]
> +Type=simple
> +EnvironmentFile=-/etc/default/ovn-ic
> +PIDFile=%t/ovn/ovn_ic_nb_db.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_nb_ovsdb $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_nb_ovsdb
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> new file mode 100644
> index 000000000..714748325
> --- /dev/null
> +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=Open vSwitch database server for OVN IC Southbound database
> +After=network.target
> +PartOf=ovn-ic-db.service
> +DefaultDependencies=no
> +
> +[Service]
> +Type=simple
> +EnvironmentFile=-/etc/default/ovn-ic
> +PIDFile=%t/ovn/ovn_ic_sb_db.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_sb_ovsdb $OVN_CTL_OPTS
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_sb_ovsdb
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> diff --git a/debian/ovn-ic-db.service b/debian/ovn-ic-db.service
> new file mode 100644
> index 000000000..b116bc79d
> --- /dev/null
> +++ b/debian/ovn-ic-db.service
> @@ -0,0 +1,15 @@
> +[Unit]
> +Description=Open Virtual Network interconnection databases
> +After=network.target
> +Requires=network.target
> +Wants=ovn-ovsdb-server-ic-sb.service
> +Wants=ovn-ovsdb-server-ic-nb.service
> +
> +[Service]
> +Type=oneshot
> +ExecStart=/bin/true
> +ExecStop=/bin/true
> +RemainAfterExit=yes
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/debian/ovn-ic.install b/debian/ovn-ic.install
> new file mode 100644
> index 000000000..b15508259
> --- /dev/null
> +++ b/debian/ovn-ic.install
> @@ -0,0 +1 @@
> +/usr/bin/ovn-ic
> diff --git a/debian/ovn-ic.service b/debian/ovn-ic.service
> new file mode 100644
> index 000000000..07974285f
> --- /dev/null
> +++ b/debian/ovn-ic.service
> @@ -0,0 +1,16 @@
> +[Unit]
> +Description=Open Virtual Network interconnection controller
> +After=network.target
> +Requires=network.target
> +
> +[Service]
> +Type=forking
> +PIDFile=%t/ovn/ovn-ic.pid
> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_ic --no-monitor
> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic
> +Restart=on-failure
> +LimitNOFILE=65535
> +TimeoutStopSec=15
> +
> +[Install]
> +WantedBy=multi-user.target
> diff --git a/debian/rules b/debian/rules
> new file mode 100755
> index 000000000..4596afb49
> --- /dev/null
> +++ b/debian/rules
> @@ -0,0 +1,104 @@
> +#!/usr/bin/make -f
> +# -*- makefile -*-
> +#export DH_VERBOSE=1
> +export DEB_BUILD_MAINT_OPTIONS = hardening=+all
> +
> +%:
> +       dh $@ --with autoreconf,python3,sphinxdoc
> +
> +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
> +PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
> +else
> +PARALLEL =
> +endif
> +
> +override_dh_auto_configure:
> +       # Configure OVS before OVN
> +       test -d $(CURDIR)/ovs || mkdir ovs
> +       cd ovs && tar -xzf /usr/src/openvswitch/openvswitch.tar.gz --strip-components=1
> +       cd ovs && ./configure --enable-ssl --localstatedir=/var --sysconfdir=/etc --prefix=/usr && make $(PARALLEL)
> +       # Configure OVN to allow building OVN VIF
> +       ./boot.sh && ./configure \
> +               --prefix=/usr \
> +               --localstatedir=/var \
> +               --sysconfdir=/etc \
> +               --with-dbdir=/var/lib/ovn \
> +               --with-ovs-source=$(CURDIR)/ovs \
> +               --enable-ssl
> +       # Configure and build OVN VIF
> +       cd ovn-vif && \
> +               ./boot.sh && \
> +               ./configure \
> +                       --with-ovs-source=$(CURDIR)/ovs \
> +                       --with-ovn-source=$(CURDIR) \
> +                       --enable-plug-representor && \
> +               make $(PARALLEL)
> +       # Use dh_auto_configure to build OVN
> +       dh_auto_configure -- \
> +               --prefix=/usr \
> +               --localstatedir=/var \
> +               --sysconfdir=/etc \
> +               --with-dbdir=/var/lib/ovn \
> +               --with-ovs-source=$(CURDIR)/ovs \
> +               --enable-ssl \
> +               --with-vif-plug-provider=$(CURDIR)/ovn-vif
> +       $(MAKE) debian/copyright
> +
> +TEST_LIST = $(shell \
> +                $(CURDIR)/debian/testlist.py \
> +                $(CURDIR)/debian/flaky-tests-$(DEB_HOST_ARCH).txt \
> +                $(CURDIR)/tests/testsuite)
> +
> +override_dh_auto_test:
> +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
> +       if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST)' || \
> +                $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \
> +       else \
> +               cat tests/testsuite.log; \
> +               exit 1; \
> +       fi
> +endif # nocheck
> +
> +override_dh_auto_build:
> +       cd ovs && $(MAKE) $(PARALLEL)
> +       $(MAKE) $(PARALLEL)
> +
> +override_dh_auto_clean:
> +       dh_auto_clean
> +       cd ovn-vif && make distclean | :
> +       rm -rf ovs
> +
> +override_dh_installinit:
> +       # Package does not ship any init.d files
> +       dh_installinit --no-scripts
> +
> +override_dh_installsystemd:
> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-northd
> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-sb
> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-nb
> +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-sb
> +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-nb
> +       dh_installsystemd --restart-after-upgrade -povn-host    --name=ovn-controller
> +       dh_installsystemd --restart-after-upgrade
> +
> +override_dh_python3:
> +       dh_python3 --shebang=/usr/bin/python3
> +
> +# Helper target for creating snapshots from upstream git
> +DATE=$(shell date +%Y%m%d)
> +# Upstream branch to track
> +BRANCH=main
> +VERSION=22.09.0
> +
> +get-orig-snapshot:
> +       rm -Rf ovn-upstream ovn-vif-upstream
> +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn ovn-upstream
> +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn-vif ovn-vif-upstream
> +       cd ovn-upstream && \
> +               export COMMIT=`git rev-parse --short HEAD` && \
> +               git archive --format tgz --prefix=ovn-$(VERSION)~git$(DATE).$$COMMIT/ \
> +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH) && \
> +               cd ../ovn-vif-upstream && \
> +               git archive --format tgz --prefix=ovn-vif-$(VERSION)~git$(DATE).$$COMMIT/ \
> +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig-ovn-vif.tar.gz $(BRANCH)
> +       rm -Rf ovn-upstream ovn-vif-upstream
> diff --git a/debian/source/format b/debian/source/format
> new file mode 100644
> index 000000000..163aaf8d8
> --- /dev/null
> +++ b/debian/source/format
> @@ -0,0 +1 @@
> +3.0 (quilt)
> diff --git a/debian/source/include-binaries b/debian/source/include-binaries
> new file mode 100644
> index 000000000..2dfb2fe55
> --- /dev/null
> +++ b/debian/source/include-binaries
> @@ -0,0 +1 @@
> +ovn-vif/Documentation/_static/logo.png
> diff --git a/debian/testlist.py b/debian/testlist.py
> new file mode 100755
> index 000000000..24d2ae9c5
> --- /dev/null
> +++ b/debian/testlist.py
> @@ -0,0 +1,72 @@
> +#!/usr/bin/env python3
> +import enum
> +import itertools
> +import os
> +import sys
> +
> +
> +if len(sys.argv) < 3:
> +    print(
> +        "usage: {} skipdescriptionlist testsuite\n"
> +        "\n"
> +        "This program reads two files, a skiplist containing the \n"
> +        "description of tests to skip separated by newline, and a \n"
> +        "generated testsuite script.\n"
> +        "\n"
> +        "From this it produces string with range of tests to execute \n"
> +        "which can be provided to the testsuite script.\n".format(sys.argv[0]),
> +        file=sys.stderr,
> +    )
> +    sys.exit(os.EX_USAGE)
> +
> +
> +SKIP_TEST_STRINGS = []
> +with open(sys.argv[1]) as fin:
> +    SKIP_TEST_STRINGS = [line.rstrip() for line in fin.readlines()]
> +
> +
> +@enum.unique
> +class State(enum.Enum):
> +    INIT = enum.auto()
> +    AT_HELP_ALL = enum.auto()
> +
> +
> +SKIP_TESTS = set()
> +TESTS = set()
> +with open(sys.argv[2]) as fin:
> +    state = State.INIT
> +    last_test = 0
> +    for line in fin.readlines():
> +        if state == State.INIT:
> +            if not line.startswith('at_help_all="'):
> +                continue
> +            else:
> +                state = State.AT_HELP_ALL
> +                data = line.split('"')[1].rstrip().split(";")
> +        elif state == State.AT_HELP_ALL:
> +            if line.startswith('"'):
> +                break
> +            data = line.rstrip().split(";")
> +        test_nr = int(data[0])
> +        if last_test < test_nr:
> +            last_test = test_nr
> +        for skip_string in SKIP_TEST_STRINGS:
> +            if skip_string in data[2]:
> +                SKIP_TESTS.add(test_nr)
> +            else:
> +                TESTS.add(test_nr)
> +
> +
> +def ranges(testlist):
> +    for a, b in itertools.groupby(
> +        enumerate(list(testlist)), lambda pair: pair[1] - pair[0]
> +    ):
> +        b = list(b)
> +        yield b[0][1], b[-1][1]
> +
> +
> +testranges = [
> +    "{}-{}".format(testrange[0], testrange[1])
> +    for testrange in ranges(TESTS - SKIP_TESTS)
> +]
> +print(" ".join(testranges))
> diff --git a/debian/watch b/debian/watch
> new file mode 100644
> index 000000000..4831f3456
> --- /dev/null
> +++ b/debian/watch
> @@ -0,0 +1,5 @@
> +version=4
> +opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-$1\.tar\.gz/ \
> +  https://github.com/ovn-org/ovn/tags .*/v?(\d\S+)\.tar\.gz
> +opts="filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-vif-$1\.tar\.gz/, component=ovn-vif" \
> +  https://github.com/ovn-org/ovn-vif/tags .*/v?(\d\S+)\.tar\.gz
> --
> 2.36.1
>
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
Numan Siddique Aug. 10, 2022, 12:57 a.m. UTC | #2
On Sat, Aug 6, 2022 at 6:40 AM Frode Nordahl
<frode.nordahl@canonical.com> wrote:
>
> Ilya and Numan,
>
> I preemptively added your names to the commit message because the
> patch contains your work as detailed in the commit message.
>
> I hope this is ok.

I'm fine.  I would've been fine even without the credit.

I do not have expertise in debian packaging to review the patch series.
I'll wait for others to review for a few days.

Numan

>
> On Fri, Aug 5, 2022 at 10:35 PM Frode Nordahl
> <frode.nordahl@canonical.com> wrote:
> >
> > Update debian package source from Debian and Ubuntu.
> >
> > debian/ovn-common.logrotate comes from the RHEL packaging in this
> > tree, and author is credited below.
> >
> > The debian/automake.mk tricks to generate the copyright file while
> > building came from the work on the debian packaging in openvswitch
> > and author is credited below.
> >
> > Signed-off-by: James Page <james.page@ubuntu.com>
> > Co-Authored-by: James Page <james.page@ubuntu.com>
> > Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> > Co-Authored-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> > Signed-off-by: Numan Siddique <numans@ovn.org>
> > Co-Authored-by: Numan Siddique <numans@ovn.org>
> > Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
> > Co-Authored-by: Ilya Maximets <i.maximets@ovn.org>
> > Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
> > ---
> >  build-aux/initial-tab-whitelist               |   3 +-
> >  debian/.gitignore                             |  17 ++
> >  debian/automake.mk                            |  85 ++++++++-
> >  debian/control                                | 176 ++++++++++++++++++
> >  debian/copyright.in                           | 146 +++++++++++++++
> >  debian/flaky-tests-amd64.txt                  |   6 +
> >  debian/flaky-tests-arm64.txt                  |   5 +
> >  debian/flaky-tests-armel.txt                  |   7 +
> >  debian/flaky-tests-armhf.txt                  |   9 +
> >  debian/flaky-tests-i386.txt                   |   8 +
> >  debian/flaky-tests-mips64el.txt               |   5 +
> >  debian/flaky-tests-mipsel.txt                 |  21 +++
> >  debian/flaky-tests-ppc64el.txt                |   6 +
> >  debian/flaky-tests-riscv64.txt                |   6 +
> >  debian/flaky-tests-s390x.txt                  |   5 +
> >  debian/gbp.conf                               |  13 ++
> >  debian/not-installed                          |   5 +
> >  debian/ovn-central.default                    |   5 +
> >  debian/ovn-central.install                    |   3 +
> >  debian/ovn-central.ovn-northd.service         |  15 ++
> >  .../ovn-central.ovn-ovsdb-server-nb.service   |  18 ++
> >  .../ovn-central.ovn-ovsdb-server-sb.service   |  18 ++
> >  debian/ovn-central.postrm                     |  47 +++++
> >  debian/ovn-central.service                    |  16 ++
> >  debian/ovn-common.docs                        |   1 +
> >  debian/ovn-common.install                     |  32 ++++
> >  debian/ovn-common.logrotate                   |  22 +++
> >  debian/ovn-common.postinst                    |  24 +++
> >  debian/ovn-common.postrm                      |  23 +++
> >  debian/ovn-controller-vtep.install            |   1 +
> >  debian/ovn-controller-vtep.service            |  16 ++
> >  debian/ovn-doc.doc-base                       |   9 +
> >  debian/ovn-doc.install                        |   1 +
> >  debian/ovn-docker.install                     |   2 +
> >  debian/ovn-host.default                       |   5 +
> >  debian/ovn-host.install                       |   1 +
> >  debian/ovn-host.ovn-controller.service        |  15 ++
> >  debian/ovn-host.postrm                        |  43 +++++
> >  debian/ovn-host.service                       |  14 ++
> >  debian/ovn-ic-db.install                      |   2 +
> >  .../ovn-ic-db.ovn-ovsdb-server-ic-nb.service  |  15 ++
> >  .../ovn-ic-db.ovn-ovsdb-server-ic-sb.service  |  15 ++
> >  debian/ovn-ic-db.service                      |  15 ++
> >  debian/ovn-ic.install                         |   1 +
> >  debian/ovn-ic.service                         |  16 ++
> >  debian/rules                                  | 104 +++++++++++
> >  debian/source/format                          |   1 +
> >  debian/source/include-binaries                |   1 +
> >  debian/testlist.py                            |  72 +++++++
> >  debian/watch                                  |   5 +
> >  50 files changed, 1098 insertions(+), 3 deletions(-)
> >  create mode 100644 debian/.gitignore
> >  create mode 100644 debian/control
> >  create mode 100644 debian/copyright.in
> >  create mode 100644 debian/flaky-tests-amd64.txt
> >  create mode 100644 debian/flaky-tests-arm64.txt
> >  create mode 100644 debian/flaky-tests-armel.txt
> >  create mode 100644 debian/flaky-tests-armhf.txt
> >  create mode 100644 debian/flaky-tests-i386.txt
> >  create mode 100644 debian/flaky-tests-mips64el.txt
> >  create mode 100644 debian/flaky-tests-mipsel.txt
> >  create mode 100644 debian/flaky-tests-ppc64el.txt
> >  create mode 100644 debian/flaky-tests-riscv64.txt
> >  create mode 100644 debian/flaky-tests-s390x.txt
> >  create mode 100644 debian/gbp.conf
> >  create mode 100644 debian/not-installed
> >  create mode 100644 debian/ovn-central.default
> >  create mode 100644 debian/ovn-central.install
> >  create mode 100644 debian/ovn-central.ovn-northd.service
> >  create mode 100644 debian/ovn-central.ovn-ovsdb-server-nb.service
> >  create mode 100644 debian/ovn-central.ovn-ovsdb-server-sb.service
> >  create mode 100644 debian/ovn-central.postrm
> >  create mode 100644 debian/ovn-central.service
> >  create mode 100644 debian/ovn-common.docs
> >  create mode 100644 debian/ovn-common.install
> >  create mode 100644 debian/ovn-common.logrotate
> >  create mode 100644 debian/ovn-common.postinst
> >  create mode 100644 debian/ovn-common.postrm
> >  create mode 100644 debian/ovn-controller-vtep.install
> >  create mode 100644 debian/ovn-controller-vtep.service
> >  create mode 100644 debian/ovn-doc.doc-base
> >  create mode 100644 debian/ovn-doc.install
> >  create mode 100644 debian/ovn-docker.install
> >  create mode 100644 debian/ovn-host.default
> >  create mode 100644 debian/ovn-host.install
> >  create mode 100644 debian/ovn-host.ovn-controller.service
> >  create mode 100644 debian/ovn-host.postrm
> >  create mode 100644 debian/ovn-host.service
> >  create mode 100644 debian/ovn-ic-db.install
> >  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> >  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> >  create mode 100644 debian/ovn-ic-db.service
> >  create mode 100644 debian/ovn-ic.install
> >  create mode 100644 debian/ovn-ic.service
> >  create mode 100755 debian/rules
> >  create mode 100644 debian/source/format
> >  create mode 100644 debian/source/include-binaries
> >  create mode 100755 debian/testlist.py
> >  create mode 100644 debian/watch
> >
> > diff --git a/build-aux/initial-tab-whitelist b/build-aux/initial-tab-whitelist
> > index b2f5a0791..71d4f007d 100644
> > --- a/build-aux/initial-tab-whitelist
> > +++ b/build-aux/initial-tab-whitelist
> > @@ -6,6 +6,5 @@
> >  ^ovs/
> >  ^third-party/
> >  ^xenserver/
> > -^debian/rules.modules$
> > -^debian/rules$
> > +^debian/
> >  ^\.gitmodules$
> > diff --git a/debian/.gitignore b/debian/.gitignore
> > new file mode 100644
> > index 000000000..d2393b3fd
> > --- /dev/null
> > +++ b/debian/.gitignore
> > @@ -0,0 +1,17 @@
> > +*.debhelper
> > +*.debhelper.log
> > +*.substvars
> > +/autoreconf.after
> > +/autoreconf.before
> > +/copyright
> > +/files
> > +/ovn-common
> > +/ovn-controller-vtep
> > +/ovn-host
> > +/ovn-central
> > +/ovn-docker
> > +/debhelper-build-stamp
> > +/ovn-doc/
> > +/ovn-ic-db/
> > +/ovn-ic/
> > +/tmp
> > diff --git a/debian/automake.mk b/debian/automake.mk
> > index ce11fd040..d199c925d 100644
> > --- a/debian/automake.mk
> > +++ b/debian/automake.mk
> > @@ -1,2 +1,85 @@
> >  EXTRA_DIST += \
> > -       debian/changelog
> > +       debian/changelog \
> > +       debian/control \
> > +       debian/copyright.in \
> > +       debian/flaky-tests-amd64.txt \
> > +       debian/flaky-tests-arm64.txt \
> > +       debian/flaky-tests-armel.txt \
> > +       debian/flaky-tests-armhf.txt \
> > +       debian/flaky-tests-i386.txt \
> > +       debian/flaky-tests-mips64el.txt \
> > +       debian/flaky-tests-mipsel.txt \
> > +       debian/flaky-tests-ppc64el.txt \
> > +       debian/flaky-tests-riscv64.txt \
> > +       debian/flaky-tests-s390x.txt \
> > +       debian/gbp.conf \
> > +       debian/not-installed \
> > +       debian/ovn-central.default \
> > +       debian/ovn-central.install \
> > +       debian/ovn-central.ovn-northd.service \
> > +       debian/ovn-central.postrm \
> > +       debian/ovn-central.service \
> > +       debian/ovn-common.docs \
> > +       debian/ovn-common.install \
> > +       debian/ovn-common.logrotate \
> > +       debian/ovn-common.postinst \
> > +       debian/ovn-common.postrm \
> > +       debian/ovn-controller-vtep.install \
> > +       debian/ovn-controller-vtep.service \
> > +       debian/ovn-doc.doc-base \
> > +       debian/ovn-doc.install \
> > +       debian/ovn-docker.install \
> > +       debian/ovn-host.default \
> > +       debian/ovn-host.install \
> > +       debian/ovn-host.ovn-controller.service \
> > +       debian/ovn-host.postrm \
> > +       debian/ovn-host.service \
> > +       debian/ovn-ic-db.install \
> > +       debian/ovn-ic-db.service \
> > +       debian/ovn-ic.install \
> > +       debian/ovn-ic.service \
> > +       debian/rules \
> > +       debian/source/format \
> > +       debian/source/include-binaries \
> > +       debian/testlist.py \
> > +       debian/watch
> > +
> > +check-debian-changelog-version:
> > +       @DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`;                \
> > +       if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \
> > +       then                                                                 \
> > +         :;                                                                 \
> > +       else                                                                 \
> > +         echo "Update debian/changelog to mention version $(VERSION)";      \
> > +         exit 1;                                                            \
> > +       fi
> > +ALL_LOCAL += check-debian-changelog-version
> > +DIST_HOOKS += check-debian-changelog-version
> > +
> > +update_deb_copyright = \
> > +       $(AM_V_GEN) \
> > +       { sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in;   \
> > +         tail -n +28 $(srcdir)/AUTHORS.rst | sed '1,/^$$/d' |             \
> > +               sed -n -e '/^$$/q' -e 's/^/  /p';                          \
> > +         sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in;           \
> > +       } > debian/copyright
> > +
> > +debian/copyright: AUTHORS.rst debian/copyright.in
> > +       $(update_deb_copyright)
> > +
> > +CLEANFILES += debian/copyright
> > +
> > +debian: debian/copyright
> > +.PHONY: debian
> > +
> > +debian-deb: debian
> > +       @if test X"$(srcdir)" != X"$(top_builddir)"; then                   \
> > +               echo "Debian packages should be built from $(abs_srcdir)/"; \
> > +               exit 1;                                                     \
> > +       fi
> > +       $(MAKE) distclean
> > +       $(update_deb_copyright)
> > +       $(update_deb_control)
> > +       $(AM_V_GEN) fakeroot debian/rules clean
> > +       $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \
> > +               fakeroot debian/rules binary
> > diff --git a/debian/control b/debian/control
> > new file mode 100644
> > index 000000000..a6f395842
> > --- /dev/null
> > +++ b/debian/control
> > @@ -0,0 +1,176 @@
> > +Source: ovn
> > +Section: net
> > +Priority: optional
> > +Maintainer: OVN developers <dev@openvswitch.org>
> > +Build-Depends:
> > + autoconf,
> > + automake,
> > + bzip2,
> > + debhelper-compat (= 10),
> > + dh-python,
> > + graphviz,
> > + libcap-ng-dev,
> > + libnuma-dev [amd64 i386 ppc64el arm64],
> > + libpcap-dev [amd64 i386 ppc64el arm64],
> > + libssl-dev,
> > + libtool,
> > + libudev-dev,
> > + libunbound-dev,
> > + openssl,
> > + openstack-pkg-tools,
> > + openvswitch-source (>= 2.17.2-3~),
> > + pkg-config,
> > + procps,
> > + python3-all-dev,
> > + python3-setuptools,
> > + python3-sortedcontainers,
> > + python3-sphinx,
> > + tcpdump,
> > +Standards-Version: 4.6.1
> > +Homepage: https://www.ovn.org/
> > +
> > +Package: ovn-central
> > +Architecture: linux-any
> > +Pre-Depends: ${misc:Pre-Depends},
> > +Depends:
> > + lsb-base,
> > + lsb-release,
> > + openvswitch-common (>= 2.17.0~),
> > + ovn-common (= ${binary:Version}),
> > + ${misc:Depends},
> > + ${shlibs:Depends},
> > +Description: OVN central components
> > + OVN, the Open Virtual Network, is a system to support virtual network
> > + abstraction. OVN complements the existing capabilities of OVS to add native
> > + support for virtual network abstractions, such as virtual L2 and L3 overlays
> > + and security groups.
> > + .
> > + ovn-central provides the userspace daemons, utilities and
> > + databases for OVN that is run at a central location.
> > +
> > +Package: ovn-common
> > +Architecture: linux-any
> > +Depends:
> > + ${misc:Depends},
> > + ${python3:Depends},
> > + ${shlibs:Depends},
> > +Breaks:
> > + ovn-ic-db (<< 22.03~),
> > +Replaces:
> > + ovn-ic-db (<< 22.03~),
> > +Description: OVN common components
> > + OVN, the Open Virtual Network, is a system to support virtual network
> > + abstraction. OVN complements the existing capabilities of OVS to add native
> > + support for virtual network abstractions, such as virtual L2 and L3 overlays
> > + and security groups.
> > + .
> > + ovn-common provides components required by other OVN packages.
> > +
> > +Package: ovn-controller-vtep
> > +Architecture: linux-any
> > +Pre-Depends: ${misc:Pre-Depends},
> > +Depends:
> > + lsb-base,
> > + ovn-common (= ${binary:Version}),
> > + ${misc:Depends},
> > + ${shlibs:Depends},
> > +Description: OVN vtep controller
> > + ovn-controller-vtep is the local controller daemon in OVN, the Open Virtual
> > + Network, for VTEP enabled physical switches. It connects up to the OVN
> > + Southbound database over the OVSDB protocol, and down to the VTEP database
> > + over the OVSDB protocol.
> > + .
> > + ovn-controller-vtep provides the ovn-controller-vtep binary for controlling
> > + vtep gateways.
> > +
> > +Package: ovn-doc
> > +Section: doc
> > +Architecture: all
> > +Depends:
> > + ${misc:Depends},
> > + ${sphinxdoc:Depends},
> > +Description: OVN documentation
> > + OVN, the Open Virtual Network, is a system to support virtual network
> > + abstraction.  OVN complements the existing capabilities of OVS to add
> > + native support for virtual network abstractions, such as virtual L2 and L3
> > + overlays and security groups.
> > + .
> > + This package provides documentation for configuration and use
> > + of OVN.
> > +
> > +Package: ovn-docker
> > +Architecture: linux-any
> > +Depends:
> > + openvswitch-common (>= 2.17.0~),
> > + ovn-common (= ${binary:Version}),
> > + python3-openvswitch (>= 2.17.0~),
> > + ${misc:Depends},
> > + ${python3:Depends},
> > + ${shlibs:Depends},
> > +Description: OVN Docker drivers
> > + OVN, the Open Virtual Network, is a system to support virtual network
> > + abstraction.  OVN complements the existing capabilities of OVS to add
> > + native support for virtual network abstractions, such as virtual L2 and L3
> > + overlays and security groups.
> > + .
> > + ovn-docker provides the docker drivers for OVN.
> > +
> > +Package: ovn-host
> > +Architecture: linux-any
> > +Pre-Depends: ${misc:Pre-Depends},
> > +Depends:
> > + lsb-base,
> > + lsb-release,
> > + openvswitch-switch (>= 2.17.0~),
> > + ovn-common (= ${binary:Version}),
> > + ${misc:Depends},
> > + ${shlibs:Depends},
> > +Description: OVN host components
> > + OVN, the Open Virtual Network, is a system to support virtual network
> > + abstraction.  OVN complements the existing capabilities of OVS to add
> > + native support for virtual network abstractions, such as virtual L2 and L3
> > + overlays and security groups.
> > + .
> > + ovn-host provides the userspace components and utilities for
> > + OVN that can be run on every host/hypervisor.
> > +
> > +Package: ovn-ic
> > +Architecture: linux-any
> > +Pre-Depends: ${misc:Pre-Depends},
> > +Depends:
> > + lsb-base,
> > + lsb-release,
> > + ovn-common (= ${binary:Version}),
> > + ${misc:Depends},
> > + ${shlibs:Depends},
> > +Enhances:
> > + ovn-central,
> > +Suggests:
> > + ovn-ic-db,
> > +Description: Open Virtual Network interconnection controller
> > + OVN IC, the Open Virtual Network interconnection controller, is a
> > + centralized daemon which communicates with global interconnection
> > + databases to configure and exchange data with local OVN databases for
> > + interconnection with other OVN deployments.
> > + .
> > + This package provides the ovn-ic daemon which should be run alongside
> > + ovn-central services in each OVN deployment zone.
> > +
> > +Package: ovn-ic-db
> > +Architecture: linux-any
> > +Pre-Depends: ${misc:Pre-Depends},
> > +Depends:
> > + lsb-base,
> > + lsb-release,
> > + openvswitch-common (>= 2.17.0~),
> > + ovn-common (= ${binary:Version}),
> > + ${misc:Depends},
> > + ${shlibs:Depends},
> > +Description: Open Virtual Network interconnection controller databases
> > + OVN IC, the Open Virtual Network interconnection controller, is a
> > + centralized daemon which communicates with global interconnection
> > + databases to configure and exchange data with local OVN databases for
> > + interconnection with other OVN deployments.
> > + .
> > + This package provides the global OVN IC southbound and northbound
> > + OVSDB databases.
> > diff --git a/debian/copyright.in b/debian/copyright.in
> > new file mode 100644
> > index 000000000..911704ae0
> > --- /dev/null
> > +++ b/debian/copyright.in
> > @@ -0,0 +1,146 @@
> > +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
> > +Upstream-Name: Open Virtual Network (OVN)
> > +Source: https://github.com/ovn-org/ovn
> > +Files-Excluded: debian
> > +Upstream-Authors:
> > +%AUTHORS%
> > +
> > +Files: *
> > +Copyright: 2007-2017 Nicira, Inc.
> > +           2010 Jean Tourrilhes - HP-Labs.
> > +           2008,2009,2010 Citrix Systems, Inc.
> > +           2011 Gaetano Catalli
> > +           2000-2003 Geoffrey Wossum <gwossum@acm.org>
> > +           2000 The NetBSD Foundation, Inc.
> > +           1995, 1996, 1997, and 1998 WIDE Project.
> > +           1982, 1986, 1990, 1993 The Regents of the University of California.
> > +           2008, 2012 Vincent Bernat <bernat@luffy.cx>
> > +           2014 Michael Chapman
> > +           2014 WindRiver, Inc.
> > +           2014 Avaya, Inc.
> > +           2001 Daniel Hartmeier
> > +           2002 - 2008 Henning Brauer
> > +           2012 Gleb Smirnoff <glebius@FreeBSD.org>
> > +           2015-2019 Red Hat, Inc.
> > +           2017 DtDream Technology Co., Ltd.
> > +           2018 eBay Inc.
> > +License: Apache-2.0
> > +Comment:
> > + This package contains code from other projects and authors not
> > + mentioned elsewhere.
> > + .
> > + Open vSwitch
> > + Copyright (c) 2007, 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
> > + .
> > + Open vSwitch BSD port
> > + Copyright (c) 2011 Gaetano Catalli
> > + .
> > + Apache Portable Runtime
> > + Copyright 2008 The Apache Software Foundation.
> > + .
> > + This product includes software developed by
> > + The Apache Software Foundation (http://www.apache.org/).
> > + .
> > + Portions of this software were developed at the National Center
> > + for Supercomputing Applications (NCSA) at the University of
> > + Illinois at Urbana-Champaign.
> > + .
> > + lib/ovs.tmac includes troff macros written by Eric S. Raymond
> > + and Werner Lemberg.
> > + .
> > + m4/include_next.m4 and m4/absolute-header.m4
> > + Copyright (C) 2006-2013 Free Software Foundation, Inc.
> > + .
> > + Rapid Spanning Tree Protocol (RSTP) implementation
> > + Copyright (c) 2011-2014 M3S, Srl - Italy
> > + .
> > + LLDP implementation
> > + Copyright (c) 2008, 2012 Vincent Bernat <bernat@luffy.cx>
> > + .
> > + LLDP includes code used from the Net::CDP project based on the ISC license
> > + Copyright (c) 2014 Michael Chapman
> > + .
> > + LLDP includes code used from the ladvd project based on the ISC license
> > + Copyright (c) 2008, 2009, 2010 Sten Spans <sten@blinkenlights.nl>
> > + .
> > + Auto Attach implementation
> > + Copyright (c) 2014, 2015 WindRiver, Inc
> > + Copyright (c) 2014, 2015 Avaya, Inc
> > + .
> > + TCP connection tracker from FreeBSD pf, BSD licensed
> > + Copyright (c) 2001 Daniel Hartmeier
> > + Copyright (c) 2002 - 2008 Henning Brauer
> > + Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>
> > +
> > +Files: build-aux/cccl
> > +Copyright: 2000-2003 Geoffrey Wossum <gwossum@acm.org>
> > +License: GPL-2
> > +
> > +Files: utilities/bugtool/ovn-bugtool-*
> > +       utilities/bugtool/plugins/network-status/ovn.xml
> > +Copyright: 2016 Nicira, Inc.
> > +License: LGPL-2.1
> > +
> > +Files: m4/absolute-header.m4
> > +       m4/include_next.m4
> > +Copyright: Derek Price
> > +           Paul Eggert
> > +           2006-2013 Free Software Foundation, Inc.
> > +License: file-is-free-software
> > + This file is free software; the Free Software Foundation
> > + gives unlimited permission to copy and/or distribute it,
> > + with or without modifications, as long as this notice is preserved.
> > +
> > +Files: ovn-vif/*
> > +Copyright: 2021 Canonical
> > +License: Apache-2.0
> > +
> > +License: GPL-2
> > + This program is free software; you can redistribute it and/or modify it under
> > + the terms of the GNU General Public License as published by the Free Software
> > + Foundation; either version 2 of the License, or (at your option) any later
> > + version.
> > + .
> > + This program is distributed in the hope that it will be useful, but WITHOUT
> > + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
> > + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
> > + .
> > + You should have received a copy of the GNU General Public License along with
> > + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
> > + St, Fifth Floor, Boston, MA 02110-1301 USA
> > + .
> > + On Debian systems, the complete text of the GNU General Public License v2
> > + (GPL) can be found in /usr/share/common-licenses/GPL-2.
> > +
> > +License: LGPL-2.1
> > + This library is free software; you can redistribute it and/or modify it under
> > + the terms of the GNU Lesser General Public License as published by the Free
> > + Software Foundation; either version 2.1 of the License.
> > + .
> > + This library is distributed in the hope that it will be useful, but WITHOUT
> > + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
> > + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
> > + details.
> > + .
> > + You should have received a copy of the GNU Lesser General Public License along
> > + with this library; if not, write to the Free Software Foundation, Inc., 51
> > + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> > + .
> > + On Debian systems, the complete text of the GNU Lesser General Public License
> > + (LGPL) may be found in /usr/share/common-licenses/LGPL-2.
> > +
> > +License: Apache-2.0
> > + Licensed under the Apache License, Version 2.0 (the "License");
> > + you may not use this file except in compliance with the License.
> > + You may obtain a copy of the License at
> > + .
> > +    http://www.apache.org/licenses/LICENSE-2.0
> > + .
> > + Unless required by applicable law or agreed to in writing, software
> > + distributed under the License is distributed on an "AS IS" BASIS,
> > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> > + See the License for the specific language governing permissions and
> > + limitations under the License.
> > + .
> > + On Debian-based systems the full text of the Apache version 2.0 license
> > + can be found in `/usr/share/common-licenses/Apache-2.0'.
> > diff --git a/debian/flaky-tests-amd64.txt b/debian/flaky-tests-amd64.txt
> > new file mode 100644
> > index 000000000..cfe5d8c66
> > --- /dev/null
> > +++ b/debian/flaky-tests-amd64.txt
> > @@ -0,0 +1,6 @@
> > +send gratuitous arp on localnet
> > +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> > +ACLs on Port Groups
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +northd ssl file change
> > diff --git a/debian/flaky-tests-arm64.txt b/debian/flaky-tests-arm64.txt
> > new file mode 100644
> > index 000000000..996d0537e
> > --- /dev/null
> > +++ b/debian/flaky-tests-arm64.txt
> > @@ -0,0 +1,5 @@
> > +ovn-controller incremental processing
> > +nb_cfg timestamp
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +ipsec -- basic configuration
> > diff --git a/debian/flaky-tests-armel.txt b/debian/flaky-tests-armel.txt
> > new file mode 100644
> > index 000000000..6ce03bb10
> > --- /dev/null
> > +++ b/debian/flaky-tests-armel.txt
> > @@ -0,0 +1,7 @@
> > +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> > +1 LR with distributed router gateway port
> > +ACL conjunction
> > +IP packet buffering
> > +test transport zones
> > +lflow cache for conjunctions
> > +nb_cfg timestamp
> > diff --git a/debian/flaky-tests-armhf.txt b/debian/flaky-tests-armhf.txt
> > new file mode 100644
> > index 000000000..43654f3ae
> > --- /dev/null
> > +++ b/debian/flaky-tests-armhf.txt
> > @@ -0,0 +1,9 @@
> > +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> > +ovn-controller incremental processing
> > +ACL conjunction
> > +neighbor update on same HV
> > +nb_cfg timestamp
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +ovn-ic -- gateway sync
> > +ipsec -- basic configuration
> > diff --git a/debian/flaky-tests-i386.txt b/debian/flaky-tests-i386.txt
> > new file mode 100644
> > index 000000000..b82300de9
> > --- /dev/null
> > +++ b/debian/flaky-tests-i386.txt
> > @@ -0,0 +1,8 @@
> > +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
> > +nb_cfg timestamp
> > +ARP replies for SNAT external ips
> > +conflict ACLs with address set
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +ovn-ic -- gateway sync
> > +ipsec -- basic configuration
> > diff --git a/debian/flaky-tests-mips64el.txt b/debian/flaky-tests-mips64el.txt
> > new file mode 100644
> > index 000000000..e67e2c4ca
> > --- /dev/null
> > +++ b/debian/flaky-tests-mips64el.txt
> > @@ -0,0 +1,5 @@
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +ovn-ic -- gateway sync
> > +ipsec -- basic configuration
> > +nb_cfg timestamp
> > diff --git a/debian/flaky-tests-mipsel.txt b/debian/flaky-tests-mipsel.txt
> > new file mode 100644
> > index 000000000..00d383572
> > --- /dev/null
> > +++ b/debian/flaky-tests-mipsel.txt
> > @@ -0,0 +1,21 @@
> > +vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS
> > +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
> > +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> > +send gratuitous arp for nat ips in localnet
> > +send gratuitous arp for NAT rules on distributed router
> > +vlan traffic for external network with distributed router gateway port
> > +send gratuitous ARP for NAT rules on HA distributed router
> > +ACL conjunction
> > +router - check packet length - icmp defrag
> > +router - check packet length - icmp defrag
> > +IP packet buffering
> > +test transport zones
> > +Load balancer health checks
> > +interconnection
> > +nb_cfg timestamp
> > +conflict ACLs with address set
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +northd ssl file change
> > +ovn-ic -- gateway sync
> > +ipsec -- basic configuration
> > diff --git a/debian/flaky-tests-ppc64el.txt b/debian/flaky-tests-ppc64el.txt
> > new file mode 100644
> > index 000000000..6e089b6cb
> > --- /dev/null
> > +++ b/debian/flaky-tests-ppc64el.txt
> > @@ -0,0 +1,6 @@
> > +options:requested-chassis for logical port
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +northd ssl file change
> > +ovn-ic -- gateway sync
> > +ipsec -- basic configuration
> > diff --git a/debian/flaky-tests-riscv64.txt b/debian/flaky-tests-riscv64.txt
> > new file mode 100644
> > index 000000000..50570ab80
> > --- /dev/null
> > +++ b/debian/flaky-tests-riscv64.txt
> > @@ -0,0 +1,6 @@
> > +send gratuitous arp on localnet
> > +1 LR with distributed router gateway port
> > +router - check packet length - icmp defrag
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +ipsec -- basic configuration
> > diff --git a/debian/flaky-tests-s390x.txt b/debian/flaky-tests-s390x.txt
> > new file mode 100644
> > index 000000000..a642063d9
> > --- /dev/null
> > +++ b/debian/flaky-tests-s390x.txt
> > @@ -0,0 +1,5 @@
> > +options:requested-chassis for logical port
> > +ACLs on Port Groups
> > +multi-vtep SB Chassis encap updates
> > +ACL with Port Group conjunction flow efficiency
> > +ipsec -- basic configuration
> > diff --git a/debian/gbp.conf b/debian/gbp.conf
> > new file mode 100644
> > index 000000000..438b3fa8d
> > --- /dev/null
> > +++ b/debian/gbp.conf
> > @@ -0,0 +1,13 @@
> > +[DEFAULT]
> > +debian-branch = main
> > +upstream-branch = upstream
> > +pristine-tar = True
> > +components = ['ovn-vif']
> > +
> > +[import-orig]
> > +upstream-vcs-tag = v%(version)s
> > +
> > +[dch]
> > +multimaint-merge = True
> > +customizations=/usr/share/doc/git-buildpackage/examples/wrap_cl.py
> > +git-log=--first-parent
> > diff --git a/debian/not-installed b/debian/not-installed
> > new file mode 100644
> > index 000000000..e213b139d
> > --- /dev/null
> > +++ b/debian/not-installed
> > @@ -0,0 +1,5 @@
> > +# The OVN library and headers are currently not considered ABI/API stable.
> > +# If the need arises to build sibling projects we should probably provide an
> > +# ovn-source package.
> > +usr/include/*
> > +usr/lib/*
> > diff --git a/debian/ovn-central.default b/debian/ovn-central.default
> > new file mode 100644
> > index 000000000..7cea13e50
> > --- /dev/null
> > +++ b/debian/ovn-central.default
> > @@ -0,0 +1,5 @@
> > +# This is a POSIX shell fragment                -*- sh -*-
> > +
> > +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
> > +# a suitable place to specify --ovn-northd-wrapper=valgrind.
> > +# OVN_CTL_OPTS=
> > diff --git a/debian/ovn-central.install b/debian/ovn-central.install
> > new file mode 100644
> > index 000000000..095ca7cfa
> > --- /dev/null
> > +++ b/debian/ovn-central.install
> > @@ -0,0 +1,3 @@
> > +usr/bin/ovn-northd
> > +usr/share/ovn/ovn-nb.ovsschema
> > +usr/share/ovn/ovn-sb.ovsschema
> > diff --git a/debian/ovn-central.ovn-northd.service b/debian/ovn-central.ovn-northd.service
> > new file mode 100644
> > index 000000000..09c600016
> > --- /dev/null
> > +++ b/debian/ovn-central.ovn-northd.service
> > @@ -0,0 +1,15 @@
> > +[Unit]
> > +Description=Open Virtual Network central control daemon
> > +After=network.target ovn-nb-ovsdb.service ovn-sb-ovsdb.service
> > +PartOf=ovn-central.service
> > +DefaultDependencies=no
> > +
> > +[Service]
> > +Type=forking
> > +EnvironmentFile=-/etc/default/ovn-central
> > +PIDFile=%t/ovn/ovn-northd.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_northd --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_northd --no-monitor
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > diff --git a/debian/ovn-central.ovn-ovsdb-server-nb.service b/debian/ovn-central.ovn-ovsdb-server-nb.service
> > new file mode 100644
> > index 000000000..81f6c75a3
> > --- /dev/null
> > +++ b/debian/ovn-central.ovn-ovsdb-server-nb.service
> > @@ -0,0 +1,18 @@
> > +[Unit]
> > +Description=Open vSwitch database server for OVN Northbound database
> > +After=network.target
> > +PartOf=ovn-central.service
> > +DefaultDependencies=no
> > +
> > +[Service]
> > +Type=simple
> > +EnvironmentFile=-/etc/default/ovn-central
> > +PIDFile=%t/ovn/ovnnb_db.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_nb_ovsdb
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > +
> > +[Install]
> > +Alias=ovn-nb-ovsdb.service
> > diff --git a/debian/ovn-central.ovn-ovsdb-server-sb.service b/debian/ovn-central.ovn-ovsdb-server-sb.service
> > new file mode 100644
> > index 000000000..3aa840d2f
> > --- /dev/null
> > +++ b/debian/ovn-central.ovn-ovsdb-server-sb.service
> > @@ -0,0 +1,18 @@
> > +[Unit]
> > +Description=Open vSwitch database server for OVN Southbound database
> > +After=network.target
> > +PartOf=ovn-central.service
> > +DefaultDependencies=no
> > +
> > +[Service]
> > +Type=simple
> > +EnvironmentFile=-/etc/default/ovn-central
> > +PIDFile=%t/run/ovn/ovnsb_db.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_sb_ovsdb
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > +
> > +[Install]
> > +Alias=ovn-sb-ovsdb.service
> > diff --git a/debian/ovn-central.postrm b/debian/ovn-central.postrm
> > new file mode 100644
> > index 000000000..3b3483fc3
> > --- /dev/null
> > +++ b/debian/ovn-central.postrm
> > @@ -0,0 +1,47 @@
> > +#!/bin/sh
> > +# postrm script for ovn-central
> > +#
> > +# see: dh_installdeb(1)
> > +
> > +set -e
> > +
> > +# summary of how this script can be called:
> > +#        * <postrm> `remove'
> > +#        * <postrm> `purge'
> > +#        * <old-postrm> `upgrade' <new-version>
> > +#        * <new-postrm> `failed-upgrade' <old-version>
> > +#        * <new-postrm> `abort-install'
> > +#        * <new-postrm> `abort-install' <old-version>
> > +#        * <new-postrm> `abort-upgrade' <old-version>
> > +#        * <disappearer's-postrm> `disappear' <overwriter>
> > +#          <overwriter-version>
> > +# for details, see http://www.debian.org/doc/debian-policy/ or
> > +# the debian-policy package
> > +
> > +
> > +case "$1" in
> > +    purge)
> > +        rm -f /etc/openvswitch/ovnnb.db*
> > +        rm -f /etc/openvswitch/.ovnnb.db.~lock~
> > +        rm -f /etc/openvswitch/ovnsb.db*
> > +        rm -f /etc/openvswitch/.ovnsb.db.~lock~
> > +        rm -f /var/log/openvswitch/ovn-northd.log* || true
> > +        ;;
> > +
> > +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> > +        ;;
> > +
> > +    *)
> > +        echo "postrm called with unknown argument \`$1'" >&2
> > +        exit 1
> > +        ;;
> > +esac
> > +
> > +# dh_installdeb will replace this with shell code automatically
> > +# generated by other debhelper scripts.
> > +
> > +#DEBHELPER#
> > +
> > +exit 0
> > +
> > +
> > diff --git a/debian/ovn-central.service b/debian/ovn-central.service
> > new file mode 100644
> > index 000000000..aead7eae6
> > --- /dev/null
> > +++ b/debian/ovn-central.service
> > @@ -0,0 +1,16 @@
> > +[Unit]
> > +Description=Open Virtual Network central components
> > +After=network.target
> > +Requires=network.target
> > +Wants=ovn-northd.service
> > +Wants=ovn-ovsdb-server-sb.service
> > +Wants=ovn-ovsdb-server-nb.service
> > +
> > +[Service]
> > +Type=oneshot
> > +ExecStart=/bin/true
> > +ExecStop=/bin/true
> > +RemainAfterExit=yes
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> > diff --git a/debian/ovn-common.docs b/debian/ovn-common.docs
> > new file mode 100644
> > index 000000000..6d5ee1d05
> > --- /dev/null
> > +++ b/debian/ovn-common.docs
> > @@ -0,0 +1 @@
> > +NOTICE
> > diff --git a/debian/ovn-common.install b/debian/ovn-common.install
> > new file mode 100644
> > index 000000000..52e9e0050
> > --- /dev/null
> > +++ b/debian/ovn-common.install
> > @@ -0,0 +1,32 @@
> > +usr/bin/ovn-appctl
> > +usr/bin/ovn_detrace.py
> > +usr/bin/ovn-detrace
> > +usr/bin/ovn-nbctl
> > +usr/bin/ovn-sbctl
> > +/usr/bin/ovn-ic-nbctl
> > +/usr/bin/ovn-ic-sbctl
> > +usr/bin/ovn-trace
> > +usr/share/ovn/bugtool-plugins/network-status/ovn.xml
> > +usr/share/ovn/scripts/ovn-ctl
> > +usr/share/ovn/scripts/ovn-lib
> > +usr/share/ovn/scripts/ovndb-servers.ocf
> > +usr/share/ovn/scripts/ovn-bugtool-nbctl-show
> > +usr/share/ovn/scripts/ovn-bugtool-sbctl-lflow-list
> > +usr/share/ovn/scripts/ovn-bugtool-sbctl-show
> > +usr/share/man/man1/ovn-detrace.1
> > +usr/share/man/man5/ovn-ic-nb.5
> > +usr/share/man/man5/ovn-ic-sb.5
> > +usr/share/man/man5/ovn-nb.5
> > +usr/share/man/man5/ovn-sb.5
> > +usr/share/man/man7/ovn-architecture.7
> > +usr/share/man/man8/ovn-appctl.8
> > +usr/share/man/man8/ovn-controller-vtep.8
> > +usr/share/man/man8/ovn-controller.8
> > +usr/share/man/man8/ovn-ctl.8
> > +usr/share/man/man8/ovn-ic-nbctl.8
> > +usr/share/man/man8/ovn-ic-sbctl.8
> > +usr/share/man/man8/ovn-ic.8
> > +usr/share/man/man8/ovn-nbctl.8
> > +usr/share/man/man8/ovn-northd.8
> > +usr/share/man/man8/ovn-sbctl.8
> > +usr/share/man/man8/ovn-trace.8
> > diff --git a/debian/ovn-common.logrotate b/debian/ovn-common.logrotate
> > new file mode 100644
> > index 000000000..a351ec303
> > --- /dev/null
> > +++ b/debian/ovn-common.logrotate
> > @@ -0,0 +1,22 @@
> > +# Copyright (C) 2019 Red Hat, Inc.
> > +#
> > +# Copying and distribution of this file, with or without modification,
> > +# are permitted in any medium without royalty provided the copyright
> > +# notice and this notice are preserved.  This file is offered as-is,
> > +# without warranty of any kind.
> > +
> > +/var/log/ovn/*.log {
> > +    su root root
> > +    daily
> > +    compress
> > +    sharedscripts
> > +    missingok
> > +    postrotate
> > +        # Tell OVN daemons to reopen their log files
> > +        if [ -d /var/run/ovn ]; then
> > +            for ctl in /var/run/ovn/*.ctl; do
> > +                ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
> > +            done
> > +        fi
> > +    endscript
> > +}
> > diff --git a/debian/ovn-common.postinst b/debian/ovn-common.postinst
> > new file mode 100644
> > index 000000000..588044fbc
> > --- /dev/null
> > +++ b/debian/ovn-common.postinst
> > @@ -0,0 +1,24 @@
> > +#!/bin/sh
> > +# postinst script for ovn-common
> > +#
> > +# see: dh_installdeb(1)
> > +
> > +set -e
> > +
> > +case "$1" in
> > +    configure)
> > +        mkdir -p /usr/lib/ocf/resource.d/ovn
> > +        ln -sf /usr/share/openvswitch/scripts/ovndb-servers.ocf /usr/lib/ocf/resource.d/ovn/ovndb-servers
> > +        ;;
> > +    abort-upgrade|abort-remove|abort-deconfigure)
> > +        ;;
> > +
> > +    *)
> > +        echo "postinst called with unknown argument \`$1'" >&2
> > +        exit 1
> > +        ;;
> > +esac
> > +
> > +#DEBHELPER#
> > +
> > +exit 0
> > diff --git a/debian/ovn-common.postrm b/debian/ovn-common.postrm
> > new file mode 100644
> > index 000000000..9face726b
> > --- /dev/null
> > +++ b/debian/ovn-common.postrm
> > @@ -0,0 +1,23 @@
> > +#!/bin/sh
> > +# postrm script for openvswitch-testcontroller
> > +#
> > +# see: dh_installdeb(1)
> > +
> > +set -e
> > +
> > +case "$1" in
> > +    purge|remove)
> > +        rm -rf /usr/lib/ocf/resource.d/ovn
> > +        ;;
> > +    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> > +        ;;
> > +
> > +    *)
> > +        echo "postrm called with unknown argument \`$1'" >&2
> > +        exit 1
> > +        ;;
> > +esac
> > +
> > +#DEBHELPER#
> > +
> > +exit 0
> > diff --git a/debian/ovn-controller-vtep.install b/debian/ovn-controller-vtep.install
> > new file mode 100644
> > index 000000000..1d208f37e
> > --- /dev/null
> > +++ b/debian/ovn-controller-vtep.install
> > @@ -0,0 +1 @@
> > +usr/bin/ovn-controller-vtep
> > diff --git a/debian/ovn-controller-vtep.service b/debian/ovn-controller-vtep.service
> > new file mode 100644
> > index 000000000..d51e75277
> > --- /dev/null
> > +++ b/debian/ovn-controller-vtep.service
> > @@ -0,0 +1,16 @@
> > +[Unit]
> > +Description=Open Virtual Network VTEP gateway controller daemon
> > +After=openvswitch-switch.service
> > +Requires=openvswitch-switch.service
> > +
> > +[Service]
> > +Type=forking
> > +PIDFile=%t/ovn/ovn-controller-vtep.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller_vtep --no-monitor $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller_vtep --no-monitor
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> > diff --git a/debian/ovn-doc.doc-base b/debian/ovn-doc.doc-base
> > new file mode 100644
> > index 000000000..c7192ebdb
> > --- /dev/null
> > +++ b/debian/ovn-doc.doc-base
> > @@ -0,0 +1,9 @@
> > +Document: ovn-doc
> > +Title: Open Virtual Network Documentation
> > +Author: N/A
> > +Abstract: Sphinx documentation for Open Virtual Network
> > +Section: Network/Communication
> > +
> > +Format: HTML
> > +Index: /usr/share/doc/ovn-doc/html/index.html
> > +Files: /usr/share/doc/ovn-doc/html/*
> > diff --git a/debian/ovn-doc.install b/debian/ovn-doc.install
> > new file mode 100644
> > index 000000000..4cfd153cf
> > --- /dev/null
> > +++ b/debian/ovn-doc.install
> > @@ -0,0 +1 @@
> > +Documentation/_build/html/* /usr/share/doc/ovn-doc/html/
> > diff --git a/debian/ovn-docker.install b/debian/ovn-docker.install
> > new file mode 100644
> > index 000000000..583306732
> > --- /dev/null
> > +++ b/debian/ovn-docker.install
> > @@ -0,0 +1,2 @@
> > +usr/bin/ovn-docker-overlay-driver
> > +usr/bin/ovn-docker-underlay-driver
> > diff --git a/debian/ovn-host.default b/debian/ovn-host.default
> > new file mode 100644
> > index 000000000..7fd54efda
> > --- /dev/null
> > +++ b/debian/ovn-host.default
> > @@ -0,0 +1,5 @@
> > +# This is a POSIX shell fragment                -*- sh -*-
> > +
> > +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
> > +# a suitable place to specify --ovn-controller-wrapper=valgrind.
> > +# OVN_CTL_OPTS=
> > diff --git a/debian/ovn-host.install b/debian/ovn-host.install
> > new file mode 100644
> > index 000000000..d2de82fd9
> > --- /dev/null
> > +++ b/debian/ovn-host.install
> > @@ -0,0 +1 @@
> > +usr/bin/ovn-controller
> > diff --git a/debian/ovn-host.ovn-controller.service b/debian/ovn-host.ovn-controller.service
> > new file mode 100644
> > index 000000000..a41e77d75
> > --- /dev/null
> > +++ b/debian/ovn-host.ovn-controller.service
> > @@ -0,0 +1,15 @@
> > +[Unit]
> > +Description=Open Virtual Network host control daemon
> > +After=network.target openvswitch-switch.service
> > +PartOf=ovn-host.service
> > +DefaultDependencies=no
> > +
> > +[Service]
> > +Type=forking
> > +EnvironmentFile=-/etc/default/ovn-host
> > +PIDFile=%t/ovn/ovn-controller.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller --no-monitor
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > diff --git a/debian/ovn-host.postrm b/debian/ovn-host.postrm
> > new file mode 100644
> > index 000000000..9d17ef966
> > --- /dev/null
> > +++ b/debian/ovn-host.postrm
> > @@ -0,0 +1,43 @@
> > +#!/bin/sh
> > +# postrm script for ovn-host
> > +#
> > +# see: dh_installdeb(1)
> > +
> > +set -e
> > +
> > +# summary of how this script can be called:
> > +#        * <postrm> `remove'
> > +#        * <postrm> `purge'
> > +#        * <old-postrm> `upgrade' <new-version>
> > +#        * <new-postrm> `failed-upgrade' <old-version>
> > +#        * <new-postrm> `abort-install'
> > +#        * <new-postrm> `abort-install' <old-version>
> > +#        * <new-postrm> `abort-upgrade' <old-version>
> > +#        * <disappearer's-postrm> `disappear' <overwriter>
> > +#          <overwriter-version>
> > +# for details, see http://www.debian.org/doc/debian-policy/ or
> > +# the debian-policy package
> > +
> > +
> > +case "$1" in
> > +    purge)
> > +        rm -f /var/log/openvswitch/ovn-controller.log* || true
> > +        ;;
> > +
> > +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> > +        ;;
> > +
> > +    *)
> > +        echo "postrm called with unknown argument \`$1'" >&2
> > +        exit 1
> > +        ;;
> > +esac
> > +
> > +# dh_installdeb will replace this with shell code automatically
> > +# generated by other debhelper scripts.
> > +
> > +#DEBHELPER#
> > +
> > +exit 0
> > +
> > +
> > diff --git a/debian/ovn-host.service b/debian/ovn-host.service
> > new file mode 100644
> > index 000000000..b524888fd
> > --- /dev/null
> > +++ b/debian/ovn-host.service
> > @@ -0,0 +1,14 @@
> > +[Unit]
> > +Description=Open Virtual Network host components
> > +After=network.target
> > +Requires=network.target
> > +Wants=ovn-controller.service
> > +
> > +[Service]
> > +Type=oneshot
> > +ExecStart=/bin/true
> > +ExecStop=/bin/true
> > +RemainAfterExit=yes
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> > diff --git a/debian/ovn-ic-db.install b/debian/ovn-ic-db.install
> > new file mode 100644
> > index 000000000..a4d50002e
> > --- /dev/null
> > +++ b/debian/ovn-ic-db.install
> > @@ -0,0 +1,2 @@
> > +/usr/share/ovn/ovn-ic-nb.ovsschema
> > +/usr/share/ovn/ovn-ic-sb.ovsschema
> > diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> > new file mode 100644
> > index 000000000..193024daf
> > --- /dev/null
> > +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> > @@ -0,0 +1,15 @@
> > +[Unit]
> > +Description=Open vSwitch database server for OVN IC Northbound database
> > +After=network.target
> > +PartOf=ovn-ic-db.service
> > +DefaultDependencies=no
> > +
> > +[Service]
> > +Type=simple
> > +EnvironmentFile=-/etc/default/ovn-ic
> > +PIDFile=%t/ovn/ovn_ic_nb_db.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_nb_ovsdb $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_nb_ovsdb
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> > new file mode 100644
> > index 000000000..714748325
> > --- /dev/null
> > +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> > @@ -0,0 +1,15 @@
> > +[Unit]
> > +Description=Open vSwitch database server for OVN IC Southbound database
> > +After=network.target
> > +PartOf=ovn-ic-db.service
> > +DefaultDependencies=no
> > +
> > +[Service]
> > +Type=simple
> > +EnvironmentFile=-/etc/default/ovn-ic
> > +PIDFile=%t/ovn/ovn_ic_sb_db.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_sb_ovsdb $OVN_CTL_OPTS
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_sb_ovsdb
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > diff --git a/debian/ovn-ic-db.service b/debian/ovn-ic-db.service
> > new file mode 100644
> > index 000000000..b116bc79d
> > --- /dev/null
> > +++ b/debian/ovn-ic-db.service
> > @@ -0,0 +1,15 @@
> > +[Unit]
> > +Description=Open Virtual Network interconnection databases
> > +After=network.target
> > +Requires=network.target
> > +Wants=ovn-ovsdb-server-ic-sb.service
> > +Wants=ovn-ovsdb-server-ic-nb.service
> > +
> > +[Service]
> > +Type=oneshot
> > +ExecStart=/bin/true
> > +ExecStop=/bin/true
> > +RemainAfterExit=yes
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> > diff --git a/debian/ovn-ic.install b/debian/ovn-ic.install
> > new file mode 100644
> > index 000000000..b15508259
> > --- /dev/null
> > +++ b/debian/ovn-ic.install
> > @@ -0,0 +1 @@
> > +/usr/bin/ovn-ic
> > diff --git a/debian/ovn-ic.service b/debian/ovn-ic.service
> > new file mode 100644
> > index 000000000..07974285f
> > --- /dev/null
> > +++ b/debian/ovn-ic.service
> > @@ -0,0 +1,16 @@
> > +[Unit]
> > +Description=Open Virtual Network interconnection controller
> > +After=network.target
> > +Requires=network.target
> > +
> > +[Service]
> > +Type=forking
> > +PIDFile=%t/ovn/ovn-ic.pid
> > +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_ic --no-monitor
> > +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic
> > +Restart=on-failure
> > +LimitNOFILE=65535
> > +TimeoutStopSec=15
> > +
> > +[Install]
> > +WantedBy=multi-user.target
> > diff --git a/debian/rules b/debian/rules
> > new file mode 100755
> > index 000000000..4596afb49
> > --- /dev/null
> > +++ b/debian/rules
> > @@ -0,0 +1,104 @@
> > +#!/usr/bin/make -f
> > +# -*- makefile -*-
> > +#export DH_VERBOSE=1
> > +export DEB_BUILD_MAINT_OPTIONS = hardening=+all
> > +
> > +%:
> > +       dh $@ --with autoreconf,python3,sphinxdoc
> > +
> > +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
> > +PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
> > +else
> > +PARALLEL =
> > +endif
> > +
> > +override_dh_auto_configure:
> > +       # Configure OVS before OVN
> > +       test -d $(CURDIR)/ovs || mkdir ovs
> > +       cd ovs && tar -xzf /usr/src/openvswitch/openvswitch.tar.gz --strip-components=1
> > +       cd ovs && ./configure --enable-ssl --localstatedir=/var --sysconfdir=/etc --prefix=/usr && make $(PARALLEL)
> > +       # Configure OVN to allow building OVN VIF
> > +       ./boot.sh && ./configure \
> > +               --prefix=/usr \
> > +               --localstatedir=/var \
> > +               --sysconfdir=/etc \
> > +               --with-dbdir=/var/lib/ovn \
> > +               --with-ovs-source=$(CURDIR)/ovs \
> > +               --enable-ssl
> > +       # Configure and build OVN VIF
> > +       cd ovn-vif && \
> > +               ./boot.sh && \
> > +               ./configure \
> > +                       --with-ovs-source=$(CURDIR)/ovs \
> > +                       --with-ovn-source=$(CURDIR) \
> > +                       --enable-plug-representor && \
> > +               make $(PARALLEL)
> > +       # Use dh_auto_configure to build OVN
> > +       dh_auto_configure -- \
> > +               --prefix=/usr \
> > +               --localstatedir=/var \
> > +               --sysconfdir=/etc \
> > +               --with-dbdir=/var/lib/ovn \
> > +               --with-ovs-source=$(CURDIR)/ovs \
> > +               --enable-ssl \
> > +               --with-vif-plug-provider=$(CURDIR)/ovn-vif
> > +       $(MAKE) debian/copyright
> > +
> > +TEST_LIST = $(shell \
> > +                $(CURDIR)/debian/testlist.py \
> > +                $(CURDIR)/debian/flaky-tests-$(DEB_HOST_ARCH).txt \
> > +                $(CURDIR)/tests/testsuite)
> > +
> > +override_dh_auto_test:
> > +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
> > +       if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST)' || \
> > +                $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \
> > +       else \
> > +               cat tests/testsuite.log; \
> > +               exit 1; \
> > +       fi
> > +endif # nocheck
> > +
> > +override_dh_auto_build:
> > +       cd ovs && $(MAKE) $(PARALLEL)
> > +       $(MAKE) $(PARALLEL)
> > +
> > +override_dh_auto_clean:
> > +       dh_auto_clean
> > +       cd ovn-vif && make distclean | :
> > +       rm -rf ovs
> > +
> > +override_dh_installinit:
> > +       # Package does not ship any init.d files
> > +       dh_installinit --no-scripts
> > +
> > +override_dh_installsystemd:
> > +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-northd
> > +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-sb
> > +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-nb
> > +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-sb
> > +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-nb
> > +       dh_installsystemd --restart-after-upgrade -povn-host    --name=ovn-controller
> > +       dh_installsystemd --restart-after-upgrade
> > +
> > +override_dh_python3:
> > +       dh_python3 --shebang=/usr/bin/python3
> > +
> > +# Helper target for creating snapshots from upstream git
> > +DATE=$(shell date +%Y%m%d)
> > +# Upstream branch to track
> > +BRANCH=main
> > +VERSION=22.09.0
> > +
> > +get-orig-snapshot:
> > +       rm -Rf ovn-upstream ovn-vif-upstream
> > +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn ovn-upstream
> > +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn-vif ovn-vif-upstream
> > +       cd ovn-upstream && \
> > +               export COMMIT=`git rev-parse --short HEAD` && \
> > +               git archive --format tgz --prefix=ovn-$(VERSION)~git$(DATE).$$COMMIT/ \
> > +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH) && \
> > +               cd ../ovn-vif-upstream && \
> > +               git archive --format tgz --prefix=ovn-vif-$(VERSION)~git$(DATE).$$COMMIT/ \
> > +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig-ovn-vif.tar.gz $(BRANCH)
> > +       rm -Rf ovn-upstream ovn-vif-upstream
> > diff --git a/debian/source/format b/debian/source/format
> > new file mode 100644
> > index 000000000..163aaf8d8
> > --- /dev/null
> > +++ b/debian/source/format
> > @@ -0,0 +1 @@
> > +3.0 (quilt)
> > diff --git a/debian/source/include-binaries b/debian/source/include-binaries
> > new file mode 100644
> > index 000000000..2dfb2fe55
> > --- /dev/null
> > +++ b/debian/source/include-binaries
> > @@ -0,0 +1 @@
> > +ovn-vif/Documentation/_static/logo.png
> > diff --git a/debian/testlist.py b/debian/testlist.py
> > new file mode 100755
> > index 000000000..24d2ae9c5
> > --- /dev/null
> > +++ b/debian/testlist.py
> > @@ -0,0 +1,72 @@
> > +#!/usr/bin/env python3
> > +import enum
> > +import itertools
> > +import os
> > +import sys
> > +
> > +
> > +if len(sys.argv) < 3:
> > +    print(
> > +        "usage: {} skipdescriptionlist testsuite\n"
> > +        "\n"
> > +        "This program reads two files, a skiplist containing the \n"
> > +        "description of tests to skip separated by newline, and a \n"
> > +        "generated testsuite script.\n"
> > +        "\n"
> > +        "From this it produces string with range of tests to execute \n"
> > +        "which can be provided to the testsuite script.\n".format(sys.argv[0]),
> > +        file=sys.stderr,
> > +    )
> > +    sys.exit(os.EX_USAGE)
> > +
> > +
> > +SKIP_TEST_STRINGS = []
> > +with open(sys.argv[1]) as fin:
> > +    SKIP_TEST_STRINGS = [line.rstrip() for line in fin.readlines()]
> > +
> > +
> > +@enum.unique
> > +class State(enum.Enum):
> > +    INIT = enum.auto()
> > +    AT_HELP_ALL = enum.auto()
> > +
> > +
> > +SKIP_TESTS = set()
> > +TESTS = set()
> > +with open(sys.argv[2]) as fin:
> > +    state = State.INIT
> > +    last_test = 0
> > +    for line in fin.readlines():
> > +        if state == State.INIT:
> > +            if not line.startswith('at_help_all="'):
> > +                continue
> > +            else:
> > +                state = State.AT_HELP_ALL
> > +                data = line.split('"')[1].rstrip().split(";")
> > +        elif state == State.AT_HELP_ALL:
> > +            if line.startswith('"'):
> > +                break
> > +            data = line.rstrip().split(";")
> > +        test_nr = int(data[0])
> > +        if last_test < test_nr:
> > +            last_test = test_nr
> > +        for skip_string in SKIP_TEST_STRINGS:
> > +            if skip_string in data[2]:
> > +                SKIP_TESTS.add(test_nr)
> > +            else:
> > +                TESTS.add(test_nr)
> > +
> > +
> > +def ranges(testlist):
> > +    for a, b in itertools.groupby(
> > +        enumerate(list(testlist)), lambda pair: pair[1] - pair[0]
> > +    ):
> > +        b = list(b)
> > +        yield b[0][1], b[-1][1]
> > +
> > +
> > +testranges = [
> > +    "{}-{}".format(testrange[0], testrange[1])
> > +    for testrange in ranges(TESTS - SKIP_TESTS)
> > +]
> > +print(" ".join(testranges))
> > diff --git a/debian/watch b/debian/watch
> > new file mode 100644
> > index 000000000..4831f3456
> > --- /dev/null
> > +++ b/debian/watch
> > @@ -0,0 +1,5 @@
> > +version=4
> > +opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-$1\.tar\.gz/ \
> > +  https://github.com/ovn-org/ovn/tags .*/v?(\d\S+)\.tar\.gz
> > +opts="filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-vif-$1\.tar\.gz/, component=ovn-vif" \
> > +  https://github.com/ovn-org/ovn-vif/tags .*/v?(\d\S+)\.tar\.gz
> > --
> > 2.36.1
> >
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >
>
>
> --
> Frode Nordahl
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
Ilya Maximets Aug. 11, 2022, 7:10 p.m. UTC | #3
On 8/5/22 22:39, Frode Nordahl wrote:
> Ilya and Numan,
> 
> I preemptively added your names to the commit message because the
> patch contains your work as detailed in the commit message.
> 
> I hope this is ok.

Fine by me.  See some comments inline regarding things I spotted
on a first read.

Best regards, Ilya Maximets.

> 
> On Fri, Aug 5, 2022 at 10:35 PM Frode Nordahl
> <frode.nordahl@canonical.com> wrote:
>>
>> Update debian package source from Debian and Ubuntu.
>>
>> debian/ovn-common.logrotate comes from the RHEL packaging in this
>> tree, and author is credited below.
>>
>> The debian/automake.mk tricks to generate the copyright file while
>> building came from the work on the debian packaging in openvswitch
>> and author is credited below.
>>
>> Signed-off-by: James Page <james.page@ubuntu.com>
>> Co-Authored-by: James Page <james.page@ubuntu.com>
>> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
>> Co-Authored-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
>> Signed-off-by: Numan Siddique <numans@ovn.org>
>> Co-Authored-by: Numan Siddique <numans@ovn.org>
>> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
>> Co-Authored-by: Ilya Maximets <i.maximets@ovn.org>
>> Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
>> ---
>>  build-aux/initial-tab-whitelist               |   3 +-
>>  debian/.gitignore                             |  17 ++
>>  debian/automake.mk                            |  85 ++++++++-
>>  debian/control                                | 176 ++++++++++++++++++
>>  debian/copyright.in                           | 146 +++++++++++++++
>>  debian/flaky-tests-amd64.txt                  |   6 +
>>  debian/flaky-tests-arm64.txt                  |   5 +
>>  debian/flaky-tests-armel.txt                  |   7 +
>>  debian/flaky-tests-armhf.txt                  |   9 +
>>  debian/flaky-tests-i386.txt                   |   8 +
>>  debian/flaky-tests-mips64el.txt               |   5 +
>>  debian/flaky-tests-mipsel.txt                 |  21 +++
>>  debian/flaky-tests-ppc64el.txt                |   6 +
>>  debian/flaky-tests-riscv64.txt                |   6 +
>>  debian/flaky-tests-s390x.txt                  |   5 +
>>  debian/gbp.conf                               |  13 ++
>>  debian/not-installed                          |   5 +
>>  debian/ovn-central.default                    |   5 +
>>  debian/ovn-central.install                    |   3 +
>>  debian/ovn-central.ovn-northd.service         |  15 ++
>>  .../ovn-central.ovn-ovsdb-server-nb.service   |  18 ++
>>  .../ovn-central.ovn-ovsdb-server-sb.service   |  18 ++
>>  debian/ovn-central.postrm                     |  47 +++++
>>  debian/ovn-central.service                    |  16 ++
>>  debian/ovn-common.docs                        |   1 +
>>  debian/ovn-common.install                     |  32 ++++
>>  debian/ovn-common.logrotate                   |  22 +++
>>  debian/ovn-common.postinst                    |  24 +++
>>  debian/ovn-common.postrm                      |  23 +++
>>  debian/ovn-controller-vtep.install            |   1 +
>>  debian/ovn-controller-vtep.service            |  16 ++
>>  debian/ovn-doc.doc-base                       |   9 +
>>  debian/ovn-doc.install                        |   1 +
>>  debian/ovn-docker.install                     |   2 +
>>  debian/ovn-host.default                       |   5 +
>>  debian/ovn-host.install                       |   1 +
>>  debian/ovn-host.ovn-controller.service        |  15 ++
>>  debian/ovn-host.postrm                        |  43 +++++
>>  debian/ovn-host.service                       |  14 ++
>>  debian/ovn-ic-db.install                      |   2 +
>>  .../ovn-ic-db.ovn-ovsdb-server-ic-nb.service  |  15 ++
>>  .../ovn-ic-db.ovn-ovsdb-server-ic-sb.service  |  15 ++
>>  debian/ovn-ic-db.service                      |  15 ++
>>  debian/ovn-ic.install                         |   1 +
>>  debian/ovn-ic.service                         |  16 ++
>>  debian/rules                                  | 104 +++++++++++
>>  debian/source/format                          |   1 +
>>  debian/source/include-binaries                |   1 +
>>  debian/testlist.py                            |  72 +++++++
>>  debian/watch                                  |   5 +
>>  50 files changed, 1098 insertions(+), 3 deletions(-)
>>  create mode 100644 debian/.gitignore
>>  create mode 100644 debian/control
>>  create mode 100644 debian/copyright.in
>>  create mode 100644 debian/flaky-tests-amd64.txt
>>  create mode 100644 debian/flaky-tests-arm64.txt
>>  create mode 100644 debian/flaky-tests-armel.txt
>>  create mode 100644 debian/flaky-tests-armhf.txt
>>  create mode 100644 debian/flaky-tests-i386.txt
>>  create mode 100644 debian/flaky-tests-mips64el.txt
>>  create mode 100644 debian/flaky-tests-mipsel.txt
>>  create mode 100644 debian/flaky-tests-ppc64el.txt
>>  create mode 100644 debian/flaky-tests-riscv64.txt
>>  create mode 100644 debian/flaky-tests-s390x.txt
>>  create mode 100644 debian/gbp.conf
>>  create mode 100644 debian/not-installed
>>  create mode 100644 debian/ovn-central.default
>>  create mode 100644 debian/ovn-central.install
>>  create mode 100644 debian/ovn-central.ovn-northd.service
>>  create mode 100644 debian/ovn-central.ovn-ovsdb-server-nb.service
>>  create mode 100644 debian/ovn-central.ovn-ovsdb-server-sb.service
>>  create mode 100644 debian/ovn-central.postrm
>>  create mode 100644 debian/ovn-central.service
>>  create mode 100644 debian/ovn-common.docs
>>  create mode 100644 debian/ovn-common.install
>>  create mode 100644 debian/ovn-common.logrotate
>>  create mode 100644 debian/ovn-common.postinst
>>  create mode 100644 debian/ovn-common.postrm
>>  create mode 100644 debian/ovn-controller-vtep.install
>>  create mode 100644 debian/ovn-controller-vtep.service
>>  create mode 100644 debian/ovn-doc.doc-base
>>  create mode 100644 debian/ovn-doc.install
>>  create mode 100644 debian/ovn-docker.install
>>  create mode 100644 debian/ovn-host.default
>>  create mode 100644 debian/ovn-host.install
>>  create mode 100644 debian/ovn-host.ovn-controller.service
>>  create mode 100644 debian/ovn-host.postrm
>>  create mode 100644 debian/ovn-host.service
>>  create mode 100644 debian/ovn-ic-db.install
>>  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
>>  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
>>  create mode 100644 debian/ovn-ic-db.service
>>  create mode 100644 debian/ovn-ic.install
>>  create mode 100644 debian/ovn-ic.service
>>  create mode 100755 debian/rules
>>  create mode 100644 debian/source/format
>>  create mode 100644 debian/source/include-binaries
>>  create mode 100755 debian/testlist.py
>>  create mode 100644 debian/watch
>>
>> diff --git a/build-aux/initial-tab-whitelist b/build-aux/initial-tab-whitelist
>> index b2f5a0791..71d4f007d 100644
>> --- a/build-aux/initial-tab-whitelist
>> +++ b/build-aux/initial-tab-whitelist
>> @@ -6,6 +6,5 @@
>>  ^ovs/
>>  ^third-party/
>>  ^xenserver/
>> -^debian/rules.modules$
>> -^debian/rules$
>> +^debian/
>>  ^\.gitmodules$
>> diff --git a/debian/.gitignore b/debian/.gitignore
>> new file mode 100644
>> index 000000000..d2393b3fd
>> --- /dev/null
>> +++ b/debian/.gitignore
>> @@ -0,0 +1,17 @@
>> +*.debhelper
>> +*.debhelper.log
>> +*.substvars
>> +/autoreconf.after
>> +/autoreconf.before
>> +/copyright
>> +/files
>> +/ovn-common
>> +/ovn-controller-vtep
>> +/ovn-host
>> +/ovn-central
>> +/ovn-docker
>> +/debhelper-build-stamp
>> +/ovn-doc/
>> +/ovn-ic-db/
>> +/ovn-ic/
>> +/tmp
>> diff --git a/debian/automake.mk b/debian/automake.mk
>> index ce11fd040..d199c925d 100644
>> --- a/debian/automake.mk
>> +++ b/debian/automake.mk
>> @@ -1,2 +1,85 @@
>>  EXTRA_DIST += \
>> -       debian/changelog
>> +       debian/changelog \
>> +       debian/control \
>> +       debian/copyright.in \
>> +       debian/flaky-tests-amd64.txt \
>> +       debian/flaky-tests-arm64.txt \
>> +       debian/flaky-tests-armel.txt \
>> +       debian/flaky-tests-armhf.txt \
>> +       debian/flaky-tests-i386.txt \
>> +       debian/flaky-tests-mips64el.txt \
>> +       debian/flaky-tests-mipsel.txt \
>> +       debian/flaky-tests-ppc64el.txt \
>> +       debian/flaky-tests-riscv64.txt \
>> +       debian/flaky-tests-s390x.txt \
>> +       debian/gbp.conf \
>> +       debian/not-installed \
>> +       debian/ovn-central.default \
>> +       debian/ovn-central.install \
>> +       debian/ovn-central.ovn-northd.service \
>> +       debian/ovn-central.postrm \
>> +       debian/ovn-central.service \
>> +       debian/ovn-common.docs \
>> +       debian/ovn-common.install \
>> +       debian/ovn-common.logrotate \
>> +       debian/ovn-common.postinst \
>> +       debian/ovn-common.postrm \
>> +       debian/ovn-controller-vtep.install \
>> +       debian/ovn-controller-vtep.service \
>> +       debian/ovn-doc.doc-base \
>> +       debian/ovn-doc.install \
>> +       debian/ovn-docker.install \
>> +       debian/ovn-host.default \
>> +       debian/ovn-host.install \
>> +       debian/ovn-host.ovn-controller.service \
>> +       debian/ovn-host.postrm \
>> +       debian/ovn-host.service \
>> +       debian/ovn-ic-db.install \
>> +       debian/ovn-ic-db.service \
>> +       debian/ovn-ic.install \
>> +       debian/ovn-ic.service \
>> +       debian/rules \
>> +       debian/source/format \
>> +       debian/source/include-binaries \
>> +       debian/testlist.py \
>> +       debian/watch
>> +
>> +check-debian-changelog-version:
>> +       @DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`;                \
>> +       if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \
>> +       then                                                                 \
>> +         :;                                                                 \
>> +       else                                                                 \
>> +         echo "Update debian/changelog to mention version $(VERSION)";      \
>> +         exit 1;                                                            \
>> +       fi
>> +ALL_LOCAL += check-debian-changelog-version
>> +DIST_HOOKS += check-debian-changelog-version
>> +
>> +update_deb_copyright = \
>> +       $(AM_V_GEN) \
>> +       { sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in;   \
>> +         tail -n +28 $(srcdir)/AUTHORS.rst | sed '1,/^$$/d' |             \
>> +               sed -n -e '/^$$/q' -e 's/^/  /p';                          \
>> +         sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in;           \
>> +       } > debian/copyright
>> +
>> +debian/copyright: AUTHORS.rst debian/copyright.in
>> +       $(update_deb_copyright)
>> +
>> +CLEANFILES += debian/copyright
>> +
>> +debian: debian/copyright
>> +.PHONY: debian
>> +
>> +debian-deb: debian
>> +       @if test X"$(srcdir)" != X"$(top_builddir)"; then                   \
>> +               echo "Debian packages should be built from $(abs_srcdir)/"; \
>> +               exit 1;                                                     \
>> +       fi
>> +       $(MAKE) distclean
>> +       $(update_deb_copyright)
>> +       $(update_deb_control)
>> +       $(AM_V_GEN) fakeroot debian/rules clean
>> +       $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \
>> +               fakeroot debian/rules binary
>> diff --git a/debian/control b/debian/control
>> new file mode 100644
>> index 000000000..a6f395842
>> --- /dev/null
>> +++ b/debian/control
>> @@ -0,0 +1,176 @@
>> +Source: ovn
>> +Section: net
>> +Priority: optional
>> +Maintainer: OVN developers <dev@openvswitch.org>
>> +Build-Depends:
>> + autoconf,
>> + automake,
>> + bzip2,
>> + debhelper-compat (= 10),
>> + dh-python,
>> + graphviz,
>> + libcap-ng-dev,
>> + libnuma-dev [amd64 i386 ppc64el arm64],
>> + libpcap-dev [amd64 i386 ppc64el arm64],
>> + libssl-dev,
>> + libtool,
>> + libudev-dev,
>> + libunbound-dev,
>> + openssl,
>> + openstack-pkg-tools,
>> + openvswitch-source (>= 2.17.2-3~),
>> + pkg-config,
>> + procps,
>> + python3-all-dev,
>> + python3-setuptools,
>> + python3-sortedcontainers,
>> + python3-sphinx,
>> + tcpdump,
>> +Standards-Version: 4.6.1
>> +Homepage: https://www.ovn.org/
>> +
>> +Package: ovn-central
>> +Architecture: linux-any
>> +Pre-Depends: ${misc:Pre-Depends},
>> +Depends:
>> + lsb-base,
>> + lsb-release,
>> + openvswitch-common (>= 2.17.0~),
>> + ovn-common (= ${binary:Version}),
>> + ${misc:Depends},
>> + ${shlibs:Depends},
>> +Description: OVN central components
>> + OVN, the Open Virtual Network, is a system to support virtual network
>> + abstraction. OVN complements the existing capabilities of OVS to add native
>> + support for virtual network abstractions, such as virtual L2 and L3 overlays
>> + and security groups.
>> + .
>> + ovn-central provides the userspace daemons, utilities and
>> + databases for OVN that is run at a central location.
>> +
>> +Package: ovn-common
>> +Architecture: linux-any
>> +Depends:
>> + ${misc:Depends},
>> + ${python3:Depends},
>> + ${shlibs:Depends},
>> +Breaks:
>> + ovn-ic-db (<< 22.03~),
>> +Replaces:
>> + ovn-ic-db (<< 22.03~),
>> +Description: OVN common components
>> + OVN, the Open Virtual Network, is a system to support virtual network
>> + abstraction. OVN complements the existing capabilities of OVS to add native
>> + support for virtual network abstractions, such as virtual L2 and L3 overlays
>> + and security groups.
>> + .
>> + ovn-common provides components required by other OVN packages.
>> +
>> +Package: ovn-controller-vtep
>> +Architecture: linux-any
>> +Pre-Depends: ${misc:Pre-Depends},
>> +Depends:
>> + lsb-base,
>> + ovn-common (= ${binary:Version}),
>> + ${misc:Depends},
>> + ${shlibs:Depends},
>> +Description: OVN vtep controller
>> + ovn-controller-vtep is the local controller daemon in OVN, the Open Virtual
>> + Network, for VTEP enabled physical switches. It connects up to the OVN
>> + Southbound database over the OVSDB protocol, and down to the VTEP database
>> + over the OVSDB protocol.
>> + .
>> + ovn-controller-vtep provides the ovn-controller-vtep binary for controlling
>> + vtep gateways.
>> +
>> +Package: ovn-doc
>> +Section: doc
>> +Architecture: all
>> +Depends:
>> + ${misc:Depends},
>> + ${sphinxdoc:Depends},
>> +Description: OVN documentation
>> + OVN, the Open Virtual Network, is a system to support virtual network
>> + abstraction.  OVN complements the existing capabilities of OVS to add
>> + native support for virtual network abstractions, such as virtual L2 and L3
>> + overlays and security groups.
>> + .
>> + This package provides documentation for configuration and use
>> + of OVN.
>> +
>> +Package: ovn-docker
>> +Architecture: linux-any
>> +Depends:
>> + openvswitch-common (>= 2.17.0~),
>> + ovn-common (= ${binary:Version}),
>> + python3-openvswitch (>= 2.17.0~),
>> + ${misc:Depends},
>> + ${python3:Depends},
>> + ${shlibs:Depends},
>> +Description: OVN Docker drivers
>> + OVN, the Open Virtual Network, is a system to support virtual network
>> + abstraction.  OVN complements the existing capabilities of OVS to add
>> + native support for virtual network abstractions, such as virtual L2 and L3
>> + overlays and security groups.
>> + .
>> + ovn-docker provides the docker drivers for OVN.
>> +
>> +Package: ovn-host
>> +Architecture: linux-any
>> +Pre-Depends: ${misc:Pre-Depends},
>> +Depends:
>> + lsb-base,
>> + lsb-release,
>> + openvswitch-switch (>= 2.17.0~),
>> + ovn-common (= ${binary:Version}),
>> + ${misc:Depends},
>> + ${shlibs:Depends},
>> +Description: OVN host components
>> + OVN, the Open Virtual Network, is a system to support virtual network
>> + abstraction.  OVN complements the existing capabilities of OVS to add
>> + native support for virtual network abstractions, such as virtual L2 and L3
>> + overlays and security groups.
>> + .
>> + ovn-host provides the userspace components and utilities for
>> + OVN that can be run on every host/hypervisor.
>> +
>> +Package: ovn-ic
>> +Architecture: linux-any
>> +Pre-Depends: ${misc:Pre-Depends},
>> +Depends:
>> + lsb-base,
>> + lsb-release,
>> + ovn-common (= ${binary:Version}),
>> + ${misc:Depends},
>> + ${shlibs:Depends},
>> +Enhances:
>> + ovn-central,
>> +Suggests:
>> + ovn-ic-db,
>> +Description: Open Virtual Network interconnection controller
>> + OVN IC, the Open Virtual Network interconnection controller, is a
>> + centralized daemon which communicates with global interconnection
>> + databases to configure and exchange data with local OVN databases for
>> + interconnection with other OVN deployments.
>> + .
>> + This package provides the ovn-ic daemon which should be run alongside
>> + ovn-central services in each OVN deployment zone.
>> +
>> +Package: ovn-ic-db
>> +Architecture: linux-any
>> +Pre-Depends: ${misc:Pre-Depends},
>> +Depends:
>> + lsb-base,
>> + lsb-release,
>> + openvswitch-common (>= 2.17.0~),
>> + ovn-common (= ${binary:Version}),
>> + ${misc:Depends},
>> + ${shlibs:Depends},
>> +Description: Open Virtual Network interconnection controller databases
>> + OVN IC, the Open Virtual Network interconnection controller, is a
>> + centralized daemon which communicates with global interconnection
>> + databases to configure and exchange data with local OVN databases for
>> + interconnection with other OVN deployments.
>> + .
>> + This package provides the global OVN IC southbound and northbound
>> + OVSDB databases.
>> diff --git a/debian/copyright.in b/debian/copyright.in
>> new file mode 100644
>> index 000000000..911704ae0
>> --- /dev/null
>> +++ b/debian/copyright.in
>> @@ -0,0 +1,146 @@
>> +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
>> +Upstream-Name: Open Virtual Network (OVN)
>> +Source: https://github.com/ovn-org/ovn
>> +Files-Excluded: debian
>> +Upstream-Authors:
>> +%AUTHORS%
>> +
>> +Files: *
>> +Copyright: 2007-2017 Nicira, Inc.
>> +           2010 Jean Tourrilhes - HP-Labs.
>> +           2008,2009,2010 Citrix Systems, Inc.
>> +           2011 Gaetano Catalli
>> +           2000-2003 Geoffrey Wossum <gwossum@acm.org>
>> +           2000 The NetBSD Foundation, Inc.
>> +           1995, 1996, 1997, and 1998 WIDE Project.
>> +           1982, 1986, 1990, 1993 The Regents of the University of California.
>> +           2008, 2012 Vincent Bernat <bernat@luffy.cx>
>> +           2014 Michael Chapman
>> +           2014 WindRiver, Inc.
>> +           2014 Avaya, Inc.
>> +           2001 Daniel Hartmeier
>> +           2002 - 2008 Henning Brauer
>> +           2012 Gleb Smirnoff <glebius@FreeBSD.org>
>> +           2015-2019 Red Hat, Inc.
>> +           2017 DtDream Technology Co., Ltd.
>> +           2018 eBay Inc.
>> +License: Apache-2.0
>> +Comment:
>> + This package contains code from other projects and authors not
>> + mentioned elsewhere.
>> + .
>> + Open vSwitch
>> + Copyright (c) 2007, 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
>> + .
>> + Open vSwitch BSD port
>> + Copyright (c) 2011 Gaetano Catalli
>> + .
>> + Apache Portable Runtime
>> + Copyright 2008 The Apache Software Foundation.
>> + .
>> + This product includes software developed by
>> + The Apache Software Foundation (http://www.apache.org/).
>> + .
>> + Portions of this software were developed at the National Center
>> + for Supercomputing Applications (NCSA) at the University of
>> + Illinois at Urbana-Champaign.
>> + .
>> + lib/ovs.tmac includes troff macros written by Eric S. Raymond
>> + and Werner Lemberg.
>> + .
>> + m4/include_next.m4 and m4/absolute-header.m4
>> + Copyright (C) 2006-2013 Free Software Foundation, Inc.
>> + .
>> + Rapid Spanning Tree Protocol (RSTP) implementation
>> + Copyright (c) 2011-2014 M3S, Srl - Italy
>> + .
>> + LLDP implementation
>> + Copyright (c) 2008, 2012 Vincent Bernat <bernat@luffy.cx>
>> + .
>> + LLDP includes code used from the Net::CDP project based on the ISC license
>> + Copyright (c) 2014 Michael Chapman
>> + .
>> + LLDP includes code used from the ladvd project based on the ISC license
>> + Copyright (c) 2008, 2009, 2010 Sten Spans <sten@blinkenlights.nl>
>> + .
>> + Auto Attach implementation
>> + Copyright (c) 2014, 2015 WindRiver, Inc
>> + Copyright (c) 2014, 2015 Avaya, Inc
>> + .
>> + TCP connection tracker from FreeBSD pf, BSD licensed
>> + Copyright (c) 2001 Daniel Hartmeier
>> + Copyright (c) 2002 - 2008 Henning Brauer
>> + Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>

Not a problem of this patch, but I think, half of above
copyrights was copy-pasted from OVS and irrelevant for OVN.


>> +
>> +Files: build-aux/cccl
>> +Copyright: 2000-2003 Geoffrey Wossum <gwossum@acm.org>
>> +License: GPL-2
>> +
>> +Files: utilities/bugtool/ovn-bugtool-*
>> +       utilities/bugtool/plugins/network-status/ovn.xml
>> +Copyright: 2016 Nicira, Inc.
>> +License: LGPL-2.1
>> +
>> +Files: m4/absolute-header.m4
>> +       m4/include_next.m4
>> +Copyright: Derek Price
>> +           Paul Eggert
>> +           2006-2013 Free Software Foundation, Inc.
>> +License: file-is-free-software
>> + This file is free software; the Free Software Foundation
>> + gives unlimited permission to copy and/or distribute it,
>> + with or without modifications, as long as this notice is preserved.
>> +
>> +Files: ovn-vif/*
>> +Copyright: 2021 Canonical
>> +License: Apache-2.0
>> +
>> +License: GPL-2
>> + This program is free software; you can redistribute it and/or modify it under
>> + the terms of the GNU General Public License as published by the Free Software
>> + Foundation; either version 2 of the License, or (at your option) any later
>> + version.
>> + .
>> + This program is distributed in the hope that it will be useful, but WITHOUT
>> + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
>> + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
>> + .
>> + You should have received a copy of the GNU General Public License along with
>> + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
>> + St, Fifth Floor, Boston, MA 02110-1301 USA
>> + .
>> + On Debian systems, the complete text of the GNU General Public License v2
>> + (GPL) can be found in /usr/share/common-licenses/GPL-2.
>> +
>> +License: LGPL-2.1
>> + This library is free software; you can redistribute it and/or modify it under
>> + the terms of the GNU Lesser General Public License as published by the Free
>> + Software Foundation; either version 2.1 of the License.
>> + .
>> + This library is distributed in the hope that it will be useful, but WITHOUT
>> + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
>> + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
>> + details.
>> + .
>> + You should have received a copy of the GNU Lesser General Public License along
>> + with this library; if not, write to the Free Software Foundation, Inc., 51
>> + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
>> + .
>> + On Debian systems, the complete text of the GNU Lesser General Public License
>> + (LGPL) may be found in /usr/share/common-licenses/LGPL-2.
>> +
>> +License: Apache-2.0
>> + Licensed under the Apache License, Version 2.0 (the "License");
>> + you may not use this file except in compliance with the License.
>> + You may obtain a copy of the License at
>> + .
>> +    http://www.apache.org/licenses/LICENSE-2.0
>> + .
>> + Unless required by applicable law or agreed to in writing, software
>> + distributed under the License is distributed on an "AS IS" BASIS,
>> + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>> + See the License for the specific language governing permissions and
>> + limitations under the License.
>> + .
>> + On Debian-based systems the full text of the Apache version 2.0 license
>> + can be found in `/usr/share/common-licenses/Apache-2.0'.
>> diff --git a/debian/flaky-tests-amd64.txt b/debian/flaky-tests-amd64.txt
>> new file mode 100644
>> index 000000000..cfe5d8c66
>> --- /dev/null
>> +++ b/debian/flaky-tests-amd64.txt
>> @@ -0,0 +1,6 @@
>> +send gratuitous arp on localnet
>> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
>> +ACLs on Port Groups
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +northd ssl file change
>> diff --git a/debian/flaky-tests-arm64.txt b/debian/flaky-tests-arm64.txt
>> new file mode 100644
>> index 000000000..996d0537e
>> --- /dev/null
>> +++ b/debian/flaky-tests-arm64.txt
>> @@ -0,0 +1,5 @@
>> +ovn-controller incremental processing
>> +nb_cfg timestamp
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +ipsec -- basic configuration
>> diff --git a/debian/flaky-tests-armel.txt b/debian/flaky-tests-armel.txt
>> new file mode 100644
>> index 000000000..6ce03bb10
>> --- /dev/null
>> +++ b/debian/flaky-tests-armel.txt
>> @@ -0,0 +1,7 @@
>> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
>> +1 LR with distributed router gateway port
>> +ACL conjunction
>> +IP packet buffering
>> +test transport zones
>> +lflow cache for conjunctions
>> +nb_cfg timestamp
>> diff --git a/debian/flaky-tests-armhf.txt b/debian/flaky-tests-armhf.txt
>> new file mode 100644
>> index 000000000..43654f3ae
>> --- /dev/null
>> +++ b/debian/flaky-tests-armhf.txt
>> @@ -0,0 +1,9 @@
>> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
>> +ovn-controller incremental processing
>> +ACL conjunction
>> +neighbor update on same HV
>> +nb_cfg timestamp
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +ovn-ic -- gateway sync
>> +ipsec -- basic configuration
>> diff --git a/debian/flaky-tests-i386.txt b/debian/flaky-tests-i386.txt
>> new file mode 100644
>> index 000000000..b82300de9
>> --- /dev/null
>> +++ b/debian/flaky-tests-i386.txt
>> @@ -0,0 +1,8 @@
>> +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
>> +nb_cfg timestamp
>> +ARP replies for SNAT external ips
>> +conflict ACLs with address set
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +ovn-ic -- gateway sync
>> +ipsec -- basic configuration
>> diff --git a/debian/flaky-tests-mips64el.txt b/debian/flaky-tests-mips64el.txt
>> new file mode 100644
>> index 000000000..e67e2c4ca
>> --- /dev/null
>> +++ b/debian/flaky-tests-mips64el.txt
>> @@ -0,0 +1,5 @@
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +ovn-ic -- gateway sync
>> +ipsec -- basic configuration
>> +nb_cfg timestamp
>> diff --git a/debian/flaky-tests-mipsel.txt b/debian/flaky-tests-mipsel.txt
>> new file mode 100644
>> index 000000000..00d383572
>> --- /dev/null
>> +++ b/debian/flaky-tests-mipsel.txt
>> @@ -0,0 +1,21 @@
>> +vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS
>> +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
>> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
>> +send gratuitous arp for nat ips in localnet
>> +send gratuitous arp for NAT rules on distributed router
>> +vlan traffic for external network with distributed router gateway port
>> +send gratuitous ARP for NAT rules on HA distributed router
>> +ACL conjunction
>> +router - check packet length - icmp defrag
>> +router - check packet length - icmp defrag
>> +IP packet buffering
>> +test transport zones
>> +Load balancer health checks
>> +interconnection
>> +nb_cfg timestamp
>> +conflict ACLs with address set
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +northd ssl file change
>> +ovn-ic -- gateway sync
>> +ipsec -- basic configuration
>> diff --git a/debian/flaky-tests-ppc64el.txt b/debian/flaky-tests-ppc64el.txt
>> new file mode 100644
>> index 000000000..6e089b6cb
>> --- /dev/null
>> +++ b/debian/flaky-tests-ppc64el.txt
>> @@ -0,0 +1,6 @@
>> +options:requested-chassis for logical port
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +northd ssl file change
>> +ovn-ic -- gateway sync
>> +ipsec -- basic configuration
>> diff --git a/debian/flaky-tests-riscv64.txt b/debian/flaky-tests-riscv64.txt
>> new file mode 100644
>> index 000000000..50570ab80
>> --- /dev/null
>> +++ b/debian/flaky-tests-riscv64.txt
>> @@ -0,0 +1,6 @@
>> +send gratuitous arp on localnet
>> +1 LR with distributed router gateway port
>> +router - check packet length - icmp defrag
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +ipsec -- basic configuration
>> diff --git a/debian/flaky-tests-s390x.txt b/debian/flaky-tests-s390x.txt
>> new file mode 100644
>> index 000000000..a642063d9
>> --- /dev/null
>> +++ b/debian/flaky-tests-s390x.txt
>> @@ -0,0 +1,5 @@
>> +options:requested-chassis for logical port
>> +ACLs on Port Groups
>> +multi-vtep SB Chassis encap updates
>> +ACL with Port Group conjunction flow efficiency
>> +ipsec -- basic configuration
>> diff --git a/debian/gbp.conf b/debian/gbp.conf
>> new file mode 100644
>> index 000000000..438b3fa8d
>> --- /dev/null
>> +++ b/debian/gbp.conf
>> @@ -0,0 +1,13 @@
>> +[DEFAULT]
>> +debian-branch = main
>> +upstream-branch = upstream
>> +pristine-tar = True
>> +components = ['ovn-vif']
>> +
>> +[import-orig]
>> +upstream-vcs-tag = v%(version)s
>> +
>> +[dch]
>> +multimaint-merge = True
>> +customizations=/usr/share/doc/git-buildpackage/examples/wrap_cl.py
>> +git-log=--first-parent
>> diff --git a/debian/not-installed b/debian/not-installed
>> new file mode 100644
>> index 000000000..e213b139d
>> --- /dev/null
>> +++ b/debian/not-installed
>> @@ -0,0 +1,5 @@
>> +# The OVN library and headers are currently not considered ABI/API stable.
>> +# If the need arises to build sibling projects we should probably provide an
>> +# ovn-source package.
>> +usr/include/*
>> +usr/lib/*
>> diff --git a/debian/ovn-central.default b/debian/ovn-central.default
>> new file mode 100644
>> index 000000000..7cea13e50
>> --- /dev/null
>> +++ b/debian/ovn-central.default
>> @@ -0,0 +1,5 @@
>> +# This is a POSIX shell fragment                -*- sh -*-
>> +
>> +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
>> +# a suitable place to specify --ovn-northd-wrapper=valgrind.
>> +# OVN_CTL_OPTS=
>> diff --git a/debian/ovn-central.install b/debian/ovn-central.install
>> new file mode 100644
>> index 000000000..095ca7cfa
>> --- /dev/null
>> +++ b/debian/ovn-central.install
>> @@ -0,0 +1,3 @@
>> +usr/bin/ovn-northd
>> +usr/share/ovn/ovn-nb.ovsschema
>> +usr/share/ovn/ovn-sb.ovsschema
>> diff --git a/debian/ovn-central.ovn-northd.service b/debian/ovn-central.ovn-northd.service
>> new file mode 100644
>> index 000000000..09c600016
>> --- /dev/null
>> +++ b/debian/ovn-central.ovn-northd.service
>> @@ -0,0 +1,15 @@
>> +[Unit]
>> +Description=Open Virtual Network central control daemon
>> +After=network.target ovn-nb-ovsdb.service ovn-sb-ovsdb.service
>> +PartOf=ovn-central.service
>> +DefaultDependencies=no
>> +
>> +[Service]
>> +Type=forking
>> +EnvironmentFile=-/etc/default/ovn-central
>> +PIDFile=%t/ovn/ovn-northd.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_northd --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_northd --no-monitor
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> diff --git a/debian/ovn-central.ovn-ovsdb-server-nb.service b/debian/ovn-central.ovn-ovsdb-server-nb.service
>> new file mode 100644
>> index 000000000..81f6c75a3
>> --- /dev/null
>> +++ b/debian/ovn-central.ovn-ovsdb-server-nb.service
>> @@ -0,0 +1,18 @@
>> +[Unit]
>> +Description=Open vSwitch database server for OVN Northbound database
>> +After=network.target
>> +PartOf=ovn-central.service
>> +DefaultDependencies=no
>> +
>> +[Service]
>> +Type=simple
>> +EnvironmentFile=-/etc/default/ovn-central
>> +PIDFile=%t/ovn/ovnnb_db.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_nb_ovsdb
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> +
>> +[Install]
>> +Alias=ovn-nb-ovsdb.service
>> diff --git a/debian/ovn-central.ovn-ovsdb-server-sb.service b/debian/ovn-central.ovn-ovsdb-server-sb.service
>> new file mode 100644
>> index 000000000..3aa840d2f
>> --- /dev/null
>> +++ b/debian/ovn-central.ovn-ovsdb-server-sb.service
>> @@ -0,0 +1,18 @@
>> +[Unit]
>> +Description=Open vSwitch database server for OVN Southbound database
>> +After=network.target
>> +PartOf=ovn-central.service
>> +DefaultDependencies=no
>> +
>> +[Service]
>> +Type=simple
>> +EnvironmentFile=-/etc/default/ovn-central
>> +PIDFile=%t/run/ovn/ovnsb_db.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_sb_ovsdb
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> +
>> +[Install]
>> +Alias=ovn-sb-ovsdb.service
>> diff --git a/debian/ovn-central.postrm b/debian/ovn-central.postrm
>> new file mode 100644
>> index 000000000..3b3483fc3
>> --- /dev/null
>> +++ b/debian/ovn-central.postrm
>> @@ -0,0 +1,47 @@
>> +#!/bin/sh
>> +# postrm script for ovn-central
>> +#
>> +# see: dh_installdeb(1)
>> +
>> +set -e
>> +
>> +# summary of how this script can be called:
>> +#        * <postrm> `remove'
>> +#        * <postrm> `purge'
>> +#        * <old-postrm> `upgrade' <new-version>
>> +#        * <new-postrm> `failed-upgrade' <old-version>
>> +#        * <new-postrm> `abort-install'
>> +#        * <new-postrm> `abort-install' <old-version>
>> +#        * <new-postrm> `abort-upgrade' <old-version>
>> +#        * <disappearer's-postrm> `disappear' <overwriter>
>> +#          <overwriter-version>
>> +# for details, see http://www.debian.org/doc/debian-policy/ or
>> +# the debian-policy package
>> +
>> +
>> +case "$1" in
>> +    purge)
>> +        rm -f /etc/openvswitch/ovnnb.db*
>> +        rm -f /etc/openvswitch/.ovnnb.db.~lock~
>> +        rm -f /etc/openvswitch/ovnsb.db*
>> +        rm -f /etc/openvswitch/.ovnsb.db.~lock~
>> +        rm -f /var/log/openvswitch/ovn-northd.log* || true
>> +        ;;
>> +
>> +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
>> +        ;;
>> +
>> +    *)
>> +        echo "postrm called with unknown argument \`$1'" >&2
>> +        exit 1
>> +        ;;
>> +esac
>> +
>> +# dh_installdeb will replace this with shell code automatically
>> +# generated by other debhelper scripts.
>> +
>> +#DEBHELPER#
>> +
>> +exit 0
>> +
>> +
>> diff --git a/debian/ovn-central.service b/debian/ovn-central.service
>> new file mode 100644
>> index 000000000..aead7eae6
>> --- /dev/null
>> +++ b/debian/ovn-central.service
>> @@ -0,0 +1,16 @@
>> +[Unit]
>> +Description=Open Virtual Network central components
>> +After=network.target
>> +Requires=network.target
>> +Wants=ovn-northd.service
>> +Wants=ovn-ovsdb-server-sb.service
>> +Wants=ovn-ovsdb-server-nb.service
>> +
>> +[Service]
>> +Type=oneshot
>> +ExecStart=/bin/true
>> +ExecStop=/bin/true
>> +RemainAfterExit=yes
>> +
>> +[Install]
>> +WantedBy=multi-user.target
>> diff --git a/debian/ovn-common.docs b/debian/ovn-common.docs
>> new file mode 100644
>> index 000000000..6d5ee1d05
>> --- /dev/null
>> +++ b/debian/ovn-common.docs
>> @@ -0,0 +1 @@
>> +NOTICE
>> diff --git a/debian/ovn-common.install b/debian/ovn-common.install
>> new file mode 100644
>> index 000000000..52e9e0050
>> --- /dev/null
>> +++ b/debian/ovn-common.install
>> @@ -0,0 +1,32 @@
>> +usr/bin/ovn-appctl
>> +usr/bin/ovn_detrace.py
>> +usr/bin/ovn-detrace
>> +usr/bin/ovn-nbctl
>> +usr/bin/ovn-sbctl
>> +/usr/bin/ovn-ic-nbctl
>> +/usr/bin/ovn-ic-sbctl
>> +usr/bin/ovn-trace
>> +usr/share/ovn/bugtool-plugins/network-status/ovn.xml
>> +usr/share/ovn/scripts/ovn-ctl
>> +usr/share/ovn/scripts/ovn-lib
>> +usr/share/ovn/scripts/ovndb-servers.ocf
>> +usr/share/ovn/scripts/ovn-bugtool-nbctl-show
>> +usr/share/ovn/scripts/ovn-bugtool-sbctl-lflow-list
>> +usr/share/ovn/scripts/ovn-bugtool-sbctl-show
>> +usr/share/man/man1/ovn-detrace.1
>> +usr/share/man/man5/ovn-ic-nb.5
>> +usr/share/man/man5/ovn-ic-sb.5
>> +usr/share/man/man5/ovn-nb.5
>> +usr/share/man/man5/ovn-sb.5
>> +usr/share/man/man7/ovn-architecture.7
>> +usr/share/man/man8/ovn-appctl.8
>> +usr/share/man/man8/ovn-controller-vtep.8
>> +usr/share/man/man8/ovn-controller.8
>> +usr/share/man/man8/ovn-ctl.8
>> +usr/share/man/man8/ovn-ic-nbctl.8
>> +usr/share/man/man8/ovn-ic-sbctl.8
>> +usr/share/man/man8/ovn-ic.8
>> +usr/share/man/man8/ovn-nbctl.8
>> +usr/share/man/man8/ovn-northd.8
>> +usr/share/man/man8/ovn-sbctl.8
>> +usr/share/man/man8/ovn-trace.8
>> diff --git a/debian/ovn-common.logrotate b/debian/ovn-common.logrotate
>> new file mode 100644
>> index 000000000..a351ec303
>> --- /dev/null
>> +++ b/debian/ovn-common.logrotate
>> @@ -0,0 +1,22 @@
>> +# Copyright (C) 2019 Red Hat, Inc.
>> +#
>> +# Copying and distribution of this file, with or without modification,
>> +# are permitted in any medium without royalty provided the copyright
>> +# notice and this notice are preserved.  This file is offered as-is,
>> +# without warranty of any kind.
>> +
>> +/var/log/ovn/*.log {
>> +    su root root
>> +    daily
>> +    compress
>> +    sharedscripts
>> +    missingok
>> +    postrotate
>> +        # Tell OVN daemons to reopen their log files
>> +        if [ -d /var/run/ovn ]; then
>> +            for ctl in /var/run/ovn/*.ctl; do
>> +                ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
>> +            done
>> +        fi
>> +    endscript
>> +}
>> diff --git a/debian/ovn-common.postinst b/debian/ovn-common.postinst
>> new file mode 100644
>> index 000000000..588044fbc
>> --- /dev/null
>> +++ b/debian/ovn-common.postinst
>> @@ -0,0 +1,24 @@
>> +#!/bin/sh
>> +# postinst script for ovn-common
>> +#
>> +# see: dh_installdeb(1)
>> +
>> +set -e
>> +
>> +case "$1" in
>> +    configure)
>> +        mkdir -p /usr/lib/ocf/resource.d/ovn
>> +        ln -sf /usr/share/openvswitch/scripts/ovndb-servers.ocf /usr/lib/ocf/resource.d/ovn/ovndb-servers
>> +        ;;
>> +    abort-upgrade|abort-remove|abort-deconfigure)
>> +        ;;
>> +
>> +    *)
>> +        echo "postinst called with unknown argument \`$1'" >&2
>> +        exit 1
>> +        ;;
>> +esac
>> +
>> +#DEBHELPER#
>> +
>> +exit 0
>> diff --git a/debian/ovn-common.postrm b/debian/ovn-common.postrm
>> new file mode 100644
>> index 000000000..9face726b
>> --- /dev/null
>> +++ b/debian/ovn-common.postrm
>> @@ -0,0 +1,23 @@
>> +#!/bin/sh
>> +# postrm script for openvswitch-testcontroller
>> +#
>> +# see: dh_installdeb(1)
>> +
>> +set -e
>> +
>> +case "$1" in
>> +    purge|remove)
>> +        rm -rf /usr/lib/ocf/resource.d/ovn
>> +        ;;
>> +    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
>> +        ;;
>> +
>> +    *)
>> +        echo "postrm called with unknown argument \`$1'" >&2
>> +        exit 1
>> +        ;;
>> +esac
>> +
>> +#DEBHELPER#
>> +
>> +exit 0
>> diff --git a/debian/ovn-controller-vtep.install b/debian/ovn-controller-vtep.install
>> new file mode 100644
>> index 000000000..1d208f37e
>> --- /dev/null
>> +++ b/debian/ovn-controller-vtep.install
>> @@ -0,0 +1 @@
>> +usr/bin/ovn-controller-vtep
>> diff --git a/debian/ovn-controller-vtep.service b/debian/ovn-controller-vtep.service
>> new file mode 100644
>> index 000000000..d51e75277
>> --- /dev/null
>> +++ b/debian/ovn-controller-vtep.service
>> @@ -0,0 +1,16 @@
>> +[Unit]
>> +Description=Open Virtual Network VTEP gateway controller daemon
>> +After=openvswitch-switch.service
>> +Requires=openvswitch-switch.service
>> +
>> +[Service]
>> +Type=forking
>> +PIDFile=%t/ovn/ovn-controller-vtep.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller_vtep --no-monitor $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller_vtep --no-monitor
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> +
>> +[Install]
>> +WantedBy=multi-user.target
>> diff --git a/debian/ovn-doc.doc-base b/debian/ovn-doc.doc-base
>> new file mode 100644
>> index 000000000..c7192ebdb
>> --- /dev/null
>> +++ b/debian/ovn-doc.doc-base
>> @@ -0,0 +1,9 @@
>> +Document: ovn-doc
>> +Title: Open Virtual Network Documentation
>> +Author: N/A
>> +Abstract: Sphinx documentation for Open Virtual Network
>> +Section: Network/Communication
>> +
>> +Format: HTML
>> +Index: /usr/share/doc/ovn-doc/html/index.html
>> +Files: /usr/share/doc/ovn-doc/html/*
>> diff --git a/debian/ovn-doc.install b/debian/ovn-doc.install
>> new file mode 100644
>> index 000000000..4cfd153cf
>> --- /dev/null
>> +++ b/debian/ovn-doc.install
>> @@ -0,0 +1 @@
>> +Documentation/_build/html/* /usr/share/doc/ovn-doc/html/
>> diff --git a/debian/ovn-docker.install b/debian/ovn-docker.install
>> new file mode 100644
>> index 000000000..583306732
>> --- /dev/null
>> +++ b/debian/ovn-docker.install
>> @@ -0,0 +1,2 @@
>> +usr/bin/ovn-docker-overlay-driver
>> +usr/bin/ovn-docker-underlay-driver
>> diff --git a/debian/ovn-host.default b/debian/ovn-host.default
>> new file mode 100644
>> index 000000000..7fd54efda
>> --- /dev/null
>> +++ b/debian/ovn-host.default
>> @@ -0,0 +1,5 @@
>> +# This is a POSIX shell fragment                -*- sh -*-
>> +
>> +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
>> +# a suitable place to specify --ovn-controller-wrapper=valgrind.
>> +# OVN_CTL_OPTS=
>> diff --git a/debian/ovn-host.install b/debian/ovn-host.install
>> new file mode 100644
>> index 000000000..d2de82fd9
>> --- /dev/null
>> +++ b/debian/ovn-host.install
>> @@ -0,0 +1 @@
>> +usr/bin/ovn-controller
>> diff --git a/debian/ovn-host.ovn-controller.service b/debian/ovn-host.ovn-controller.service
>> new file mode 100644
>> index 000000000..a41e77d75
>> --- /dev/null
>> +++ b/debian/ovn-host.ovn-controller.service
>> @@ -0,0 +1,15 @@
>> +[Unit]
>> +Description=Open Virtual Network host control daemon
>> +After=network.target openvswitch-switch.service
>> +PartOf=ovn-host.service
>> +DefaultDependencies=no
>> +
>> +[Service]
>> +Type=forking
>> +EnvironmentFile=-/etc/default/ovn-host
>> +PIDFile=%t/ovn/ovn-controller.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller --no-monitor
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> diff --git a/debian/ovn-host.postrm b/debian/ovn-host.postrm
>> new file mode 100644
>> index 000000000..9d17ef966
>> --- /dev/null
>> +++ b/debian/ovn-host.postrm
>> @@ -0,0 +1,43 @@
>> +#!/bin/sh
>> +# postrm script for ovn-host
>> +#
>> +# see: dh_installdeb(1)
>> +
>> +set -e
>> +
>> +# summary of how this script can be called:
>> +#        * <postrm> `remove'
>> +#        * <postrm> `purge'
>> +#        * <old-postrm> `upgrade' <new-version>
>> +#        * <new-postrm> `failed-upgrade' <old-version>
>> +#        * <new-postrm> `abort-install'
>> +#        * <new-postrm> `abort-install' <old-version>
>> +#        * <new-postrm> `abort-upgrade' <old-version>
>> +#        * <disappearer's-postrm> `disappear' <overwriter>
>> +#          <overwriter-version>
>> +# for details, see http://www.debian.org/doc/debian-policy/ or
>> +# the debian-policy package
>> +
>> +
>> +case "$1" in
>> +    purge)
>> +        rm -f /var/log/openvswitch/ovn-controller.log* || true
>> +        ;;
>> +
>> +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
>> +        ;;
>> +
>> +    *)
>> +        echo "postrm called with unknown argument \`$1'" >&2
>> +        exit 1
>> +        ;;
>> +esac
>> +
>> +# dh_installdeb will replace this with shell code automatically
>> +# generated by other debhelper scripts.
>> +
>> +#DEBHELPER#
>> +
>> +exit 0
>> +
>> +
>> diff --git a/debian/ovn-host.service b/debian/ovn-host.service
>> new file mode 100644
>> index 000000000..b524888fd
>> --- /dev/null
>> +++ b/debian/ovn-host.service
>> @@ -0,0 +1,14 @@
>> +[Unit]
>> +Description=Open Virtual Network host components
>> +After=network.target
>> +Requires=network.target
>> +Wants=ovn-controller.service
>> +
>> +[Service]
>> +Type=oneshot
>> +ExecStart=/bin/true
>> +ExecStop=/bin/true
>> +RemainAfterExit=yes
>> +
>> +[Install]
>> +WantedBy=multi-user.target
>> diff --git a/debian/ovn-ic-db.install b/debian/ovn-ic-db.install
>> new file mode 100644
>> index 000000000..a4d50002e
>> --- /dev/null
>> +++ b/debian/ovn-ic-db.install
>> @@ -0,0 +1,2 @@
>> +/usr/share/ovn/ovn-ic-nb.ovsschema
>> +/usr/share/ovn/ovn-ic-sb.ovsschema
>> diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
>> new file mode 100644
>> index 000000000..193024daf
>> --- /dev/null
>> +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
>> @@ -0,0 +1,15 @@
>> +[Unit]
>> +Description=Open vSwitch database server for OVN IC Northbound database
>> +After=network.target
>> +PartOf=ovn-ic-db.service
>> +DefaultDependencies=no
>> +
>> +[Service]
>> +Type=simple
>> +EnvironmentFile=-/etc/default/ovn-ic
>> +PIDFile=%t/ovn/ovn_ic_nb_db.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_nb_ovsdb $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_nb_ovsdb
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
>> new file mode 100644
>> index 000000000..714748325
>> --- /dev/null
>> +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
>> @@ -0,0 +1,15 @@
>> +[Unit]
>> +Description=Open vSwitch database server for OVN IC Southbound database
>> +After=network.target
>> +PartOf=ovn-ic-db.service
>> +DefaultDependencies=no
>> +
>> +[Service]
>> +Type=simple
>> +EnvironmentFile=-/etc/default/ovn-ic
>> +PIDFile=%t/ovn/ovn_ic_sb_db.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_sb_ovsdb $OVN_CTL_OPTS
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_sb_ovsdb
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> diff --git a/debian/ovn-ic-db.service b/debian/ovn-ic-db.service
>> new file mode 100644
>> index 000000000..b116bc79d
>> --- /dev/null
>> +++ b/debian/ovn-ic-db.service
>> @@ -0,0 +1,15 @@
>> +[Unit]
>> +Description=Open Virtual Network interconnection databases
>> +After=network.target
>> +Requires=network.target
>> +Wants=ovn-ovsdb-server-ic-sb.service
>> +Wants=ovn-ovsdb-server-ic-nb.service
>> +
>> +[Service]
>> +Type=oneshot
>> +ExecStart=/bin/true
>> +ExecStop=/bin/true
>> +RemainAfterExit=yes
>> +
>> +[Install]
>> +WantedBy=multi-user.target
>> diff --git a/debian/ovn-ic.install b/debian/ovn-ic.install
>> new file mode 100644
>> index 000000000..b15508259
>> --- /dev/null
>> +++ b/debian/ovn-ic.install
>> @@ -0,0 +1 @@
>> +/usr/bin/ovn-ic
>> diff --git a/debian/ovn-ic.service b/debian/ovn-ic.service
>> new file mode 100644
>> index 000000000..07974285f
>> --- /dev/null
>> +++ b/debian/ovn-ic.service
>> @@ -0,0 +1,16 @@
>> +[Unit]
>> +Description=Open Virtual Network interconnection controller
>> +After=network.target
>> +Requires=network.target
>> +
>> +[Service]
>> +Type=forking
>> +PIDFile=%t/ovn/ovn-ic.pid
>> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_ic --no-monitor
>> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic
>> +Restart=on-failure
>> +LimitNOFILE=65535
>> +TimeoutStopSec=15
>> +
>> +[Install]
>> +WantedBy=multi-user.target
>> diff --git a/debian/rules b/debian/rules
>> new file mode 100755
>> index 000000000..4596afb49
>> --- /dev/null
>> +++ b/debian/rules
>> @@ -0,0 +1,104 @@
>> +#!/usr/bin/make -f
>> +# -*- makefile -*-
>> +#export DH_VERBOSE=1
>> +export DEB_BUILD_MAINT_OPTIONS = hardening=+all
>> +
>> +%:
>> +       dh $@ --with autoreconf,python3,sphinxdoc
>> +
>> +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
>> +PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
>> +else
>> +PARALLEL =
>> +endif
>> +
>> +override_dh_auto_configure:
>> +       # Configure OVS before OVN
>> +       test -d $(CURDIR)/ovs || mkdir ovs
>> +       cd ovs && tar -xzf /usr/src/openvswitch/openvswitch.tar.gz --strip-components=1

This looks hard to maintain.  The source archive AFAICT
is coming from the openvswitch-source package installed
from ubuntu reporitories, but there is no guarantee that
the version of OVS needed for upstream OVN is available
in ubuntu repos.  It might be outdated because ubuntu
is using some stable version of OVN, but not OVN master.
And also any patch that tries to advance the OVS submodule
version will likely fail the CI, because there is no way
to change openvswitch-source package at the same time.

I think, we need to build with included submodule here.
That is what OVN users will expect if they are changing
some code in the OVS submodule and re-building the OVN
package locally, I guess.

We talked before about OVN providing submodule as part of
a source archive for releases.  That should remove the
dependency on openvswitch-source package here and should
work for both upstream and downstream builds in ubuntu.

>> +       cd ovs && ./configure --enable-ssl --localstatedir=/var --sysconfdir=/etc --prefix=/usr && make $(PARALLEL)
>> +       # Configure OVN to allow building OVN VIF
>> +       ./boot.sh && ./configure \
>> +               --prefix=/usr \
>> +               --localstatedir=/var \
>> +               --sysconfdir=/etc \
>> +               --with-dbdir=/var/lib/ovn \
>> +               --with-ovs-source=$(CURDIR)/ovs \
>> +               --enable-ssl
>> +       # Configure and build OVN VIF
>> +       cd ovn-vif && \

This should be noted somewhere that ovn-vif is a required
dependency.  Or did I miss that part of the documentation?

It might be better to make it optional somehow, so upstream
users, who don't need it, could build OVN from just OVN
source tree.

>> +               ./boot.sh && \
>> +               ./configure \
>> +                       --with-ovs-source=$(CURDIR)/ovs \
>> +                       --with-ovn-source=$(CURDIR) \
>> +                       --enable-plug-representor && \
>> +               make $(PARALLEL)
>> +       # Use dh_auto_configure to build OVN
>> +       dh_auto_configure -- \
>> +               --prefix=/usr \
>> +               --localstatedir=/var \
>> +               --sysconfdir=/etc \
>> +               --with-dbdir=/var/lib/ovn \
>> +               --with-ovs-source=$(CURDIR)/ovs \
>> +               --enable-ssl \
>> +               --with-vif-plug-provider=$(CURDIR)/ovn-vif
>> +       $(MAKE) debian/copyright
>> +
>> +TEST_LIST = $(shell \
>> +                $(CURDIR)/debian/testlist.py \
>> +                $(CURDIR)/debian/flaky-tests-$(DEB_HOST_ARCH).txt \
>> +                $(CURDIR)/tests/testsuite)
>> +
>> +override_dh_auto_test:
>> +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
>> +       if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST)' || \
>> +                $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \
>> +       else \
>> +               cat tests/testsuite.log; \
>> +               exit 1; \
>> +       fi
>> +endif # nocheck
>> +
>> +override_dh_auto_build:
>> +       cd ovs && $(MAKE) $(PARALLEL)
>> +       $(MAKE) $(PARALLEL)
>> +
>> +override_dh_auto_clean:
>> +       dh_auto_clean
>> +       cd ovn-vif && make distclean | :
>> +       rm -rf ovs
>> +
>> +override_dh_installinit:
>> +       # Package does not ship any init.d files
>> +       dh_installinit --no-scripts
>> +
>> +override_dh_installsystemd:
>> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-northd
>> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-sb
>> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-nb
>> +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-sb
>> +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-nb
>> +       dh_installsystemd --restart-after-upgrade -povn-host    --name=ovn-controller
>> +       dh_installsystemd --restart-after-upgrade
>> +
>> +override_dh_python3:
>> +       dh_python3 --shebang=/usr/bin/python3
>> +
>> +# Helper target for creating snapshots from upstream git
>> +DATE=$(shell date +%Y%m%d)
>> +# Upstream branch to track
>> +BRANCH=main
>> +VERSION=22.09.0
>> +
>> +get-orig-snapshot:
>> +       rm -Rf ovn-upstream ovn-vif-upstream
>> +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn ovn-upstream
>> +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn-vif ovn-vif-upstream

Why is it possible to clone ovn-vif, but ovs is used from the
openvswitch-sources package?  Double standards! :)

>> +       cd ovn-upstream && \
>> +               export COMMIT=`git rev-parse --short HEAD` && \
>> +               git archive --format tgz --prefix=ovn-$(VERSION)~git$(DATE).$$COMMIT/ \
>> +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH) && \

Can we just archive the submodule here as well?  It's not some
separate shared library, it's just a set of required sources
that are necessary to build with.

>> +               cd ../ovn-vif-upstream && \
>> +               git archive --format tgz --prefix=ovn-vif-$(VERSION)~git$(DATE).$$COMMIT/ \
>> +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig-ovn-vif.tar.gz $(BRANCH)
>> +       rm -Rf ovn-upstream ovn-vif-upstream
>> diff --git a/debian/source/format b/debian/source/format
>> new file mode 100644
>> index 000000000..163aaf8d8
>> --- /dev/null
>> +++ b/debian/source/format
>> @@ -0,0 +1 @@
>> +3.0 (quilt)
>> diff --git a/debian/source/include-binaries b/debian/source/include-binaries
>> new file mode 100644
>> index 000000000..2dfb2fe55
>> --- /dev/null
>> +++ b/debian/source/include-binaries
>> @@ -0,0 +1 @@
>> +ovn-vif/Documentation/_static/logo.png
>> diff --git a/debian/testlist.py b/debian/testlist.py
>> new file mode 100755
>> index 000000000..24d2ae9c5
>> --- /dev/null
>> +++ b/debian/testlist.py
>> @@ -0,0 +1,72 @@
>> +#!/usr/bin/env python3
>> +import enum
>> +import itertools
>> +import os
>> +import sys
>> +
>> +
>> +if len(sys.argv) < 3:
>> +    print(
>> +        "usage: {} skipdescriptionlist testsuite\n"
>> +        "\n"
>> +        "This program reads two files, a skiplist containing the \n"
>> +        "description of tests to skip separated by newline, and a \n"
>> +        "generated testsuite script.\n"
>> +        "\n"
>> +        "From this it produces string with range of tests to execute \n"
>> +        "which can be provided to the testsuite script.\n".format(sys.argv[0]),
>> +        file=sys.stderr,
>> +    )
>> +    sys.exit(os.EX_USAGE)
>> +
>> +
>> +SKIP_TEST_STRINGS = []
>> +with open(sys.argv[1]) as fin:
>> +    SKIP_TEST_STRINGS = [line.rstrip() for line in fin.readlines()]
>> +
>> +
>> +@enum.unique
>> +class State(enum.Enum):
>> +    INIT = enum.auto()
>> +    AT_HELP_ALL = enum.auto()
>> +
>> +
>> +SKIP_TESTS = set()
>> +TESTS = set()
>> +with open(sys.argv[2]) as fin:
>> +    state = State.INIT
>> +    last_test = 0
>> +    for line in fin.readlines():
>> +        if state == State.INIT:
>> +            if not line.startswith('at_help_all="'):
>> +                continue
>> +            else:
>> +                state = State.AT_HELP_ALL
>> +                data = line.split('"')[1].rstrip().split(";")
>> +        elif state == State.AT_HELP_ALL:
>> +            if line.startswith('"'):
>> +                break
>> +            data = line.rstrip().split(";")
>> +        test_nr = int(data[0])
>> +        if last_test < test_nr:
>> +            last_test = test_nr
>> +        for skip_string in SKIP_TEST_STRINGS:
>> +            if skip_string in data[2]:
>> +                SKIP_TESTS.add(test_nr)
>> +            else:
>> +                TESTS.add(test_nr)
>> +
>> +
>> +def ranges(testlist):
>> +    for a, b in itertools.groupby(
>> +        enumerate(list(testlist)), lambda pair: pair[1] - pair[0]
>> +    ):
>> +        b = list(b)
>> +        yield b[0][1], b[-1][1]
>> +
>> +
>> +testranges = [
>> +    "{}-{}".format(testrange[0], testrange[1])
>> +    for testrange in ranges(TESTS - SKIP_TESTS)
>> +]
>> +print(" ".join(testranges))
>> diff --git a/debian/watch b/debian/watch
>> new file mode 100644
>> index 000000000..4831f3456
>> --- /dev/null
>> +++ b/debian/watch
>> @@ -0,0 +1,5 @@
>> +version=4
>> +opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-$1\.tar\.gz/ \
>> +  https://github.com/ovn-org/ovn/tags .*/v?(\d\S+)\.tar\.gz
>> +opts="filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-vif-$1\.tar\.gz/, component=ovn-vif" \
>> +  https://github.com/ovn-org/ovn-vif/tags .*/v?(\d\S+)\.tar\.gz
>> --
>> 2.36.1
Frode Nordahl Aug. 15, 2022, 7:58 a.m. UTC | #4
On Thu, Aug 11, 2022 at 9:10 PM Ilya Maximets <i.maximets@ovn.org> wrote:
>
> On 8/5/22 22:39, Frode Nordahl wrote:
> > Ilya and Numan,
> >
> > I preemptively added your names to the commit message because the
> > patch contains your work as detailed in the commit message.
> >
> > I hope this is ok.
>
> Fine by me.  See some comments inline regarding things I spotted
> on a first read.

Thank you, Ilya, much appreciated!

> Best regards, Ilya Maximets.
>
> >
> > On Fri, Aug 5, 2022 at 10:35 PM Frode Nordahl
> > <frode.nordahl@canonical.com> wrote:
> >>
> >> Update debian package source from Debian and Ubuntu.
> >>
> >> debian/ovn-common.logrotate comes from the RHEL packaging in this
> >> tree, and author is credited below.
> >>
> >> The debian/automake.mk tricks to generate the copyright file while
> >> building came from the work on the debian packaging in openvswitch
> >> and author is credited below.
> >>
> >> Signed-off-by: James Page <james.page@ubuntu.com>
> >> Co-Authored-by: James Page <james.page@ubuntu.com>
> >> Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> >> Co-Authored-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
> >> Signed-off-by: Numan Siddique <numans@ovn.org>
> >> Co-Authored-by: Numan Siddique <numans@ovn.org>
> >> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
> >> Co-Authored-by: Ilya Maximets <i.maximets@ovn.org>
> >> Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com>
> >> ---
> >>  build-aux/initial-tab-whitelist               |   3 +-
> >>  debian/.gitignore                             |  17 ++
> >>  debian/automake.mk                            |  85 ++++++++-
> >>  debian/control                                | 176 ++++++++++++++++++
> >>  debian/copyright.in                           | 146 +++++++++++++++
> >>  debian/flaky-tests-amd64.txt                  |   6 +
> >>  debian/flaky-tests-arm64.txt                  |   5 +
> >>  debian/flaky-tests-armel.txt                  |   7 +
> >>  debian/flaky-tests-armhf.txt                  |   9 +
> >>  debian/flaky-tests-i386.txt                   |   8 +
> >>  debian/flaky-tests-mips64el.txt               |   5 +
> >>  debian/flaky-tests-mipsel.txt                 |  21 +++
> >>  debian/flaky-tests-ppc64el.txt                |   6 +
> >>  debian/flaky-tests-riscv64.txt                |   6 +
> >>  debian/flaky-tests-s390x.txt                  |   5 +
> >>  debian/gbp.conf                               |  13 ++
> >>  debian/not-installed                          |   5 +
> >>  debian/ovn-central.default                    |   5 +
> >>  debian/ovn-central.install                    |   3 +
> >>  debian/ovn-central.ovn-northd.service         |  15 ++
> >>  .../ovn-central.ovn-ovsdb-server-nb.service   |  18 ++
> >>  .../ovn-central.ovn-ovsdb-server-sb.service   |  18 ++
> >>  debian/ovn-central.postrm                     |  47 +++++
> >>  debian/ovn-central.service                    |  16 ++
> >>  debian/ovn-common.docs                        |   1 +
> >>  debian/ovn-common.install                     |  32 ++++
> >>  debian/ovn-common.logrotate                   |  22 +++
> >>  debian/ovn-common.postinst                    |  24 +++
> >>  debian/ovn-common.postrm                      |  23 +++
> >>  debian/ovn-controller-vtep.install            |   1 +
> >>  debian/ovn-controller-vtep.service            |  16 ++
> >>  debian/ovn-doc.doc-base                       |   9 +
> >>  debian/ovn-doc.install                        |   1 +
> >>  debian/ovn-docker.install                     |   2 +
> >>  debian/ovn-host.default                       |   5 +
> >>  debian/ovn-host.install                       |   1 +
> >>  debian/ovn-host.ovn-controller.service        |  15 ++
> >>  debian/ovn-host.postrm                        |  43 +++++
> >>  debian/ovn-host.service                       |  14 ++
> >>  debian/ovn-ic-db.install                      |   2 +
> >>  .../ovn-ic-db.ovn-ovsdb-server-ic-nb.service  |  15 ++
> >>  .../ovn-ic-db.ovn-ovsdb-server-ic-sb.service  |  15 ++
> >>  debian/ovn-ic-db.service                      |  15 ++
> >>  debian/ovn-ic.install                         |   1 +
> >>  debian/ovn-ic.service                         |  16 ++
> >>  debian/rules                                  | 104 +++++++++++
> >>  debian/source/format                          |   1 +
> >>  debian/source/include-binaries                |   1 +
> >>  debian/testlist.py                            |  72 +++++++
> >>  debian/watch                                  |   5 +
> >>  50 files changed, 1098 insertions(+), 3 deletions(-)
> >>  create mode 100644 debian/.gitignore
> >>  create mode 100644 debian/control
> >>  create mode 100644 debian/copyright.in
> >>  create mode 100644 debian/flaky-tests-amd64.txt
> >>  create mode 100644 debian/flaky-tests-arm64.txt
> >>  create mode 100644 debian/flaky-tests-armel.txt
> >>  create mode 100644 debian/flaky-tests-armhf.txt
> >>  create mode 100644 debian/flaky-tests-i386.txt
> >>  create mode 100644 debian/flaky-tests-mips64el.txt
> >>  create mode 100644 debian/flaky-tests-mipsel.txt
> >>  create mode 100644 debian/flaky-tests-ppc64el.txt
> >>  create mode 100644 debian/flaky-tests-riscv64.txt
> >>  create mode 100644 debian/flaky-tests-s390x.txt
> >>  create mode 100644 debian/gbp.conf
> >>  create mode 100644 debian/not-installed
> >>  create mode 100644 debian/ovn-central.default
> >>  create mode 100644 debian/ovn-central.install
> >>  create mode 100644 debian/ovn-central.ovn-northd.service
> >>  create mode 100644 debian/ovn-central.ovn-ovsdb-server-nb.service
> >>  create mode 100644 debian/ovn-central.ovn-ovsdb-server-sb.service
> >>  create mode 100644 debian/ovn-central.postrm
> >>  create mode 100644 debian/ovn-central.service
> >>  create mode 100644 debian/ovn-common.docs
> >>  create mode 100644 debian/ovn-common.install
> >>  create mode 100644 debian/ovn-common.logrotate
> >>  create mode 100644 debian/ovn-common.postinst
> >>  create mode 100644 debian/ovn-common.postrm
> >>  create mode 100644 debian/ovn-controller-vtep.install
> >>  create mode 100644 debian/ovn-controller-vtep.service
> >>  create mode 100644 debian/ovn-doc.doc-base
> >>  create mode 100644 debian/ovn-doc.install
> >>  create mode 100644 debian/ovn-docker.install
> >>  create mode 100644 debian/ovn-host.default
> >>  create mode 100644 debian/ovn-host.install
> >>  create mode 100644 debian/ovn-host.ovn-controller.service
> >>  create mode 100644 debian/ovn-host.postrm
> >>  create mode 100644 debian/ovn-host.service
> >>  create mode 100644 debian/ovn-ic-db.install
> >>  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> >>  create mode 100644 debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> >>  create mode 100644 debian/ovn-ic-db.service
> >>  create mode 100644 debian/ovn-ic.install
> >>  create mode 100644 debian/ovn-ic.service
> >>  create mode 100755 debian/rules
> >>  create mode 100644 debian/source/format
> >>  create mode 100644 debian/source/include-binaries
> >>  create mode 100755 debian/testlist.py
> >>  create mode 100644 debian/watch
> >>
> >> diff --git a/build-aux/initial-tab-whitelist b/build-aux/initial-tab-whitelist
> >> index b2f5a0791..71d4f007d 100644
> >> --- a/build-aux/initial-tab-whitelist
> >> +++ b/build-aux/initial-tab-whitelist
> >> @@ -6,6 +6,5 @@
> >>  ^ovs/
> >>  ^third-party/
> >>  ^xenserver/
> >> -^debian/rules.modules$
> >> -^debian/rules$
> >> +^debian/
> >>  ^\.gitmodules$
> >> diff --git a/debian/.gitignore b/debian/.gitignore
> >> new file mode 100644
> >> index 000000000..d2393b3fd
> >> --- /dev/null
> >> +++ b/debian/.gitignore
> >> @@ -0,0 +1,17 @@
> >> +*.debhelper
> >> +*.debhelper.log
> >> +*.substvars
> >> +/autoreconf.after
> >> +/autoreconf.before
> >> +/copyright
> >> +/files
> >> +/ovn-common
> >> +/ovn-controller-vtep
> >> +/ovn-host
> >> +/ovn-central
> >> +/ovn-docker
> >> +/debhelper-build-stamp
> >> +/ovn-doc/
> >> +/ovn-ic-db/
> >> +/ovn-ic/
> >> +/tmp
> >> diff --git a/debian/automake.mk b/debian/automake.mk
> >> index ce11fd040..d199c925d 100644
> >> --- a/debian/automake.mk
> >> +++ b/debian/automake.mk
> >> @@ -1,2 +1,85 @@
> >>  EXTRA_DIST += \
> >> -       debian/changelog
> >> +       debian/changelog \
> >> +       debian/control \
> >> +       debian/copyright.in \
> >> +       debian/flaky-tests-amd64.txt \
> >> +       debian/flaky-tests-arm64.txt \
> >> +       debian/flaky-tests-armel.txt \
> >> +       debian/flaky-tests-armhf.txt \
> >> +       debian/flaky-tests-i386.txt \
> >> +       debian/flaky-tests-mips64el.txt \
> >> +       debian/flaky-tests-mipsel.txt \
> >> +       debian/flaky-tests-ppc64el.txt \
> >> +       debian/flaky-tests-riscv64.txt \
> >> +       debian/flaky-tests-s390x.txt \
> >> +       debian/gbp.conf \
> >> +       debian/not-installed \
> >> +       debian/ovn-central.default \
> >> +       debian/ovn-central.install \
> >> +       debian/ovn-central.ovn-northd.service \
> >> +       debian/ovn-central.postrm \
> >> +       debian/ovn-central.service \
> >> +       debian/ovn-common.docs \
> >> +       debian/ovn-common.install \
> >> +       debian/ovn-common.logrotate \
> >> +       debian/ovn-common.postinst \
> >> +       debian/ovn-common.postrm \
> >> +       debian/ovn-controller-vtep.install \
> >> +       debian/ovn-controller-vtep.service \
> >> +       debian/ovn-doc.doc-base \
> >> +       debian/ovn-doc.install \
> >> +       debian/ovn-docker.install \
> >> +       debian/ovn-host.default \
> >> +       debian/ovn-host.install \
> >> +       debian/ovn-host.ovn-controller.service \
> >> +       debian/ovn-host.postrm \
> >> +       debian/ovn-host.service \
> >> +       debian/ovn-ic-db.install \
> >> +       debian/ovn-ic-db.service \
> >> +       debian/ovn-ic.install \
> >> +       debian/ovn-ic.service \
> >> +       debian/rules \
> >> +       debian/source/format \
> >> +       debian/source/include-binaries \
> >> +       debian/testlist.py \
> >> +       debian/watch
> >> +
> >> +check-debian-changelog-version:
> >> +       @DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`;                \
> >> +       if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \
> >> +       then                                                                 \
> >> +         :;                                                                 \
> >> +       else                                                                 \
> >> +         echo "Update debian/changelog to mention version $(VERSION)";      \
> >> +         exit 1;                                                            \
> >> +       fi
> >> +ALL_LOCAL += check-debian-changelog-version
> >> +DIST_HOOKS += check-debian-changelog-version
> >> +
> >> +update_deb_copyright = \
> >> +       $(AM_V_GEN) \
> >> +       { sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in;   \
> >> +         tail -n +28 $(srcdir)/AUTHORS.rst | sed '1,/^$$/d' |             \
> >> +               sed -n -e '/^$$/q' -e 's/^/  /p';                          \
> >> +         sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in;           \
> >> +       } > debian/copyright
> >> +
> >> +debian/copyright: AUTHORS.rst debian/copyright.in
> >> +       $(update_deb_copyright)
> >> +
> >> +CLEANFILES += debian/copyright
> >> +
> >> +debian: debian/copyright
> >> +.PHONY: debian
> >> +
> >> +debian-deb: debian
> >> +       @if test X"$(srcdir)" != X"$(top_builddir)"; then                   \
> >> +               echo "Debian packages should be built from $(abs_srcdir)/"; \
> >> +               exit 1;                                                     \
> >> +       fi
> >> +       $(MAKE) distclean
> >> +       $(update_deb_copyright)
> >> +       $(update_deb_control)
> >> +       $(AM_V_GEN) fakeroot debian/rules clean
> >> +       $(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \
> >> +               fakeroot debian/rules binary
> >> diff --git a/debian/control b/debian/control
> >> new file mode 100644
> >> index 000000000..a6f395842
> >> --- /dev/null
> >> +++ b/debian/control
> >> @@ -0,0 +1,176 @@
> >> +Source: ovn
> >> +Section: net
> >> +Priority: optional
> >> +Maintainer: OVN developers <dev@openvswitch.org>
> >> +Build-Depends:
> >> + autoconf,
> >> + automake,
> >> + bzip2,
> >> + debhelper-compat (= 10),
> >> + dh-python,
> >> + graphviz,
> >> + libcap-ng-dev,
> >> + libnuma-dev [amd64 i386 ppc64el arm64],
> >> + libpcap-dev [amd64 i386 ppc64el arm64],
> >> + libssl-dev,
> >> + libtool,
> >> + libudev-dev,
> >> + libunbound-dev,
> >> + openssl,
> >> + openstack-pkg-tools,
> >> + openvswitch-source (>= 2.17.2-3~),
> >> + pkg-config,
> >> + procps,
> >> + python3-all-dev,
> >> + python3-setuptools,
> >> + python3-sortedcontainers,
> >> + python3-sphinx,
> >> + tcpdump,
> >> +Standards-Version: 4.6.1
> >> +Homepage: https://www.ovn.org/
> >> +
> >> +Package: ovn-central
> >> +Architecture: linux-any
> >> +Pre-Depends: ${misc:Pre-Depends},
> >> +Depends:
> >> + lsb-base,
> >> + lsb-release,
> >> + openvswitch-common (>= 2.17.0~),
> >> + ovn-common (= ${binary:Version}),
> >> + ${misc:Depends},
> >> + ${shlibs:Depends},
> >> +Description: OVN central components
> >> + OVN, the Open Virtual Network, is a system to support virtual network
> >> + abstraction. OVN complements the existing capabilities of OVS to add native
> >> + support for virtual network abstractions, such as virtual L2 and L3 overlays
> >> + and security groups.
> >> + .
> >> + ovn-central provides the userspace daemons, utilities and
> >> + databases for OVN that is run at a central location.
> >> +
> >> +Package: ovn-common
> >> +Architecture: linux-any
> >> +Depends:
> >> + ${misc:Depends},
> >> + ${python3:Depends},
> >> + ${shlibs:Depends},
> >> +Breaks:
> >> + ovn-ic-db (<< 22.03~),
> >> +Replaces:
> >> + ovn-ic-db (<< 22.03~),
> >> +Description: OVN common components
> >> + OVN, the Open Virtual Network, is a system to support virtual network
> >> + abstraction. OVN complements the existing capabilities of OVS to add native
> >> + support for virtual network abstractions, such as virtual L2 and L3 overlays
> >> + and security groups.
> >> + .
> >> + ovn-common provides components required by other OVN packages.
> >> +
> >> +Package: ovn-controller-vtep
> >> +Architecture: linux-any
> >> +Pre-Depends: ${misc:Pre-Depends},
> >> +Depends:
> >> + lsb-base,
> >> + ovn-common (= ${binary:Version}),
> >> + ${misc:Depends},
> >> + ${shlibs:Depends},
> >> +Description: OVN vtep controller
> >> + ovn-controller-vtep is the local controller daemon in OVN, the Open Virtual
> >> + Network, for VTEP enabled physical switches. It connects up to the OVN
> >> + Southbound database over the OVSDB protocol, and down to the VTEP database
> >> + over the OVSDB protocol.
> >> + .
> >> + ovn-controller-vtep provides the ovn-controller-vtep binary for controlling
> >> + vtep gateways.
> >> +
> >> +Package: ovn-doc
> >> +Section: doc
> >> +Architecture: all
> >> +Depends:
> >> + ${misc:Depends},
> >> + ${sphinxdoc:Depends},
> >> +Description: OVN documentation
> >> + OVN, the Open Virtual Network, is a system to support virtual network
> >> + abstraction.  OVN complements the existing capabilities of OVS to add
> >> + native support for virtual network abstractions, such as virtual L2 and L3
> >> + overlays and security groups.
> >> + .
> >> + This package provides documentation for configuration and use
> >> + of OVN.
> >> +
> >> +Package: ovn-docker
> >> +Architecture: linux-any
> >> +Depends:
> >> + openvswitch-common (>= 2.17.0~),
> >> + ovn-common (= ${binary:Version}),
> >> + python3-openvswitch (>= 2.17.0~),
> >> + ${misc:Depends},
> >> + ${python3:Depends},
> >> + ${shlibs:Depends},
> >> +Description: OVN Docker drivers
> >> + OVN, the Open Virtual Network, is a system to support virtual network
> >> + abstraction.  OVN complements the existing capabilities of OVS to add
> >> + native support for virtual network abstractions, such as virtual L2 and L3
> >> + overlays and security groups.
> >> + .
> >> + ovn-docker provides the docker drivers for OVN.
> >> +
> >> +Package: ovn-host
> >> +Architecture: linux-any
> >> +Pre-Depends: ${misc:Pre-Depends},
> >> +Depends:
> >> + lsb-base,
> >> + lsb-release,
> >> + openvswitch-switch (>= 2.17.0~),
> >> + ovn-common (= ${binary:Version}),
> >> + ${misc:Depends},
> >> + ${shlibs:Depends},
> >> +Description: OVN host components
> >> + OVN, the Open Virtual Network, is a system to support virtual network
> >> + abstraction.  OVN complements the existing capabilities of OVS to add
> >> + native support for virtual network abstractions, such as virtual L2 and L3
> >> + overlays and security groups.
> >> + .
> >> + ovn-host provides the userspace components and utilities for
> >> + OVN that can be run on every host/hypervisor.
> >> +
> >> +Package: ovn-ic
> >> +Architecture: linux-any
> >> +Pre-Depends: ${misc:Pre-Depends},
> >> +Depends:
> >> + lsb-base,
> >> + lsb-release,
> >> + ovn-common (= ${binary:Version}),
> >> + ${misc:Depends},
> >> + ${shlibs:Depends},
> >> +Enhances:
> >> + ovn-central,
> >> +Suggests:
> >> + ovn-ic-db,
> >> +Description: Open Virtual Network interconnection controller
> >> + OVN IC, the Open Virtual Network interconnection controller, is a
> >> + centralized daemon which communicates with global interconnection
> >> + databases to configure and exchange data with local OVN databases for
> >> + interconnection with other OVN deployments.
> >> + .
> >> + This package provides the ovn-ic daemon which should be run alongside
> >> + ovn-central services in each OVN deployment zone.
> >> +
> >> +Package: ovn-ic-db
> >> +Architecture: linux-any
> >> +Pre-Depends: ${misc:Pre-Depends},
> >> +Depends:
> >> + lsb-base,
> >> + lsb-release,
> >> + openvswitch-common (>= 2.17.0~),
> >> + ovn-common (= ${binary:Version}),
> >> + ${misc:Depends},
> >> + ${shlibs:Depends},
> >> +Description: Open Virtual Network interconnection controller databases
> >> + OVN IC, the Open Virtual Network interconnection controller, is a
> >> + centralized daemon which communicates with global interconnection
> >> + databases to configure and exchange data with local OVN databases for
> >> + interconnection with other OVN deployments.
> >> + .
> >> + This package provides the global OVN IC southbound and northbound
> >> + OVSDB databases.
> >> diff --git a/debian/copyright.in b/debian/copyright.in
> >> new file mode 100644
> >> index 000000000..911704ae0
> >> --- /dev/null
> >> +++ b/debian/copyright.in
> >> @@ -0,0 +1,146 @@
> >> +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
> >> +Upstream-Name: Open Virtual Network (OVN)
> >> +Source: https://github.com/ovn-org/ovn
> >> +Files-Excluded: debian
> >> +Upstream-Authors:
> >> +%AUTHORS%
> >> +
> >> +Files: *
> >> +Copyright: 2007-2017 Nicira, Inc.
> >> +           2010 Jean Tourrilhes - HP-Labs.
> >> +           2008,2009,2010 Citrix Systems, Inc.
> >> +           2011 Gaetano Catalli
> >> +           2000-2003 Geoffrey Wossum <gwossum@acm.org>
> >> +           2000 The NetBSD Foundation, Inc.
> >> +           1995, 1996, 1997, and 1998 WIDE Project.
> >> +           1982, 1986, 1990, 1993 The Regents of the University of California.
> >> +           2008, 2012 Vincent Bernat <bernat@luffy.cx>
> >> +           2014 Michael Chapman
> >> +           2014 WindRiver, Inc.
> >> +           2014 Avaya, Inc.
> >> +           2001 Daniel Hartmeier
> >> +           2002 - 2008 Henning Brauer
> >> +           2012 Gleb Smirnoff <glebius@FreeBSD.org>
> >> +           2015-2019 Red Hat, Inc.
> >> +           2017 DtDream Technology Co., Ltd.
> >> +           2018 eBay Inc.
> >> +License: Apache-2.0
> >> +Comment:
> >> + This package contains code from other projects and authors not
> >> + mentioned elsewhere.
> >> + .
> >> + Open vSwitch
> >> + Copyright (c) 2007, 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
> >> + .
> >> + Open vSwitch BSD port
> >> + Copyright (c) 2011 Gaetano Catalli
> >> + .
> >> + Apache Portable Runtime
> >> + Copyright 2008 The Apache Software Foundation.
> >> + .
> >> + This product includes software developed by
> >> + The Apache Software Foundation (http://www.apache.org/).
> >> + .
> >> + Portions of this software were developed at the National Center
> >> + for Supercomputing Applications (NCSA) at the University of
> >> + Illinois at Urbana-Champaign.
> >> + .
> >> + lib/ovs.tmac includes troff macros written by Eric S. Raymond
> >> + and Werner Lemberg.
> >> + .
> >> + m4/include_next.m4 and m4/absolute-header.m4
> >> + Copyright (C) 2006-2013 Free Software Foundation, Inc.
> >> + .
> >> + Rapid Spanning Tree Protocol (RSTP) implementation
> >> + Copyright (c) 2011-2014 M3S, Srl - Italy
> >> + .
> >> + LLDP implementation
> >> + Copyright (c) 2008, 2012 Vincent Bernat <bernat@luffy.cx>
> >> + .
> >> + LLDP includes code used from the Net::CDP project based on the ISC license
> >> + Copyright (c) 2014 Michael Chapman
> >> + .
> >> + LLDP includes code used from the ladvd project based on the ISC license
> >> + Copyright (c) 2008, 2009, 2010 Sten Spans <sten@blinkenlights.nl>
> >> + .
> >> + Auto Attach implementation
> >> + Copyright (c) 2014, 2015 WindRiver, Inc
> >> + Copyright (c) 2014, 2015 Avaya, Inc
> >> + .
> >> + TCP connection tracker from FreeBSD pf, BSD licensed
> >> + Copyright (c) 2001 Daniel Hartmeier
> >> + Copyright (c) 2002 - 2008 Henning Brauer
> >> + Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>
>
> Not a problem of this patch, but I think, half of above
> copyrights was copy-pasted from OVS and irrelevant for OVN.

Indeed, I'll have a look and see if I can reduce it down to what is
actually remaining in the OVN repository.

> >> +
> >> +Files: build-aux/cccl
> >> +Copyright: 2000-2003 Geoffrey Wossum <gwossum@acm.org>
> >> +License: GPL-2
> >> +
> >> +Files: utilities/bugtool/ovn-bugtool-*
> >> +       utilities/bugtool/plugins/network-status/ovn.xml
> >> +Copyright: 2016 Nicira, Inc.
> >> +License: LGPL-2.1
> >> +
> >> +Files: m4/absolute-header.m4
> >> +       m4/include_next.m4
> >> +Copyright: Derek Price
> >> +           Paul Eggert
> >> +           2006-2013 Free Software Foundation, Inc.
> >> +License: file-is-free-software
> >> + This file is free software; the Free Software Foundation
> >> + gives unlimited permission to copy and/or distribute it,
> >> + with or without modifications, as long as this notice is preserved.
> >> +
> >> +Files: ovn-vif/*
> >> +Copyright: 2021 Canonical
> >> +License: Apache-2.0
> >> +
> >> +License: GPL-2
> >> + This program is free software; you can redistribute it and/or modify it under
> >> + the terms of the GNU General Public License as published by the Free Software
> >> + Foundation; either version 2 of the License, or (at your option) any later
> >> + version.
> >> + .
> >> + This program is distributed in the hope that it will be useful, but WITHOUT
> >> + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
> >> + FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
> >> + .
> >> + You should have received a copy of the GNU General Public License along with
> >> + this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
> >> + St, Fifth Floor, Boston, MA 02110-1301 USA
> >> + .
> >> + On Debian systems, the complete text of the GNU General Public License v2
> >> + (GPL) can be found in /usr/share/common-licenses/GPL-2.
> >> +
> >> +License: LGPL-2.1
> >> + This library is free software; you can redistribute it and/or modify it under
> >> + the terms of the GNU Lesser General Public License as published by the Free
> >> + Software Foundation; either version 2.1 of the License.
> >> + .
> >> + This library is distributed in the hope that it will be useful, but WITHOUT
> >> + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
> >> + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
> >> + details.
> >> + .
> >> + You should have received a copy of the GNU Lesser General Public License along
> >> + with this library; if not, write to the Free Software Foundation, Inc., 51
> >> + Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> >> + .
> >> + On Debian systems, the complete text of the GNU Lesser General Public License
> >> + (LGPL) may be found in /usr/share/common-licenses/LGPL-2.
> >> +
> >> +License: Apache-2.0
> >> + Licensed under the Apache License, Version 2.0 (the "License");
> >> + you may not use this file except in compliance with the License.
> >> + You may obtain a copy of the License at
> >> + .
> >> +    http://www.apache.org/licenses/LICENSE-2.0
> >> + .
> >> + Unless required by applicable law or agreed to in writing, software
> >> + distributed under the License is distributed on an "AS IS" BASIS,
> >> + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >> + See the License for the specific language governing permissions and
> >> + limitations under the License.
> >> + .
> >> + On Debian-based systems the full text of the Apache version 2.0 license
> >> + can be found in `/usr/share/common-licenses/Apache-2.0'.
> >> diff --git a/debian/flaky-tests-amd64.txt b/debian/flaky-tests-amd64.txt
> >> new file mode 100644
> >> index 000000000..cfe5d8c66
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-amd64.txt
> >> @@ -0,0 +1,6 @@
> >> +send gratuitous arp on localnet
> >> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> >> +ACLs on Port Groups
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +northd ssl file change
> >> diff --git a/debian/flaky-tests-arm64.txt b/debian/flaky-tests-arm64.txt
> >> new file mode 100644
> >> index 000000000..996d0537e
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-arm64.txt
> >> @@ -0,0 +1,5 @@
> >> +ovn-controller incremental processing
> >> +nb_cfg timestamp
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +ipsec -- basic configuration
> >> diff --git a/debian/flaky-tests-armel.txt b/debian/flaky-tests-armel.txt
> >> new file mode 100644
> >> index 000000000..6ce03bb10
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-armel.txt
> >> @@ -0,0 +1,7 @@
> >> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> >> +1 LR with distributed router gateway port
> >> +ACL conjunction
> >> +IP packet buffering
> >> +test transport zones
> >> +lflow cache for conjunctions
> >> +nb_cfg timestamp
> >> diff --git a/debian/flaky-tests-armhf.txt b/debian/flaky-tests-armhf.txt
> >> new file mode 100644
> >> index 000000000..43654f3ae
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-armhf.txt
> >> @@ -0,0 +1,9 @@
> >> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> >> +ovn-controller incremental processing
> >> +ACL conjunction
> >> +neighbor update on same HV
> >> +nb_cfg timestamp
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +ovn-ic -- gateway sync
> >> +ipsec -- basic configuration
> >> diff --git a/debian/flaky-tests-i386.txt b/debian/flaky-tests-i386.txt
> >> new file mode 100644
> >> index 000000000..b82300de9
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-i386.txt
> >> @@ -0,0 +1,8 @@
> >> +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
> >> +nb_cfg timestamp
> >> +ARP replies for SNAT external ips
> >> +conflict ACLs with address set
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +ovn-ic -- gateway sync
> >> +ipsec -- basic configuration
> >> diff --git a/debian/flaky-tests-mips64el.txt b/debian/flaky-tests-mips64el.txt
> >> new file mode 100644
> >> index 000000000..e67e2c4ca
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-mips64el.txt
> >> @@ -0,0 +1,5 @@
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +ovn-ic -- gateway sync
> >> +ipsec -- basic configuration
> >> +nb_cfg timestamp
> >> diff --git a/debian/flaky-tests-mipsel.txt b/debian/flaky-tests-mipsel.txt
> >> new file mode 100644
> >> index 000000000..00d383572
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-mipsel.txt
> >> @@ -0,0 +1,21 @@
> >> +vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS
> >> +policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
> >> +policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
> >> +send gratuitous arp for nat ips in localnet
> >> +send gratuitous arp for NAT rules on distributed router
> >> +vlan traffic for external network with distributed router gateway port
> >> +send gratuitous ARP for NAT rules on HA distributed router
> >> +ACL conjunction
> >> +router - check packet length - icmp defrag
> >> +router - check packet length - icmp defrag
> >> +IP packet buffering
> >> +test transport zones
> >> +Load balancer health checks
> >> +interconnection
> >> +nb_cfg timestamp
> >> +conflict ACLs with address set
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +northd ssl file change
> >> +ovn-ic -- gateway sync
> >> +ipsec -- basic configuration
> >> diff --git a/debian/flaky-tests-ppc64el.txt b/debian/flaky-tests-ppc64el.txt
> >> new file mode 100644
> >> index 000000000..6e089b6cb
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-ppc64el.txt
> >> @@ -0,0 +1,6 @@
> >> +options:requested-chassis for logical port
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +northd ssl file change
> >> +ovn-ic -- gateway sync
> >> +ipsec -- basic configuration
> >> diff --git a/debian/flaky-tests-riscv64.txt b/debian/flaky-tests-riscv64.txt
> >> new file mode 100644
> >> index 000000000..50570ab80
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-riscv64.txt
> >> @@ -0,0 +1,6 @@
> >> +send gratuitous arp on localnet
> >> +1 LR with distributed router gateway port
> >> +router - check packet length - icmp defrag
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +ipsec -- basic configuration
> >> diff --git a/debian/flaky-tests-s390x.txt b/debian/flaky-tests-s390x.txt
> >> new file mode 100644
> >> index 000000000..a642063d9
> >> --- /dev/null
> >> +++ b/debian/flaky-tests-s390x.txt
> >> @@ -0,0 +1,5 @@
> >> +options:requested-chassis for logical port
> >> +ACLs on Port Groups
> >> +multi-vtep SB Chassis encap updates
> >> +ACL with Port Group conjunction flow efficiency
> >> +ipsec -- basic configuration
> >> diff --git a/debian/gbp.conf b/debian/gbp.conf
> >> new file mode 100644
> >> index 000000000..438b3fa8d
> >> --- /dev/null
> >> +++ b/debian/gbp.conf
> >> @@ -0,0 +1,13 @@
> >> +[DEFAULT]
> >> +debian-branch = main
> >> +upstream-branch = upstream
> >> +pristine-tar = True
> >> +components = ['ovn-vif']
> >> +
> >> +[import-orig]
> >> +upstream-vcs-tag = v%(version)s
> >> +
> >> +[dch]
> >> +multimaint-merge = True
> >> +customizations=/usr/share/doc/git-buildpackage/examples/wrap_cl.py
> >> +git-log=--first-parent
> >> diff --git a/debian/not-installed b/debian/not-installed
> >> new file mode 100644
> >> index 000000000..e213b139d
> >> --- /dev/null
> >> +++ b/debian/not-installed
> >> @@ -0,0 +1,5 @@
> >> +# The OVN library and headers are currently not considered ABI/API stable.
> >> +# If the need arises to build sibling projects we should probably provide an
> >> +# ovn-source package.
> >> +usr/include/*
> >> +usr/lib/*
> >> diff --git a/debian/ovn-central.default b/debian/ovn-central.default
> >> new file mode 100644
> >> index 000000000..7cea13e50
> >> --- /dev/null
> >> +++ b/debian/ovn-central.default
> >> @@ -0,0 +1,5 @@
> >> +# This is a POSIX shell fragment                -*- sh -*-
> >> +
> >> +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
> >> +# a suitable place to specify --ovn-northd-wrapper=valgrind.
> >> +# OVN_CTL_OPTS=
> >> diff --git a/debian/ovn-central.install b/debian/ovn-central.install
> >> new file mode 100644
> >> index 000000000..095ca7cfa
> >> --- /dev/null
> >> +++ b/debian/ovn-central.install
> >> @@ -0,0 +1,3 @@
> >> +usr/bin/ovn-northd
> >> +usr/share/ovn/ovn-nb.ovsschema
> >> +usr/share/ovn/ovn-sb.ovsschema
> >> diff --git a/debian/ovn-central.ovn-northd.service b/debian/ovn-central.ovn-northd.service
> >> new file mode 100644
> >> index 000000000..09c600016
> >> --- /dev/null
> >> +++ b/debian/ovn-central.ovn-northd.service
> >> @@ -0,0 +1,15 @@
> >> +[Unit]
> >> +Description=Open Virtual Network central control daemon
> >> +After=network.target ovn-nb-ovsdb.service ovn-sb-ovsdb.service
> >> +PartOf=ovn-central.service
> >> +DefaultDependencies=no
> >> +
> >> +[Service]
> >> +Type=forking
> >> +EnvironmentFile=-/etc/default/ovn-central
> >> +PIDFile=%t/ovn/ovn-northd.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_northd --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_northd --no-monitor
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> diff --git a/debian/ovn-central.ovn-ovsdb-server-nb.service b/debian/ovn-central.ovn-ovsdb-server-nb.service
> >> new file mode 100644
> >> index 000000000..81f6c75a3
> >> --- /dev/null
> >> +++ b/debian/ovn-central.ovn-ovsdb-server-nb.service
> >> @@ -0,0 +1,18 @@
> >> +[Unit]
> >> +Description=Open vSwitch database server for OVN Northbound database
> >> +After=network.target
> >> +PartOf=ovn-central.service
> >> +DefaultDependencies=no
> >> +
> >> +[Service]
> >> +Type=simple
> >> +EnvironmentFile=-/etc/default/ovn-central
> >> +PIDFile=%t/ovn/ovnnb_db.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_nb_ovsdb
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> +
> >> +[Install]
> >> +Alias=ovn-nb-ovsdb.service
> >> diff --git a/debian/ovn-central.ovn-ovsdb-server-sb.service b/debian/ovn-central.ovn-ovsdb-server-sb.service
> >> new file mode 100644
> >> index 000000000..3aa840d2f
> >> --- /dev/null
> >> +++ b/debian/ovn-central.ovn-ovsdb-server-sb.service
> >> @@ -0,0 +1,18 @@
> >> +[Unit]
> >> +Description=Open vSwitch database server for OVN Southbound database
> >> +After=network.target
> >> +PartOf=ovn-central.service
> >> +DefaultDependencies=no
> >> +
> >> +[Service]
> >> +Type=simple
> >> +EnvironmentFile=-/etc/default/ovn-central
> >> +PIDFile=%t/run/ovn/ovnsb_db.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_sb_ovsdb
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> +
> >> +[Install]
> >> +Alias=ovn-sb-ovsdb.service
> >> diff --git a/debian/ovn-central.postrm b/debian/ovn-central.postrm
> >> new file mode 100644
> >> index 000000000..3b3483fc3
> >> --- /dev/null
> >> +++ b/debian/ovn-central.postrm
> >> @@ -0,0 +1,47 @@
> >> +#!/bin/sh
> >> +# postrm script for ovn-central
> >> +#
> >> +# see: dh_installdeb(1)
> >> +
> >> +set -e
> >> +
> >> +# summary of how this script can be called:
> >> +#        * <postrm> `remove'
> >> +#        * <postrm> `purge'
> >> +#        * <old-postrm> `upgrade' <new-version>
> >> +#        * <new-postrm> `failed-upgrade' <old-version>
> >> +#        * <new-postrm> `abort-install'
> >> +#        * <new-postrm> `abort-install' <old-version>
> >> +#        * <new-postrm> `abort-upgrade' <old-version>
> >> +#        * <disappearer's-postrm> `disappear' <overwriter>
> >> +#          <overwriter-version>
> >> +# for details, see http://www.debian.org/doc/debian-policy/ or
> >> +# the debian-policy package
> >> +
> >> +
> >> +case "$1" in
> >> +    purge)
> >> +        rm -f /etc/openvswitch/ovnnb.db*
> >> +        rm -f /etc/openvswitch/.ovnnb.db.~lock~
> >> +        rm -f /etc/openvswitch/ovnsb.db*
> >> +        rm -f /etc/openvswitch/.ovnsb.db.~lock~
> >> +        rm -f /var/log/openvswitch/ovn-northd.log* || true
> >> +        ;;
> >> +
> >> +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> >> +        ;;
> >> +
> >> +    *)
> >> +        echo "postrm called with unknown argument \`$1'" >&2
> >> +        exit 1
> >> +        ;;
> >> +esac
> >> +
> >> +# dh_installdeb will replace this with shell code automatically
> >> +# generated by other debhelper scripts.
> >> +
> >> +#DEBHELPER#
> >> +
> >> +exit 0
> >> +
> >> +
> >> diff --git a/debian/ovn-central.service b/debian/ovn-central.service
> >> new file mode 100644
> >> index 000000000..aead7eae6
> >> --- /dev/null
> >> +++ b/debian/ovn-central.service
> >> @@ -0,0 +1,16 @@
> >> +[Unit]
> >> +Description=Open Virtual Network central components
> >> +After=network.target
> >> +Requires=network.target
> >> +Wants=ovn-northd.service
> >> +Wants=ovn-ovsdb-server-sb.service
> >> +Wants=ovn-ovsdb-server-nb.service
> >> +
> >> +[Service]
> >> +Type=oneshot
> >> +ExecStart=/bin/true
> >> +ExecStop=/bin/true
> >> +RemainAfterExit=yes
> >> +
> >> +[Install]
> >> +WantedBy=multi-user.target
> >> diff --git a/debian/ovn-common.docs b/debian/ovn-common.docs
> >> new file mode 100644
> >> index 000000000..6d5ee1d05
> >> --- /dev/null
> >> +++ b/debian/ovn-common.docs
> >> @@ -0,0 +1 @@
> >> +NOTICE
> >> diff --git a/debian/ovn-common.install b/debian/ovn-common.install
> >> new file mode 100644
> >> index 000000000..52e9e0050
> >> --- /dev/null
> >> +++ b/debian/ovn-common.install
> >> @@ -0,0 +1,32 @@
> >> +usr/bin/ovn-appctl
> >> +usr/bin/ovn_detrace.py
> >> +usr/bin/ovn-detrace
> >> +usr/bin/ovn-nbctl
> >> +usr/bin/ovn-sbctl
> >> +/usr/bin/ovn-ic-nbctl
> >> +/usr/bin/ovn-ic-sbctl
> >> +usr/bin/ovn-trace
> >> +usr/share/ovn/bugtool-plugins/network-status/ovn.xml
> >> +usr/share/ovn/scripts/ovn-ctl
> >> +usr/share/ovn/scripts/ovn-lib
> >> +usr/share/ovn/scripts/ovndb-servers.ocf
> >> +usr/share/ovn/scripts/ovn-bugtool-nbctl-show
> >> +usr/share/ovn/scripts/ovn-bugtool-sbctl-lflow-list
> >> +usr/share/ovn/scripts/ovn-bugtool-sbctl-show
> >> +usr/share/man/man1/ovn-detrace.1
> >> +usr/share/man/man5/ovn-ic-nb.5
> >> +usr/share/man/man5/ovn-ic-sb.5
> >> +usr/share/man/man5/ovn-nb.5
> >> +usr/share/man/man5/ovn-sb.5
> >> +usr/share/man/man7/ovn-architecture.7
> >> +usr/share/man/man8/ovn-appctl.8
> >> +usr/share/man/man8/ovn-controller-vtep.8
> >> +usr/share/man/man8/ovn-controller.8
> >> +usr/share/man/man8/ovn-ctl.8
> >> +usr/share/man/man8/ovn-ic-nbctl.8
> >> +usr/share/man/man8/ovn-ic-sbctl.8
> >> +usr/share/man/man8/ovn-ic.8
> >> +usr/share/man/man8/ovn-nbctl.8
> >> +usr/share/man/man8/ovn-northd.8
> >> +usr/share/man/man8/ovn-sbctl.8
> >> +usr/share/man/man8/ovn-trace.8
> >> diff --git a/debian/ovn-common.logrotate b/debian/ovn-common.logrotate
> >> new file mode 100644
> >> index 000000000..a351ec303
> >> --- /dev/null
> >> +++ b/debian/ovn-common.logrotate
> >> @@ -0,0 +1,22 @@
> >> +# Copyright (C) 2019 Red Hat, Inc.
> >> +#
> >> +# Copying and distribution of this file, with or without modification,
> >> +# are permitted in any medium without royalty provided the copyright
> >> +# notice and this notice are preserved.  This file is offered as-is,
> >> +# without warranty of any kind.
> >> +
> >> +/var/log/ovn/*.log {
> >> +    su root root
> >> +    daily
> >> +    compress
> >> +    sharedscripts
> >> +    missingok
> >> +    postrotate
> >> +        # Tell OVN daemons to reopen their log files
> >> +        if [ -d /var/run/ovn ]; then
> >> +            for ctl in /var/run/ovn/*.ctl; do
> >> +                ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
> >> +            done
> >> +        fi
> >> +    endscript
> >> +}
> >> diff --git a/debian/ovn-common.postinst b/debian/ovn-common.postinst
> >> new file mode 100644
> >> index 000000000..588044fbc
> >> --- /dev/null
> >> +++ b/debian/ovn-common.postinst
> >> @@ -0,0 +1,24 @@
> >> +#!/bin/sh
> >> +# postinst script for ovn-common
> >> +#
> >> +# see: dh_installdeb(1)
> >> +
> >> +set -e
> >> +
> >> +case "$1" in
> >> +    configure)
> >> +        mkdir -p /usr/lib/ocf/resource.d/ovn
> >> +        ln -sf /usr/share/openvswitch/scripts/ovndb-servers.ocf /usr/lib/ocf/resource.d/ovn/ovndb-servers
> >> +        ;;
> >> +    abort-upgrade|abort-remove|abort-deconfigure)
> >> +        ;;
> >> +
> >> +    *)
> >> +        echo "postinst called with unknown argument \`$1'" >&2
> >> +        exit 1
> >> +        ;;
> >> +esac
> >> +
> >> +#DEBHELPER#
> >> +
> >> +exit 0
> >> diff --git a/debian/ovn-common.postrm b/debian/ovn-common.postrm
> >> new file mode 100644
> >> index 000000000..9face726b
> >> --- /dev/null
> >> +++ b/debian/ovn-common.postrm
> >> @@ -0,0 +1,23 @@
> >> +#!/bin/sh
> >> +# postrm script for openvswitch-testcontroller
> >> +#
> >> +# see: dh_installdeb(1)
> >> +
> >> +set -e
> >> +
> >> +case "$1" in
> >> +    purge|remove)
> >> +        rm -rf /usr/lib/ocf/resource.d/ovn
> >> +        ;;
> >> +    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> >> +        ;;
> >> +
> >> +    *)
> >> +        echo "postrm called with unknown argument \`$1'" >&2
> >> +        exit 1
> >> +        ;;
> >> +esac
> >> +
> >> +#DEBHELPER#
> >> +
> >> +exit 0
> >> diff --git a/debian/ovn-controller-vtep.install b/debian/ovn-controller-vtep.install
> >> new file mode 100644
> >> index 000000000..1d208f37e
> >> --- /dev/null
> >> +++ b/debian/ovn-controller-vtep.install
> >> @@ -0,0 +1 @@
> >> +usr/bin/ovn-controller-vtep
> >> diff --git a/debian/ovn-controller-vtep.service b/debian/ovn-controller-vtep.service
> >> new file mode 100644
> >> index 000000000..d51e75277
> >> --- /dev/null
> >> +++ b/debian/ovn-controller-vtep.service
> >> @@ -0,0 +1,16 @@
> >> +[Unit]
> >> +Description=Open Virtual Network VTEP gateway controller daemon
> >> +After=openvswitch-switch.service
> >> +Requires=openvswitch-switch.service
> >> +
> >> +[Service]
> >> +Type=forking
> >> +PIDFile=%t/ovn/ovn-controller-vtep.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller_vtep --no-monitor $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller_vtep --no-monitor
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> +
> >> +[Install]
> >> +WantedBy=multi-user.target
> >> diff --git a/debian/ovn-doc.doc-base b/debian/ovn-doc.doc-base
> >> new file mode 100644
> >> index 000000000..c7192ebdb
> >> --- /dev/null
> >> +++ b/debian/ovn-doc.doc-base
> >> @@ -0,0 +1,9 @@
> >> +Document: ovn-doc
> >> +Title: Open Virtual Network Documentation
> >> +Author: N/A
> >> +Abstract: Sphinx documentation for Open Virtual Network
> >> +Section: Network/Communication
> >> +
> >> +Format: HTML
> >> +Index: /usr/share/doc/ovn-doc/html/index.html
> >> +Files: /usr/share/doc/ovn-doc/html/*
> >> diff --git a/debian/ovn-doc.install b/debian/ovn-doc.install
> >> new file mode 100644
> >> index 000000000..4cfd153cf
> >> --- /dev/null
> >> +++ b/debian/ovn-doc.install
> >> @@ -0,0 +1 @@
> >> +Documentation/_build/html/* /usr/share/doc/ovn-doc/html/
> >> diff --git a/debian/ovn-docker.install b/debian/ovn-docker.install
> >> new file mode 100644
> >> index 000000000..583306732
> >> --- /dev/null
> >> +++ b/debian/ovn-docker.install
> >> @@ -0,0 +1,2 @@
> >> +usr/bin/ovn-docker-overlay-driver
> >> +usr/bin/ovn-docker-underlay-driver
> >> diff --git a/debian/ovn-host.default b/debian/ovn-host.default
> >> new file mode 100644
> >> index 000000000..7fd54efda
> >> --- /dev/null
> >> +++ b/debian/ovn-host.default
> >> @@ -0,0 +1,5 @@
> >> +# This is a POSIX shell fragment                -*- sh -*-
> >> +
> >> +# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
> >> +# a suitable place to specify --ovn-controller-wrapper=valgrind.
> >> +# OVN_CTL_OPTS=
> >> diff --git a/debian/ovn-host.install b/debian/ovn-host.install
> >> new file mode 100644
> >> index 000000000..d2de82fd9
> >> --- /dev/null
> >> +++ b/debian/ovn-host.install
> >> @@ -0,0 +1 @@
> >> +usr/bin/ovn-controller
> >> diff --git a/debian/ovn-host.ovn-controller.service b/debian/ovn-host.ovn-controller.service
> >> new file mode 100644
> >> index 000000000..a41e77d75
> >> --- /dev/null
> >> +++ b/debian/ovn-host.ovn-controller.service
> >> @@ -0,0 +1,15 @@
> >> +[Unit]
> >> +Description=Open Virtual Network host control daemon
> >> +After=network.target openvswitch-switch.service
> >> +PartOf=ovn-host.service
> >> +DefaultDependencies=no
> >> +
> >> +[Service]
> >> +Type=forking
> >> +EnvironmentFile=-/etc/default/ovn-host
> >> +PIDFile=%t/ovn/ovn-controller.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller --no-monitor
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> diff --git a/debian/ovn-host.postrm b/debian/ovn-host.postrm
> >> new file mode 100644
> >> index 000000000..9d17ef966
> >> --- /dev/null
> >> +++ b/debian/ovn-host.postrm
> >> @@ -0,0 +1,43 @@
> >> +#!/bin/sh
> >> +# postrm script for ovn-host
> >> +#
> >> +# see: dh_installdeb(1)
> >> +
> >> +set -e
> >> +
> >> +# summary of how this script can be called:
> >> +#        * <postrm> `remove'
> >> +#        * <postrm> `purge'
> >> +#        * <old-postrm> `upgrade' <new-version>
> >> +#        * <new-postrm> `failed-upgrade' <old-version>
> >> +#        * <new-postrm> `abort-install'
> >> +#        * <new-postrm> `abort-install' <old-version>
> >> +#        * <new-postrm> `abort-upgrade' <old-version>
> >> +#        * <disappearer's-postrm> `disappear' <overwriter>
> >> +#          <overwriter-version>
> >> +# for details, see http://www.debian.org/doc/debian-policy/ or
> >> +# the debian-policy package
> >> +
> >> +
> >> +case "$1" in
> >> +    purge)
> >> +        rm -f /var/log/openvswitch/ovn-controller.log* || true
> >> +        ;;
> >> +
> >> +    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
> >> +        ;;
> >> +
> >> +    *)
> >> +        echo "postrm called with unknown argument \`$1'" >&2
> >> +        exit 1
> >> +        ;;
> >> +esac
> >> +
> >> +# dh_installdeb will replace this with shell code automatically
> >> +# generated by other debhelper scripts.
> >> +
> >> +#DEBHELPER#
> >> +
> >> +exit 0
> >> +
> >> +
> >> diff --git a/debian/ovn-host.service b/debian/ovn-host.service
> >> new file mode 100644
> >> index 000000000..b524888fd
> >> --- /dev/null
> >> +++ b/debian/ovn-host.service
> >> @@ -0,0 +1,14 @@
> >> +[Unit]
> >> +Description=Open Virtual Network host components
> >> +After=network.target
> >> +Requires=network.target
> >> +Wants=ovn-controller.service
> >> +
> >> +[Service]
> >> +Type=oneshot
> >> +ExecStart=/bin/true
> >> +ExecStop=/bin/true
> >> +RemainAfterExit=yes
> >> +
> >> +[Install]
> >> +WantedBy=multi-user.target
> >> diff --git a/debian/ovn-ic-db.install b/debian/ovn-ic-db.install
> >> new file mode 100644
> >> index 000000000..a4d50002e
> >> --- /dev/null
> >> +++ b/debian/ovn-ic-db.install
> >> @@ -0,0 +1,2 @@
> >> +/usr/share/ovn/ovn-ic-nb.ovsschema
> >> +/usr/share/ovn/ovn-ic-sb.ovsschema
> >> diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> >> new file mode 100644
> >> index 000000000..193024daf
> >> --- /dev/null
> >> +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
> >> @@ -0,0 +1,15 @@
> >> +[Unit]
> >> +Description=Open vSwitch database server for OVN IC Northbound database
> >> +After=network.target
> >> +PartOf=ovn-ic-db.service
> >> +DefaultDependencies=no
> >> +
> >> +[Service]
> >> +Type=simple
> >> +EnvironmentFile=-/etc/default/ovn-ic
> >> +PIDFile=%t/ovn/ovn_ic_nb_db.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_nb_ovsdb $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_nb_ovsdb
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> >> new file mode 100644
> >> index 000000000..714748325
> >> --- /dev/null
> >> +++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
> >> @@ -0,0 +1,15 @@
> >> +[Unit]
> >> +Description=Open vSwitch database server for OVN IC Southbound database
> >> +After=network.target
> >> +PartOf=ovn-ic-db.service
> >> +DefaultDependencies=no
> >> +
> >> +[Service]
> >> +Type=simple
> >> +EnvironmentFile=-/etc/default/ovn-ic
> >> +PIDFile=%t/ovn/ovn_ic_sb_db.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_sb_ovsdb $OVN_CTL_OPTS
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_sb_ovsdb
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> diff --git a/debian/ovn-ic-db.service b/debian/ovn-ic-db.service
> >> new file mode 100644
> >> index 000000000..b116bc79d
> >> --- /dev/null
> >> +++ b/debian/ovn-ic-db.service
> >> @@ -0,0 +1,15 @@
> >> +[Unit]
> >> +Description=Open Virtual Network interconnection databases
> >> +After=network.target
> >> +Requires=network.target
> >> +Wants=ovn-ovsdb-server-ic-sb.service
> >> +Wants=ovn-ovsdb-server-ic-nb.service
> >> +
> >> +[Service]
> >> +Type=oneshot
> >> +ExecStart=/bin/true
> >> +ExecStop=/bin/true
> >> +RemainAfterExit=yes
> >> +
> >> +[Install]
> >> +WantedBy=multi-user.target
> >> diff --git a/debian/ovn-ic.install b/debian/ovn-ic.install
> >> new file mode 100644
> >> index 000000000..b15508259
> >> --- /dev/null
> >> +++ b/debian/ovn-ic.install
> >> @@ -0,0 +1 @@
> >> +/usr/bin/ovn-ic
> >> diff --git a/debian/ovn-ic.service b/debian/ovn-ic.service
> >> new file mode 100644
> >> index 000000000..07974285f
> >> --- /dev/null
> >> +++ b/debian/ovn-ic.service
> >> @@ -0,0 +1,16 @@
> >> +[Unit]
> >> +Description=Open Virtual Network interconnection controller
> >> +After=network.target
> >> +Requires=network.target
> >> +
> >> +[Service]
> >> +Type=forking
> >> +PIDFile=%t/ovn/ovn-ic.pid
> >> +ExecStart=/usr/share/ovn/scripts/ovn-ctl start_ic --no-monitor
> >> +ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic
> >> +Restart=on-failure
> >> +LimitNOFILE=65535
> >> +TimeoutStopSec=15
> >> +
> >> +[Install]
> >> +WantedBy=multi-user.target
> >> diff --git a/debian/rules b/debian/rules
> >> new file mode 100755
> >> index 000000000..4596afb49
> >> --- /dev/null
> >> +++ b/debian/rules
> >> @@ -0,0 +1,104 @@
> >> +#!/usr/bin/make -f
> >> +# -*- makefile -*-
> >> +#export DH_VERBOSE=1
> >> +export DEB_BUILD_MAINT_OPTIONS = hardening=+all
> >> +
> >> +%:
> >> +       dh $@ --with autoreconf,python3,sphinxdoc
> >> +
> >> +ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
> >> +PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
> >> +else
> >> +PARALLEL =
> >> +endif
> >> +
> >> +override_dh_auto_configure:
> >> +       # Configure OVS before OVN
> >> +       test -d $(CURDIR)/ovs || mkdir ovs
> >> +       cd ovs && tar -xzf /usr/src/openvswitch/openvswitch.tar.gz --strip-components=1
>
> This looks hard to maintain.  The source archive AFAICT
> is coming from the openvswitch-source package installed
> from ubuntu reporitories, but there is no guarantee that
> the version of OVS needed for upstream OVN is available
> in ubuntu repos.  It might be outdated because ubuntu
> is using some stable version of OVN, but not OVN master.
> And also any patch that tries to advance the OVS submodule
> version will likely fail the CI, because there is no way
> to change openvswitch-source package at the same time.
>
> I think, we need to build with included submodule here.
> That is what OVN users will expect if they are changing
> some code in the OVS submodule and re-building the OVN
> package locally, I guess.
>
> We talked before about OVN providing submodule as part of
> a source archive for releases.  That should remove the
> dependency on openvswitch-source package here and should
> work for both upstream and downstream builds in ubuntu.

I have to admit that I put forward this in order to have a green
result on the patch set prior to the soft freeze, and I do agree that
this probably does not work moving forward.

Switching to using a OVN source artifact with the OVS submodule
embeded would be ideal, to keep the diff in the package source minimal
I would like to wait with that until we can actually publish those on
OVN releases though, if that's ok.

One alternative I thought about was if we in the OVN linux-deb gate
job also built the OVS package, that would give it a fresh source from
the point in time the developer intended and could work as a stop-gap.

> >> +       cd ovs && ./configure --enable-ssl --localstatedir=/var --sysconfdir=/etc --prefix=/usr && make $(PARALLEL)
> >> +       # Configure OVN to allow building OVN VIF
> >> +       ./boot.sh && ./configure \
> >> +               --prefix=/usr \
> >> +               --localstatedir=/var \
> >> +               --sysconfdir=/etc \
> >> +               --with-dbdir=/var/lib/ovn \
> >> +               --with-ovs-source=$(CURDIR)/ovs \
> >> +               --enable-ssl
> >> +       # Configure and build OVN VIF
> >> +       cd ovn-vif && \
>
> This should be noted somewhere that ovn-vif is a required
> dependency.  Or did I miss that part of the documentation?
>
> It might be better to make it optional somehow, so upstream
> users, who don't need it, could build OVN from just OVN
> source tree.

Yes, I'll make this a build-time configurable thing, just like we did
with the dpdk bits for the OVS package. For OVN it would be simpler
though because we can pass environment variables into debian/rules and
do not need to do compose build artifacts.

> >> +               ./boot.sh && \
> >> +               ./configure \
> >> +                       --with-ovs-source=$(CURDIR)/ovs \
> >> +                       --with-ovn-source=$(CURDIR) \
> >> +                       --enable-plug-representor && \
> >> +               make $(PARALLEL)
> >> +       # Use dh_auto_configure to build OVN
> >> +       dh_auto_configure -- \
> >> +               --prefix=/usr \
> >> +               --localstatedir=/var \
> >> +               --sysconfdir=/etc \
> >> +               --with-dbdir=/var/lib/ovn \
> >> +               --with-ovs-source=$(CURDIR)/ovs \
> >> +               --enable-ssl \
> >> +               --with-vif-plug-provider=$(CURDIR)/ovn-vif
> >> +       $(MAKE) debian/copyright
> >> +
> >> +TEST_LIST = $(shell \
> >> +                $(CURDIR)/debian/testlist.py \
> >> +                $(CURDIR)/debian/flaky-tests-$(DEB_HOST_ARCH).txt \
> >> +                $(CURDIR)/tests/testsuite)
> >> +
> >> +override_dh_auto_test:
> >> +ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
> >> +       if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST)' || \
> >> +                $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \
> >> +       else \
> >> +               cat tests/testsuite.log; \
> >> +               exit 1; \
> >> +       fi
> >> +endif # nocheck
> >> +
> >> +override_dh_auto_build:
> >> +       cd ovs && $(MAKE) $(PARALLEL)
> >> +       $(MAKE) $(PARALLEL)
> >> +
> >> +override_dh_auto_clean:
> >> +       dh_auto_clean
> >> +       cd ovn-vif && make distclean | :
> >> +       rm -rf ovs
> >> +
> >> +override_dh_installinit:
> >> +       # Package does not ship any init.d files
> >> +       dh_installinit --no-scripts
> >> +
> >> +override_dh_installsystemd:
> >> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-northd
> >> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-sb
> >> +       dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-nb
> >> +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-sb
> >> +       dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-nb
> >> +       dh_installsystemd --restart-after-upgrade -povn-host    --name=ovn-controller
> >> +       dh_installsystemd --restart-after-upgrade
> >> +
> >> +override_dh_python3:
> >> +       dh_python3 --shebang=/usr/bin/python3
> >> +
> >> +# Helper target for creating snapshots from upstream git
> >> +DATE=$(shell date +%Y%m%d)
> >> +# Upstream branch to track
> >> +BRANCH=main
> >> +VERSION=22.09.0
> >> +
> >> +get-orig-snapshot:
> >> +       rm -Rf ovn-upstream ovn-vif-upstream
> >> +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn ovn-upstream
> >> +       git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn-vif ovn-vif-upstream
>
> Why is it possible to clone ovn-vif, but ovs is used from the
> openvswitch-sources package?  Double standards! :)

The get-orig-snapshot build target is a help script to create a
snapshot package of not yet released software, this is typically use
during the development of a distro release.

> >> +       cd ovn-upstream && \
> >> +               export COMMIT=`git rev-parse --short HEAD` && \
> >> +               git archive --format tgz --prefix=ovn-$(VERSION)~git$(DATE).$$COMMIT/ \
> >> +                       -o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH) && \
>
> Can we just archive the submodule here as well?  It's not some
> separate shared library, it's just a set of required sources
> that are necessary to build with.

The OVN package uses components, or multi-tar, which is possible for
OVN and OVN-VIF because they follow the exact same release schedule
and versioning. The package maintainer tooling essentially downloads
the upstream published tarballs and repackages them into one single
source package. You can see hints of how this works in the
debian/watch and debian/gbp.conf files. The component feature does
unfortunately not work with more unrelated source archives where the
versioning differ etc.

Having said that, I have heard mention of ceph as an example of a
heavy user of submodules, I can check with the maintainer of the ceph
packages if there is anything we can learn from them in this regard. I
don't know if we would be able to complete that before the hard freeze
though.
diff mbox series

Patch

diff --git a/build-aux/initial-tab-whitelist b/build-aux/initial-tab-whitelist
index b2f5a0791..71d4f007d 100644
--- a/build-aux/initial-tab-whitelist
+++ b/build-aux/initial-tab-whitelist
@@ -6,6 +6,5 @@ 
 ^ovs/
 ^third-party/
 ^xenserver/
-^debian/rules.modules$
-^debian/rules$
+^debian/
 ^\.gitmodules$
diff --git a/debian/.gitignore b/debian/.gitignore
new file mode 100644
index 000000000..d2393b3fd
--- /dev/null
+++ b/debian/.gitignore
@@ -0,0 +1,17 @@ 
+*.debhelper
+*.debhelper.log
+*.substvars
+/autoreconf.after
+/autoreconf.before
+/copyright
+/files
+/ovn-common
+/ovn-controller-vtep
+/ovn-host
+/ovn-central
+/ovn-docker
+/debhelper-build-stamp
+/ovn-doc/
+/ovn-ic-db/
+/ovn-ic/
+/tmp
diff --git a/debian/automake.mk b/debian/automake.mk
index ce11fd040..d199c925d 100644
--- a/debian/automake.mk
+++ b/debian/automake.mk
@@ -1,2 +1,85 @@ 
 EXTRA_DIST += \
-	debian/changelog
+	debian/changelog \
+	debian/control \
+	debian/copyright.in \
+	debian/flaky-tests-amd64.txt \
+	debian/flaky-tests-arm64.txt \
+	debian/flaky-tests-armel.txt \
+	debian/flaky-tests-armhf.txt \
+	debian/flaky-tests-i386.txt \
+	debian/flaky-tests-mips64el.txt \
+	debian/flaky-tests-mipsel.txt \
+	debian/flaky-tests-ppc64el.txt \
+	debian/flaky-tests-riscv64.txt \
+	debian/flaky-tests-s390x.txt \
+	debian/gbp.conf \
+	debian/not-installed \
+	debian/ovn-central.default \
+	debian/ovn-central.install \
+	debian/ovn-central.ovn-northd.service \
+	debian/ovn-central.postrm \
+	debian/ovn-central.service \
+	debian/ovn-common.docs \
+	debian/ovn-common.install \
+	debian/ovn-common.logrotate \
+	debian/ovn-common.postinst \
+	debian/ovn-common.postrm \
+	debian/ovn-controller-vtep.install \
+	debian/ovn-controller-vtep.service \
+	debian/ovn-doc.doc-base \
+	debian/ovn-doc.install \
+	debian/ovn-docker.install \
+	debian/ovn-host.default \
+	debian/ovn-host.install \
+	debian/ovn-host.ovn-controller.service \
+	debian/ovn-host.postrm \
+	debian/ovn-host.service \
+	debian/ovn-ic-db.install \
+	debian/ovn-ic-db.service \
+	debian/ovn-ic.install \
+	debian/ovn-ic.service \
+	debian/rules \
+	debian/source/format \
+	debian/source/include-binaries \
+	debian/testlist.py \
+	debian/watch
+
+check-debian-changelog-version:
+	@DEB_VERSION=`echo '$(VERSION)' | sed 's/pre/~pre/'`;		     \
+	if $(FGREP) '($(DEB_VERSION)' $(srcdir)/debian/changelog >/dev/null; \
+	then								     \
+	  :;								     \
+	else								     \
+	  echo "Update debian/changelog to mention version $(VERSION)";	     \
+	  exit 1;							     \
+	fi
+ALL_LOCAL += check-debian-changelog-version
+DIST_HOOKS += check-debian-changelog-version
+
+update_deb_copyright = \
+	$(AM_V_GEN) \
+	{ sed -n -e '/%AUTHORS%/q' -e p < $(srcdir)/debian/copyright.in;   \
+	  tail -n +28 $(srcdir)/AUTHORS.rst | sed '1,/^$$/d' |		   \
+		sed -n -e '/^$$/q' -e 's/^/  /p';			   \
+	  sed -e '1,/%AUTHORS%/d' $(srcdir)/debian/copyright.in;	   \
+	} > debian/copyright
+
+debian/copyright: AUTHORS.rst debian/copyright.in
+	$(update_deb_copyright)
+
+CLEANFILES += debian/copyright
+
+debian: debian/copyright
+.PHONY: debian
+
+debian-deb: debian
+	@if test X"$(srcdir)" != X"$(top_builddir)"; then                   \
+		echo "Debian packages should be built from $(abs_srcdir)/"; \
+		exit 1;                                                     \
+	fi
+	$(MAKE) distclean
+	$(update_deb_copyright)
+	$(update_deb_control)
+	$(AM_V_GEN) fakeroot debian/rules clean
+	$(AM_V_GEN) DEB_BUILD_OPTIONS="nocheck parallel=`nproc`" \
+		fakeroot debian/rules binary
diff --git a/debian/control b/debian/control
new file mode 100644
index 000000000..a6f395842
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,176 @@ 
+Source: ovn
+Section: net
+Priority: optional
+Maintainer: OVN developers <dev@openvswitch.org>
+Build-Depends:
+ autoconf,
+ automake,
+ bzip2,
+ debhelper-compat (= 10),
+ dh-python,
+ graphviz,
+ libcap-ng-dev,
+ libnuma-dev [amd64 i386 ppc64el arm64],
+ libpcap-dev [amd64 i386 ppc64el arm64],
+ libssl-dev,
+ libtool,
+ libudev-dev,
+ libunbound-dev,
+ openssl,
+ openstack-pkg-tools,
+ openvswitch-source (>= 2.17.2-3~),
+ pkg-config,
+ procps,
+ python3-all-dev,
+ python3-setuptools,
+ python3-sortedcontainers,
+ python3-sphinx,
+ tcpdump,
+Standards-Version: 4.6.1
+Homepage: https://www.ovn.org/
+
+Package: ovn-central
+Architecture: linux-any
+Pre-Depends: ${misc:Pre-Depends},
+Depends:
+ lsb-base,
+ lsb-release,
+ openvswitch-common (>= 2.17.0~),
+ ovn-common (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: OVN central components
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction. OVN complements the existing capabilities of OVS to add native
+ support for virtual network abstractions, such as virtual L2 and L3 overlays
+ and security groups.
+ .
+ ovn-central provides the userspace daemons, utilities and
+ databases for OVN that is run at a central location.
+
+Package: ovn-common
+Architecture: linux-any
+Depends:
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Breaks:
+ ovn-ic-db (<< 22.03~),
+Replaces:
+ ovn-ic-db (<< 22.03~),
+Description: OVN common components
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction. OVN complements the existing capabilities of OVS to add native
+ support for virtual network abstractions, such as virtual L2 and L3 overlays
+ and security groups.
+ .
+ ovn-common provides components required by other OVN packages.
+
+Package: ovn-controller-vtep
+Architecture: linux-any
+Pre-Depends: ${misc:Pre-Depends},
+Depends:
+ lsb-base,
+ ovn-common (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: OVN vtep controller
+ ovn-controller-vtep is the local controller daemon in OVN, the Open Virtual
+ Network, for VTEP enabled physical switches. It connects up to the OVN
+ Southbound database over the OVSDB protocol, and down to the VTEP database
+ over the OVSDB protocol.
+ .
+ ovn-controller-vtep provides the ovn-controller-vtep binary for controlling
+ vtep gateways.
+
+Package: ovn-doc
+Section: doc
+Architecture: all
+Depends:
+ ${misc:Depends},
+ ${sphinxdoc:Depends},
+Description: OVN documentation
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction.  OVN complements the existing capabilities of OVS to add
+ native support for virtual network abstractions, such as virtual L2 and L3
+ overlays and security groups.
+ .
+ This package provides documentation for configuration and use
+ of OVN.
+
+Package: ovn-docker
+Architecture: linux-any
+Depends:
+ openvswitch-common (>= 2.17.0~),
+ ovn-common (= ${binary:Version}),
+ python3-openvswitch (>= 2.17.0~),
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
+Description: OVN Docker drivers
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction.  OVN complements the existing capabilities of OVS to add
+ native support for virtual network abstractions, such as virtual L2 and L3
+ overlays and security groups.
+ .
+ ovn-docker provides the docker drivers for OVN.
+
+Package: ovn-host
+Architecture: linux-any
+Pre-Depends: ${misc:Pre-Depends},
+Depends:
+ lsb-base,
+ lsb-release,
+ openvswitch-switch (>= 2.17.0~),
+ ovn-common (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: OVN host components
+ OVN, the Open Virtual Network, is a system to support virtual network
+ abstraction.  OVN complements the existing capabilities of OVS to add
+ native support for virtual network abstractions, such as virtual L2 and L3
+ overlays and security groups.
+ .
+ ovn-host provides the userspace components and utilities for
+ OVN that can be run on every host/hypervisor.
+
+Package: ovn-ic
+Architecture: linux-any
+Pre-Depends: ${misc:Pre-Depends},
+Depends:
+ lsb-base,
+ lsb-release,
+ ovn-common (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Enhances:
+ ovn-central,
+Suggests:
+ ovn-ic-db,
+Description: Open Virtual Network interconnection controller
+ OVN IC, the Open Virtual Network interconnection controller, is a
+ centralized daemon which communicates with global interconnection
+ databases to configure and exchange data with local OVN databases for
+ interconnection with other OVN deployments.
+ .
+ This package provides the ovn-ic daemon which should be run alongside
+ ovn-central services in each OVN deployment zone.
+
+Package: ovn-ic-db
+Architecture: linux-any
+Pre-Depends: ${misc:Pre-Depends},
+Depends:
+ lsb-base,
+ lsb-release,
+ openvswitch-common (>= 2.17.0~),
+ ovn-common (= ${binary:Version}),
+ ${misc:Depends},
+ ${shlibs:Depends},
+Description: Open Virtual Network interconnection controller databases
+ OVN IC, the Open Virtual Network interconnection controller, is a
+ centralized daemon which communicates with global interconnection
+ databases to configure and exchange data with local OVN databases for
+ interconnection with other OVN deployments.
+ .
+ This package provides the global OVN IC southbound and northbound
+ OVSDB databases.
diff --git a/debian/copyright.in b/debian/copyright.in
new file mode 100644
index 000000000..911704ae0
--- /dev/null
+++ b/debian/copyright.in
@@ -0,0 +1,146 @@ 
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Open Virtual Network (OVN)
+Source: https://github.com/ovn-org/ovn
+Files-Excluded: debian
+Upstream-Authors:
+%AUTHORS%
+
+Files: *
+Copyright: 2007-2017 Nicira, Inc.
+           2010 Jean Tourrilhes - HP-Labs.
+           2008,2009,2010 Citrix Systems, Inc.
+           2011 Gaetano Catalli
+           2000-2003 Geoffrey Wossum <gwossum@acm.org>
+           2000 The NetBSD Foundation, Inc.
+           1995, 1996, 1997, and 1998 WIDE Project.
+           1982, 1986, 1990, 1993 The Regents of the University of California.
+           2008, 2012 Vincent Bernat <bernat@luffy.cx>
+           2014 Michael Chapman
+           2014 WindRiver, Inc.
+           2014 Avaya, Inc.
+           2001 Daniel Hartmeier
+           2002 - 2008 Henning Brauer
+           2012 Gleb Smirnoff <glebius@FreeBSD.org>
+           2015-2019 Red Hat, Inc.
+           2017 DtDream Technology Co., Ltd.
+           2018 eBay Inc.
+License: Apache-2.0
+Comment:
+ This package contains code from other projects and authors not
+ mentioned elsewhere.
+ .
+ Open vSwitch
+ Copyright (c) 2007, 2008, 2009, 2010, 2011, 2013 Nicira, Inc.
+ .
+ Open vSwitch BSD port
+ Copyright (c) 2011 Gaetano Catalli
+ .
+ Apache Portable Runtime
+ Copyright 2008 The Apache Software Foundation.
+ .
+ This product includes software developed by
+ The Apache Software Foundation (http://www.apache.org/).
+ .
+ Portions of this software were developed at the National Center
+ for Supercomputing Applications (NCSA) at the University of
+ Illinois at Urbana-Champaign.
+ .
+ lib/ovs.tmac includes troff macros written by Eric S. Raymond
+ and Werner Lemberg.
+ .
+ m4/include_next.m4 and m4/absolute-header.m4
+ Copyright (C) 2006-2013 Free Software Foundation, Inc.
+ .
+ Rapid Spanning Tree Protocol (RSTP) implementation
+ Copyright (c) 2011-2014 M3S, Srl - Italy
+ .
+ LLDP implementation
+ Copyright (c) 2008, 2012 Vincent Bernat <bernat@luffy.cx>
+ .
+ LLDP includes code used from the Net::CDP project based on the ISC license
+ Copyright (c) 2014 Michael Chapman
+ .
+ LLDP includes code used from the ladvd project based on the ISC license
+ Copyright (c) 2008, 2009, 2010 Sten Spans <sten@blinkenlights.nl>
+ .
+ Auto Attach implementation
+ Copyright (c) 2014, 2015 WindRiver, Inc
+ Copyright (c) 2014, 2015 Avaya, Inc
+ .
+ TCP connection tracker from FreeBSD pf, BSD licensed
+ Copyright (c) 2001 Daniel Hartmeier
+ Copyright (c) 2002 - 2008 Henning Brauer
+ Copyright (c) 2012 Gleb Smirnoff <glebius@FreeBSD.org>
+
+Files: build-aux/cccl
+Copyright: 2000-2003 Geoffrey Wossum <gwossum@acm.org>
+License: GPL-2
+
+Files: utilities/bugtool/ovn-bugtool-*
+       utilities/bugtool/plugins/network-status/ovn.xml
+Copyright: 2016 Nicira, Inc.
+License: LGPL-2.1
+
+Files: m4/absolute-header.m4
+       m4/include_next.m4
+Copyright: Derek Price
+           Paul Eggert
+           2006-2013 Free Software Foundation, Inc.
+License: file-is-free-software
+ This file is free software; the Free Software Foundation
+ gives unlimited permission to copy and/or distribute it,
+ with or without modifications, as long as this notice is preserved.
+
+Files: ovn-vif/*
+Copyright: 2021 Canonical
+License: Apache-2.0
+
+License: GPL-2
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free Software
+ Foundation; either version 2 of the License, or (at your option) any later
+ version.
+ .
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ .
+ You should have received a copy of the GNU General Public License along with
+ this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
+ St, Fifth Floor, Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the complete text of the GNU General Public License v2
+ (GPL) can be found in /usr/share/common-licenses/GPL-2.
+
+License: LGPL-2.1
+ This library is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Lesser General Public License as published by the Free
+ Software Foundation; either version 2.1 of the License.
+ .
+ This library is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
+ details.
+ .
+ You should have received a copy of the GNU Lesser General Public License along
+ with this library; if not, write to the Free Software Foundation, Inc., 51
+ Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the complete text of the GNU Lesser General Public License
+ (LGPL) may be found in /usr/share/common-licenses/LGPL-2.
+
+License: Apache-2.0
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ .
+    http://www.apache.org/licenses/LICENSE-2.0
+ .
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ .
+ On Debian-based systems the full text of the Apache version 2.0 license
+ can be found in `/usr/share/common-licenses/Apache-2.0'.
diff --git a/debian/flaky-tests-amd64.txt b/debian/flaky-tests-amd64.txt
new file mode 100644
index 000000000..cfe5d8c66
--- /dev/null
+++ b/debian/flaky-tests-amd64.txt
@@ -0,0 +1,6 @@ 
+send gratuitous arp on localnet
+policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
+ACLs on Port Groups
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+northd ssl file change
diff --git a/debian/flaky-tests-arm64.txt b/debian/flaky-tests-arm64.txt
new file mode 100644
index 000000000..996d0537e
--- /dev/null
+++ b/debian/flaky-tests-arm64.txt
@@ -0,0 +1,5 @@ 
+ovn-controller incremental processing
+nb_cfg timestamp
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+ipsec -- basic configuration
diff --git a/debian/flaky-tests-armel.txt b/debian/flaky-tests-armel.txt
new file mode 100644
index 000000000..6ce03bb10
--- /dev/null
+++ b/debian/flaky-tests-armel.txt
@@ -0,0 +1,7 @@ 
+policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
+1 LR with distributed router gateway port
+ACL conjunction
+IP packet buffering
+test transport zones
+lflow cache for conjunctions
+nb_cfg timestamp
diff --git a/debian/flaky-tests-armhf.txt b/debian/flaky-tests-armhf.txt
new file mode 100644
index 000000000..43654f3ae
--- /dev/null
+++ b/debian/flaky-tests-armhf.txt
@@ -0,0 +1,9 @@ 
+policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
+ovn-controller incremental processing
+ACL conjunction
+neighbor update on same HV
+nb_cfg timestamp
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+ovn-ic -- gateway sync
+ipsec -- basic configuration
diff --git a/debian/flaky-tests-i386.txt b/debian/flaky-tests-i386.txt
new file mode 100644
index 000000000..b82300de9
--- /dev/null
+++ b/debian/flaky-tests-i386.txt
@@ -0,0 +1,8 @@ 
+policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
+nb_cfg timestamp
+ARP replies for SNAT external ips
+conflict ACLs with address set
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+ovn-ic -- gateway sync
+ipsec -- basic configuration
diff --git a/debian/flaky-tests-mips64el.txt b/debian/flaky-tests-mips64el.txt
new file mode 100644
index 000000000..e67e2c4ca
--- /dev/null
+++ b/debian/flaky-tests-mips64el.txt
@@ -0,0 +1,5 @@ 
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+ovn-ic -- gateway sync
+ipsec -- basic configuration
+nb_cfg timestamp
diff --git a/debian/flaky-tests-mipsel.txt b/debian/flaky-tests-mipsel.txt
new file mode 100644
index 000000000..00d383572
--- /dev/null
+++ b/debian/flaky-tests-mipsel.txt
@@ -0,0 +1,21 @@ 
+vtep: 3 HVs, 1 VIFs/HV, 1 GW, 1 LS
+policy-based routing: 1 HVs, 2 LSs, 1 lport/LS, 1 LR
+policy-based routing IPv6: 1 HVs, 3 LSs, 1 lport/LS, 1 LR
+send gratuitous arp for nat ips in localnet
+send gratuitous arp for NAT rules on distributed router
+vlan traffic for external network with distributed router gateway port
+send gratuitous ARP for NAT rules on HA distributed router
+ACL conjunction
+router - check packet length - icmp defrag
+router - check packet length - icmp defrag
+IP packet buffering
+test transport zones
+Load balancer health checks
+interconnection
+nb_cfg timestamp
+conflict ACLs with address set
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+northd ssl file change
+ovn-ic -- gateway sync
+ipsec -- basic configuration
diff --git a/debian/flaky-tests-ppc64el.txt b/debian/flaky-tests-ppc64el.txt
new file mode 100644
index 000000000..6e089b6cb
--- /dev/null
+++ b/debian/flaky-tests-ppc64el.txt
@@ -0,0 +1,6 @@ 
+options:requested-chassis for logical port
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+northd ssl file change
+ovn-ic -- gateway sync
+ipsec -- basic configuration
diff --git a/debian/flaky-tests-riscv64.txt b/debian/flaky-tests-riscv64.txt
new file mode 100644
index 000000000..50570ab80
--- /dev/null
+++ b/debian/flaky-tests-riscv64.txt
@@ -0,0 +1,6 @@ 
+send gratuitous arp on localnet
+1 LR with distributed router gateway port
+router - check packet length - icmp defrag
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+ipsec -- basic configuration
diff --git a/debian/flaky-tests-s390x.txt b/debian/flaky-tests-s390x.txt
new file mode 100644
index 000000000..a642063d9
--- /dev/null
+++ b/debian/flaky-tests-s390x.txt
@@ -0,0 +1,5 @@ 
+options:requested-chassis for logical port
+ACLs on Port Groups
+multi-vtep SB Chassis encap updates
+ACL with Port Group conjunction flow efficiency
+ipsec -- basic configuration
diff --git a/debian/gbp.conf b/debian/gbp.conf
new file mode 100644
index 000000000..438b3fa8d
--- /dev/null
+++ b/debian/gbp.conf
@@ -0,0 +1,13 @@ 
+[DEFAULT]
+debian-branch = main
+upstream-branch = upstream
+pristine-tar = True
+components = ['ovn-vif']
+
+[import-orig]
+upstream-vcs-tag = v%(version)s
+
+[dch]
+multimaint-merge = True
+customizations=/usr/share/doc/git-buildpackage/examples/wrap_cl.py
+git-log=--first-parent
diff --git a/debian/not-installed b/debian/not-installed
new file mode 100644
index 000000000..e213b139d
--- /dev/null
+++ b/debian/not-installed
@@ -0,0 +1,5 @@ 
+# The OVN library and headers are currently not considered ABI/API stable.
+# If the need arises to build sibling projects we should probably provide an
+# ovn-source package.
+usr/include/*
+usr/lib/*
diff --git a/debian/ovn-central.default b/debian/ovn-central.default
new file mode 100644
index 000000000..7cea13e50
--- /dev/null
+++ b/debian/ovn-central.default
@@ -0,0 +1,5 @@ 
+# This is a POSIX shell fragment                -*- sh -*-
+
+# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
+# a suitable place to specify --ovn-northd-wrapper=valgrind.
+# OVN_CTL_OPTS=
diff --git a/debian/ovn-central.install b/debian/ovn-central.install
new file mode 100644
index 000000000..095ca7cfa
--- /dev/null
+++ b/debian/ovn-central.install
@@ -0,0 +1,3 @@ 
+usr/bin/ovn-northd
+usr/share/ovn/ovn-nb.ovsschema
+usr/share/ovn/ovn-sb.ovsschema
diff --git a/debian/ovn-central.ovn-northd.service b/debian/ovn-central.ovn-northd.service
new file mode 100644
index 000000000..09c600016
--- /dev/null
+++ b/debian/ovn-central.ovn-northd.service
@@ -0,0 +1,15 @@ 
+[Unit]
+Description=Open Virtual Network central control daemon
+After=network.target ovn-nb-ovsdb.service ovn-sb-ovsdb.service
+PartOf=ovn-central.service
+DefaultDependencies=no
+
+[Service]
+Type=forking
+EnvironmentFile=-/etc/default/ovn-central
+PIDFile=%t/ovn/ovn-northd.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl start_northd --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_northd --no-monitor
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
diff --git a/debian/ovn-central.ovn-ovsdb-server-nb.service b/debian/ovn-central.ovn-ovsdb-server-nb.service
new file mode 100644
index 000000000..81f6c75a3
--- /dev/null
+++ b/debian/ovn-central.ovn-ovsdb-server-nb.service
@@ -0,0 +1,18 @@ 
+[Unit]
+Description=Open vSwitch database server for OVN Northbound database
+After=network.target
+PartOf=ovn-central.service
+DefaultDependencies=no
+
+[Service]
+Type=simple
+EnvironmentFile=-/etc/default/ovn-central
+PIDFile=%t/ovn/ovnnb_db.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl run_nb_ovsdb $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_nb_ovsdb
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
+
+[Install]
+Alias=ovn-nb-ovsdb.service
diff --git a/debian/ovn-central.ovn-ovsdb-server-sb.service b/debian/ovn-central.ovn-ovsdb-server-sb.service
new file mode 100644
index 000000000..3aa840d2f
--- /dev/null
+++ b/debian/ovn-central.ovn-ovsdb-server-sb.service
@@ -0,0 +1,18 @@ 
+[Unit]
+Description=Open vSwitch database server for OVN Southbound database
+After=network.target
+PartOf=ovn-central.service
+DefaultDependencies=no
+
+[Service]
+Type=simple
+EnvironmentFile=-/etc/default/ovn-central
+PIDFile=%t/run/ovn/ovnsb_db.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl run_sb_ovsdb $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_sb_ovsdb
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
+
+[Install]
+Alias=ovn-sb-ovsdb.service
diff --git a/debian/ovn-central.postrm b/debian/ovn-central.postrm
new file mode 100644
index 000000000..3b3483fc3
--- /dev/null
+++ b/debian/ovn-central.postrm
@@ -0,0 +1,47 @@ 
+#!/bin/sh
+# postrm script for ovn-central
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        rm -f /etc/openvswitch/ovnnb.db*
+        rm -f /etc/openvswitch/.ovnnb.db.~lock~
+        rm -f /etc/openvswitch/ovnsb.db*
+        rm -f /etc/openvswitch/.ovnsb.db.~lock~
+        rm -f /var/log/openvswitch/ovn-northd.log* || true
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/ovn-central.service b/debian/ovn-central.service
new file mode 100644
index 000000000..aead7eae6
--- /dev/null
+++ b/debian/ovn-central.service
@@ -0,0 +1,16 @@ 
+[Unit]
+Description=Open Virtual Network central components
+After=network.target
+Requires=network.target
+Wants=ovn-northd.service
+Wants=ovn-ovsdb-server-sb.service
+Wants=ovn-ovsdb-server-nb.service
+
+[Service]
+Type=oneshot
+ExecStart=/bin/true
+ExecStop=/bin/true
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/ovn-common.docs b/debian/ovn-common.docs
new file mode 100644
index 000000000..6d5ee1d05
--- /dev/null
+++ b/debian/ovn-common.docs
@@ -0,0 +1 @@ 
+NOTICE
diff --git a/debian/ovn-common.install b/debian/ovn-common.install
new file mode 100644
index 000000000..52e9e0050
--- /dev/null
+++ b/debian/ovn-common.install
@@ -0,0 +1,32 @@ 
+usr/bin/ovn-appctl
+usr/bin/ovn_detrace.py
+usr/bin/ovn-detrace
+usr/bin/ovn-nbctl
+usr/bin/ovn-sbctl
+/usr/bin/ovn-ic-nbctl
+/usr/bin/ovn-ic-sbctl
+usr/bin/ovn-trace
+usr/share/ovn/bugtool-plugins/network-status/ovn.xml
+usr/share/ovn/scripts/ovn-ctl
+usr/share/ovn/scripts/ovn-lib
+usr/share/ovn/scripts/ovndb-servers.ocf
+usr/share/ovn/scripts/ovn-bugtool-nbctl-show
+usr/share/ovn/scripts/ovn-bugtool-sbctl-lflow-list
+usr/share/ovn/scripts/ovn-bugtool-sbctl-show
+usr/share/man/man1/ovn-detrace.1
+usr/share/man/man5/ovn-ic-nb.5
+usr/share/man/man5/ovn-ic-sb.5
+usr/share/man/man5/ovn-nb.5
+usr/share/man/man5/ovn-sb.5
+usr/share/man/man7/ovn-architecture.7
+usr/share/man/man8/ovn-appctl.8
+usr/share/man/man8/ovn-controller-vtep.8
+usr/share/man/man8/ovn-controller.8
+usr/share/man/man8/ovn-ctl.8
+usr/share/man/man8/ovn-ic-nbctl.8
+usr/share/man/man8/ovn-ic-sbctl.8
+usr/share/man/man8/ovn-ic.8
+usr/share/man/man8/ovn-nbctl.8
+usr/share/man/man8/ovn-northd.8
+usr/share/man/man8/ovn-sbctl.8
+usr/share/man/man8/ovn-trace.8
diff --git a/debian/ovn-common.logrotate b/debian/ovn-common.logrotate
new file mode 100644
index 000000000..a351ec303
--- /dev/null
+++ b/debian/ovn-common.logrotate
@@ -0,0 +1,22 @@ 
+# Copyright (C) 2019 Red Hat, Inc.
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved.  This file is offered as-is,
+# without warranty of any kind.
+
+/var/log/ovn/*.log {
+    su root root
+    daily
+    compress
+    sharedscripts
+    missingok
+    postrotate
+        # Tell OVN daemons to reopen their log files
+        if [ -d /var/run/ovn ]; then
+            for ctl in /var/run/ovn/*.ctl; do
+                ovs-appctl -t "$ctl" vlog/reopen 2>/dev/null || :
+            done
+        fi
+    endscript
+}
diff --git a/debian/ovn-common.postinst b/debian/ovn-common.postinst
new file mode 100644
index 000000000..588044fbc
--- /dev/null
+++ b/debian/ovn-common.postinst
@@ -0,0 +1,24 @@ 
+#!/bin/sh
+# postinst script for ovn-common
+#
+# see: dh_installdeb(1)
+
+set -e
+
+case "$1" in
+    configure)
+        mkdir -p /usr/lib/ocf/resource.d/ovn
+        ln -sf /usr/share/openvswitch/scripts/ovndb-servers.ocf /usr/lib/ocf/resource.d/ovn/ovndb-servers
+        ;;
+    abort-upgrade|abort-remove|abort-deconfigure)
+        ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ovn-common.postrm b/debian/ovn-common.postrm
new file mode 100644
index 000000000..9face726b
--- /dev/null
+++ b/debian/ovn-common.postrm
@@ -0,0 +1,23 @@ 
+#!/bin/sh
+# postrm script for openvswitch-testcontroller
+#
+# see: dh_installdeb(1)
+
+set -e
+
+case "$1" in
+    purge|remove)
+        rm -rf /usr/lib/ocf/resource.d/ovn
+        ;;
+    upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/ovn-controller-vtep.install b/debian/ovn-controller-vtep.install
new file mode 100644
index 000000000..1d208f37e
--- /dev/null
+++ b/debian/ovn-controller-vtep.install
@@ -0,0 +1 @@ 
+usr/bin/ovn-controller-vtep
diff --git a/debian/ovn-controller-vtep.service b/debian/ovn-controller-vtep.service
new file mode 100644
index 000000000..d51e75277
--- /dev/null
+++ b/debian/ovn-controller-vtep.service
@@ -0,0 +1,16 @@ 
+[Unit]
+Description=Open Virtual Network VTEP gateway controller daemon
+After=openvswitch-switch.service
+Requires=openvswitch-switch.service
+
+[Service]
+Type=forking
+PIDFile=%t/ovn/ovn-controller-vtep.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller_vtep --no-monitor $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller_vtep --no-monitor
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/ovn-doc.doc-base b/debian/ovn-doc.doc-base
new file mode 100644
index 000000000..c7192ebdb
--- /dev/null
+++ b/debian/ovn-doc.doc-base
@@ -0,0 +1,9 @@ 
+Document: ovn-doc
+Title: Open Virtual Network Documentation
+Author: N/A
+Abstract: Sphinx documentation for Open Virtual Network
+Section: Network/Communication
+
+Format: HTML
+Index: /usr/share/doc/ovn-doc/html/index.html
+Files: /usr/share/doc/ovn-doc/html/*
diff --git a/debian/ovn-doc.install b/debian/ovn-doc.install
new file mode 100644
index 000000000..4cfd153cf
--- /dev/null
+++ b/debian/ovn-doc.install
@@ -0,0 +1 @@ 
+Documentation/_build/html/* /usr/share/doc/ovn-doc/html/
diff --git a/debian/ovn-docker.install b/debian/ovn-docker.install
new file mode 100644
index 000000000..583306732
--- /dev/null
+++ b/debian/ovn-docker.install
@@ -0,0 +1,2 @@ 
+usr/bin/ovn-docker-overlay-driver
+usr/bin/ovn-docker-underlay-driver
diff --git a/debian/ovn-host.default b/debian/ovn-host.default
new file mode 100644
index 000000000..7fd54efda
--- /dev/null
+++ b/debian/ovn-host.default
@@ -0,0 +1,5 @@ 
+# This is a POSIX shell fragment                -*- sh -*-
+
+# OVN_CTL_OPTS: Extra options to pass to ovs-ctl.  This is, for example,
+# a suitable place to specify --ovn-controller-wrapper=valgrind.
+# OVN_CTL_OPTS=
diff --git a/debian/ovn-host.install b/debian/ovn-host.install
new file mode 100644
index 000000000..d2de82fd9
--- /dev/null
+++ b/debian/ovn-host.install
@@ -0,0 +1 @@ 
+usr/bin/ovn-controller
diff --git a/debian/ovn-host.ovn-controller.service b/debian/ovn-host.ovn-controller.service
new file mode 100644
index 000000000..a41e77d75
--- /dev/null
+++ b/debian/ovn-host.ovn-controller.service
@@ -0,0 +1,15 @@ 
+[Unit]
+Description=Open Virtual Network host control daemon
+After=network.target openvswitch-switch.service
+PartOf=ovn-host.service
+DefaultDependencies=no
+
+[Service]
+Type=forking
+EnvironmentFile=-/etc/default/ovn-host
+PIDFile=%t/ovn/ovn-controller.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl start_controller --ovn-manage-ovsdb=no --no-monitor $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_controller --no-monitor
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
diff --git a/debian/ovn-host.postrm b/debian/ovn-host.postrm
new file mode 100644
index 000000000..9d17ef966
--- /dev/null
+++ b/debian/ovn-host.postrm
@@ -0,0 +1,43 @@ 
+#!/bin/sh
+# postrm script for ovn-host
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    purge)
+        rm -f /var/log/openvswitch/ovn-controller.log* || true
+        ;;
+
+    remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+        ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/ovn-host.service b/debian/ovn-host.service
new file mode 100644
index 000000000..b524888fd
--- /dev/null
+++ b/debian/ovn-host.service
@@ -0,0 +1,14 @@ 
+[Unit]
+Description=Open Virtual Network host components
+After=network.target
+Requires=network.target
+Wants=ovn-controller.service
+
+[Service]
+Type=oneshot
+ExecStart=/bin/true
+ExecStop=/bin/true
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/ovn-ic-db.install b/debian/ovn-ic-db.install
new file mode 100644
index 000000000..a4d50002e
--- /dev/null
+++ b/debian/ovn-ic-db.install
@@ -0,0 +1,2 @@ 
+/usr/share/ovn/ovn-ic-nb.ovsschema
+/usr/share/ovn/ovn-ic-sb.ovsschema
diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
new file mode 100644
index 000000000..193024daf
--- /dev/null
+++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-nb.service
@@ -0,0 +1,15 @@ 
+[Unit]
+Description=Open vSwitch database server for OVN IC Northbound database
+After=network.target
+PartOf=ovn-ic-db.service
+DefaultDependencies=no
+
+[Service]
+Type=simple
+EnvironmentFile=-/etc/default/ovn-ic
+PIDFile=%t/ovn/ovn_ic_nb_db.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_nb_ovsdb $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_nb_ovsdb
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
diff --git a/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
new file mode 100644
index 000000000..714748325
--- /dev/null
+++ b/debian/ovn-ic-db.ovn-ovsdb-server-ic-sb.service
@@ -0,0 +1,15 @@ 
+[Unit]
+Description=Open vSwitch database server for OVN IC Southbound database
+After=network.target
+PartOf=ovn-ic-db.service
+DefaultDependencies=no
+
+[Service]
+Type=simple
+EnvironmentFile=-/etc/default/ovn-ic
+PIDFile=%t/ovn/ovn_ic_sb_db.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl run_ic_sb_ovsdb $OVN_CTL_OPTS
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic_sb_ovsdb
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
diff --git a/debian/ovn-ic-db.service b/debian/ovn-ic-db.service
new file mode 100644
index 000000000..b116bc79d
--- /dev/null
+++ b/debian/ovn-ic-db.service
@@ -0,0 +1,15 @@ 
+[Unit]
+Description=Open Virtual Network interconnection databases
+After=network.target
+Requires=network.target
+Wants=ovn-ovsdb-server-ic-sb.service
+Wants=ovn-ovsdb-server-ic-nb.service
+
+[Service]
+Type=oneshot
+ExecStart=/bin/true
+ExecStop=/bin/true
+RemainAfterExit=yes
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/ovn-ic.install b/debian/ovn-ic.install
new file mode 100644
index 000000000..b15508259
--- /dev/null
+++ b/debian/ovn-ic.install
@@ -0,0 +1 @@ 
+/usr/bin/ovn-ic
diff --git a/debian/ovn-ic.service b/debian/ovn-ic.service
new file mode 100644
index 000000000..07974285f
--- /dev/null
+++ b/debian/ovn-ic.service
@@ -0,0 +1,16 @@ 
+[Unit]
+Description=Open Virtual Network interconnection controller
+After=network.target
+Requires=network.target
+
+[Service]
+Type=forking
+PIDFile=%t/ovn/ovn-ic.pid
+ExecStart=/usr/share/ovn/scripts/ovn-ctl start_ic --no-monitor
+ExecStop=/usr/share/ovn/scripts/ovn-ctl stop_ic
+Restart=on-failure
+LimitNOFILE=65535
+TimeoutStopSec=15
+
+[Install]
+WantedBy=multi-user.target
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 000000000..4596afb49
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,104 @@ 
+#!/usr/bin/make -f
+# -*- makefile -*-
+#export DH_VERBOSE=1
+export DEB_BUILD_MAINT_OPTIONS = hardening=+all
+
+%:
+	dh $@ --with autoreconf,python3,sphinxdoc
+
+ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+PARALLEL = -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+else
+PARALLEL =
+endif
+
+override_dh_auto_configure:
+	# Configure OVS before OVN
+	test -d $(CURDIR)/ovs || mkdir ovs
+	cd ovs && tar -xzf /usr/src/openvswitch/openvswitch.tar.gz --strip-components=1
+	cd ovs && ./configure --enable-ssl --localstatedir=/var --sysconfdir=/etc --prefix=/usr && make $(PARALLEL)
+	# Configure OVN to allow building OVN VIF
+	./boot.sh && ./configure \
+		--prefix=/usr \
+		--localstatedir=/var \
+		--sysconfdir=/etc \
+		--with-dbdir=/var/lib/ovn \
+		--with-ovs-source=$(CURDIR)/ovs \
+		--enable-ssl
+	# Configure and build OVN VIF
+	cd ovn-vif && \
+		./boot.sh && \
+		./configure \
+			--with-ovs-source=$(CURDIR)/ovs \
+			--with-ovn-source=$(CURDIR) \
+			--enable-plug-representor && \
+		make $(PARALLEL)
+	# Use dh_auto_configure to build OVN
+	dh_auto_configure -- \
+		--prefix=/usr \
+		--localstatedir=/var \
+		--sysconfdir=/etc \
+		--with-dbdir=/var/lib/ovn \
+		--with-ovs-source=$(CURDIR)/ovs \
+		--enable-ssl \
+		--with-vif-plug-provider=$(CURDIR)/ovn-vif
+	$(MAKE) debian/copyright
+
+TEST_LIST = $(shell \
+                $(CURDIR)/debian/testlist.py \
+                $(CURDIR)/debian/flaky-tests-$(DEB_HOST_ARCH).txt \
+                $(CURDIR)/tests/testsuite)
+
+override_dh_auto_test:
+ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
+	if $(MAKE) check TESTSUITEFLAGS='$(PARALLEL) $(TEST_LIST)' || \
+                $(MAKE) check TESTSUITEFLAGS='--recheck'; then :; \
+	else \
+		cat tests/testsuite.log; \
+		exit 1; \
+	fi
+endif # nocheck
+
+override_dh_auto_build:
+	cd ovs && $(MAKE) $(PARALLEL)
+	$(MAKE) $(PARALLEL)
+
+override_dh_auto_clean:
+	dh_auto_clean
+	cd ovn-vif && make distclean | :
+	rm -rf ovs
+
+override_dh_installinit:
+	# Package does not ship any init.d files
+	dh_installinit --no-scripts
+
+override_dh_installsystemd:
+	dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-northd
+	dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-sb
+	dh_installsystemd --restart-after-upgrade -povn-central --name=ovn-ovsdb-server-nb
+	dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-sb
+	dh_installsystemd --restart-after-upgrade -povn-ic-db   --name=ovn-ovsdb-server-ic-nb
+	dh_installsystemd --restart-after-upgrade -povn-host    --name=ovn-controller
+	dh_installsystemd --restart-after-upgrade
+
+override_dh_python3:
+	dh_python3 --shebang=/usr/bin/python3
+
+# Helper target for creating snapshots from upstream git
+DATE=$(shell date +%Y%m%d)
+# Upstream branch to track
+BRANCH=main
+VERSION=22.09.0
+
+get-orig-snapshot:
+	rm -Rf ovn-upstream ovn-vif-upstream
+	git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn ovn-upstream
+	git clone --branch $(BRANCH) --depth 1 https://github.com/ovn-org/ovn-vif ovn-vif-upstream
+	cd ovn-upstream && \
+		export COMMIT=`git rev-parse --short HEAD` && \
+		git archive --format tgz --prefix=ovn-$(VERSION)~git$(DATE).$$COMMIT/ \
+			-o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig.tar.gz $(BRANCH) && \
+		cd ../ovn-vif-upstream && \
+		git archive --format tgz --prefix=ovn-vif-$(VERSION)~git$(DATE).$$COMMIT/ \
+			-o ../../ovn_$(VERSION)~git$(DATE).$$COMMIT.orig-ovn-vif.tar.gz $(BRANCH)
+	rm -Rf ovn-upstream ovn-vif-upstream
diff --git a/debian/source/format b/debian/source/format
new file mode 100644
index 000000000..163aaf8d8
--- /dev/null
+++ b/debian/source/format
@@ -0,0 +1 @@ 
+3.0 (quilt)
diff --git a/debian/source/include-binaries b/debian/source/include-binaries
new file mode 100644
index 000000000..2dfb2fe55
--- /dev/null
+++ b/debian/source/include-binaries
@@ -0,0 +1 @@ 
+ovn-vif/Documentation/_static/logo.png
diff --git a/debian/testlist.py b/debian/testlist.py
new file mode 100755
index 000000000..24d2ae9c5
--- /dev/null
+++ b/debian/testlist.py
@@ -0,0 +1,72 @@ 
+#!/usr/bin/env python3
+import enum
+import itertools
+import os
+import sys
+
+
+if len(sys.argv) < 3:
+    print(
+        "usage: {} skipdescriptionlist testsuite\n"
+        "\n"
+        "This program reads two files, a skiplist containing the \n"
+        "description of tests to skip separated by newline, and a \n"
+        "generated testsuite script.\n"
+        "\n"
+        "From this it produces string with range of tests to execute \n"
+        "which can be provided to the testsuite script.\n".format(sys.argv[0]),
+        file=sys.stderr,
+    )
+    sys.exit(os.EX_USAGE)
+
+
+SKIP_TEST_STRINGS = []
+with open(sys.argv[1]) as fin:
+    SKIP_TEST_STRINGS = [line.rstrip() for line in fin.readlines()]
+
+
+@enum.unique
+class State(enum.Enum):
+    INIT = enum.auto()
+    AT_HELP_ALL = enum.auto()
+
+
+SKIP_TESTS = set()
+TESTS = set()
+with open(sys.argv[2]) as fin:
+    state = State.INIT
+    last_test = 0
+    for line in fin.readlines():
+        if state == State.INIT:
+            if not line.startswith('at_help_all="'):
+                continue
+            else:
+                state = State.AT_HELP_ALL
+                data = line.split('"')[1].rstrip().split(";")
+        elif state == State.AT_HELP_ALL:
+            if line.startswith('"'):
+                break
+            data = line.rstrip().split(";")
+        test_nr = int(data[0])
+        if last_test < test_nr:
+            last_test = test_nr
+        for skip_string in SKIP_TEST_STRINGS:
+            if skip_string in data[2]:
+                SKIP_TESTS.add(test_nr)
+            else:
+                TESTS.add(test_nr)
+
+
+def ranges(testlist):
+    for a, b in itertools.groupby(
+        enumerate(list(testlist)), lambda pair: pair[1] - pair[0]
+    ):
+        b = list(b)
+        yield b[0][1], b[-1][1]
+
+
+testranges = [
+    "{}-{}".format(testrange[0], testrange[1])
+    for testrange in ranges(TESTS - SKIP_TESTS)
+]
+print(" ".join(testranges))
diff --git a/debian/watch b/debian/watch
new file mode 100644
index 000000000..4831f3456
--- /dev/null
+++ b/debian/watch
@@ -0,0 +1,5 @@ 
+version=4
+opts=filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-$1\.tar\.gz/ \
+  https://github.com/ovn-org/ovn/tags .*/v?(\d\S+)\.tar\.gz
+opts="filenamemangle=s/.+\/v?(\d\S+)\.tar\.gz/ovn-vif-$1\.tar\.gz/, component=ovn-vif" \
+  https://github.com/ovn-org/ovn-vif/tags .*/v?(\d\S+)\.tar\.gz