dsc_depend: Deal with circular dependency packages

dsc_depend separates packages into different groups based on their
build relationships. "simple" group deals with packages without circular
dependencies, while "circular" group deal with circular dependency.

Need a config file to define the build order of circular dependencies
packages. See example file: circular_dep.conf

Test Plan:
Construct build order with hundreds of dsc files from Debian repository;
Construct build order with all dsc files of current stx's project.

Story: 2008846
Task: 43694

Signed-off-by: ZhangXiao <xiao.zhang@windriver.com>
Change-Id: I6e942dffbb3eda75e2822d0e15451be04f7f4f3f
This commit is contained in:
ZhangXiao 2022-02-23 22:19:41 +08:00 committed by Al Bailey
parent c345bdd2e0
commit c04eaea7a4
2 changed files with 987 additions and 226 deletions

View File

@ -0,0 +1,94 @@
# circular dependency config file
# Used to break circular dependency
# Each circular dependency DSC set containss two lines, the first line starts with
# "SRC SET:" shows all related source packages; the second line starts with
# "BUILD ORDER:" shows the build order of these packages. The name of those
# soure packages are seperated with a space. For example:
# SRC SET: a b c d
# BUILD ORDER: a d c b a d c b
# SRC SET: a b c
# BUILD ORDER: a c b a c b
# SRC SETa b
# BUILD ORDER: a b
# -b> Build depend on
# -r> Runtime depend on
# (s) Source package
SRC SET: python-openstacksdk
BUILD ORDER: python-openstacksdk
# Self dependency with 1 chain
# --> python-openstacksdk <--
# |---------------------------|
# python-openstacksdk(s) -b> python3-oslotest -r> python3-os-client-config -r> python3-openstacksdk(python-openstacksdk)
SRC SET: openldap systemd
BUILD ORDER: openldap systemd
# openldap <------> systemd
# openldap(s) -b> debhelper -r> man-db -r> bsdmainutils -r> bsdutils -r> libsystemd0(systemd)
# systemd(s) -b> libcurl4-gnutls-dev -r> libcurl3-gnutls -r> libldap-2.4-2(openldap)
SRC SET: python-barbicanclient python-openstackclient
BUILD ORDER: python-barbicanclient python-openstackclient
# python-barbicanclient <------> python-openstackclient
# python-barbicanclient(s) -b> python-openstackclient(python-openstackclient)
# python-openstackclient(s) -b> python-barbicanclient(python-barbicanclient)
SRC SET: python-openstackclient
BUILD ORDER: python-openstackclient
# Self dependency with 7 chain
# |--> python-openstackclient <--|
# |------------------------------|
# python-openstackclient(s) -b> python3-congressclient -r> python3-openstackclient(python-openstackclient)
# | -b> python3-ironicclient -r> |
# | -b> python3-zunclient -r> |
# | -b> python3-octaviaclient -r> |
# | -b> python3-searchlightclient -r> |
# | -b> python3-saharaclient -r> |
# | -b> python3-watcherclient -r> |
SRC SET: openldap systemd linux
BUILD ORDER: linux openldap systemd
# --> linux <-----> systemd <----> openldap ---|
# |---------------------------------------------|
# openldap(s) -b> debhelper -r> man-db -r> bsdmainutils -r> bsdutils -r> libsystemd(systemd)
# systemd(s) -b> libcurl4-gnutls-dev -r> libcurl3-gnutls -r> libldap-2.4-2(openldap)
# openldap(s) -b> debhelper -r> dh-autoreconf -r> libtool -r> libc6-dev -r> linux-libc-dev(linux)
# | -b> heimdal-multidev -r> comerr-dev -r> ---------------------/
# | -b> libgnutls28-dev -r> ---------------/
# | -b> libsasl2-dev -r> --/
# | -b> libperl-dev -r> /
# systemd(s) -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> libmount-dev -r> libselinux1-dev -r> libpcre2-dev -r> libc6-dev -r> linux-libc-dev(linux)
# | -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> libmount-dev -r> libblkid-dev -r> uuid-dev -r> -------/
# | -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> libselinux1-dev -r> libpcre2-dev -r> ---------/
# | -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> libmount-dev -r> libblkid-dev -r> --/
# | -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> libpcre3-dev -r> /--------------/
# | -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> libmount-dev -r> /
# | -b> libpolkit-gobject-1-dev -r> libglib2.0-dev -r> zlib1g-dev -r> /
# | -b> libmount-dev -r> libselinux1-dev -r> libpcre2-dev -r> --------/
# | -b> libmount-dev -r> libblkid-dev -r> uuid-dev -r> ------/
# | -b> libdw-dev -r> libelf-dev -r> zlib1g-dev -r> --/
# | -b> libmicrohttpd-dev -r> libgnutls28-dev -r> /
# | -b> libselinux1-dev -r> libpcre2-dev -r> -----/
# | -b> libmount-dev -r> libblkid-dev -r> --/
# | -b> libacl1-dev -r> libattr1-dev -r> /
# | -b> libblkid-dev -r> uuid-dev -r> --/
# | -b> libdw-dev -r> zlib1g-dev -r> |
# | -b> libgcrypt20-dev -r> ----------/
# | -b> libgnutls28-dev -r> |
# | -b> libpcre2-dev -r> --/
# | -b> libblkid-dev -r> |
# | -b> libacl1-dev -r> |
# | -b> zlib1g-dev -r> |
# | -b> libpam0g-dev -r> |
# | -b> libmount-dev -r> |
# | -b> libbz2-dev -r> /
# linux(s) -b> libpci-dev -r> libudev-dev(systemd)
# | -b> --------------/
# | -b> libpci-dev -r> libudev-dev -r> libudev1(systemd)
# | -b> libpci-dev -r> libpci3 -r> ----/
# | -b> libudev-dev -r> ----------/
# | -b> kernel-wedge -r> debhelper -r> man-db -r> bsdmainutils -r> bsdutils -r> libsystemd0(systemd)
# | -b> dh-exec -r> debhelper -r> man-db -r> bsdmainutils -r> bsdutils -r> -----/
# | -b> quilt -r> bsdmainutils -r> bsdutils -r> --------------------------/

File diff suppressed because it is too large Load Diff