]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
debian: add .requires for specifying python3 deps
authorKefu Chai <tchaikov@gmail.com>
Sat, 28 May 2022 09:03:34 +0000 (17:03 +0800)
committerKefu Chai <tchaikov@gmail.com>
Tue, 31 May 2022 11:42:32 +0000 (19:42 +0800)
commitef19547e83e5a159279b11d0876ac24a6c1ebd7e
tree3ee35b24e6756d1d58868fc4bab4a795581b252c
parent23501918dec45c2110d9f2a52d35b870dc0cfba6
debian: add .requires for specifying python3 deps

we use dh_python3 to define subvar of ${python3:Depends} as a part
of the runtime dependencies of python3 packages, like,
ceph-mgr modules named "ceph-mgr-*", python3 bindings named "python3-*".

but unlike python3 bindings of Ceph APIs, the ceph-mgr modules are
not packaged in a typical python way. in other words, they do not
ship a "dist-info" or an "egg-info" directory. instead, we just
install the python scripts into a directory which can be found by
ceph-mgr, by default it is /usr/share/ceph/mgr/dashboard/plugins.

this does not follow the convention of python packaging or
debian packaging policies related to python package. but it
still makes to put these files in this non-convention place, as
they are not supposed to be python packages consumed by the
outer world -- they are but plugins. and should always work
with the same version of ceph-mgr.

the problem is, despite that we have ${python3:Depends} in
the "Depends" field of packages like ceph-mgr-dashboard, dh_python3
is not able to figure out the dependencies by looking at the
installed files. for instance, we have following "Depends" of
ceph-mgr-dashboard:

Depends: ceph-mgr (= 17.0.0-12481-g805d2320-1focal), python3-cherrypy3, python3-jwt, python3-bcrypt, python3-werkzeug, python3-routes

and in the debian/control file we have:

Depends: ceph-mgr (= ${binary:Version}),
         python3-cherrypy3,
         python3-jwt,
         python3-bcrypt,
         python3-werkzeug,
         python3-routes,
         ${misc:Depends},
         ${python:Depends},
         ${shlibs:Depends},

apparently, none of the subvar is materialized to
a non-empty string.

to improve the packaging, in this change:

* drop all subvars from ceph-mgr-*, as they
  are all implemented in pure python.
* add debian/ceph-mgr-*.requires, it's content
  is replicated with the corresponding requirements.txt
  files.
  * add python3-distutils for distutils, as debian
    and its derivatives package non-essetial part of
    distutils into a separate package, see
    https://packages.debian.org/stable/python3-distutils
* add ${python3:Depends} so dh_python3
  can extract the deps from debian/ceph-mgr-*.pydist
* update the rule for "override_dh_python3" target,
  so dh_python3 can pick up the dependencies specified
  in .requires file.
* remove the python3 dependencies not used by
  ceph-mgr from ceph-mgr's "Depends"

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
debian/ceph-mgr-cephadm.requires [new file with mode: 0644]
debian/ceph-mgr-dashboard.requires [new file with mode: 0644]
debian/ceph-mgr-diskprediction-local.requires [new file with mode: 0644]
debian/ceph-mgr-k8sevents.requires [new file with mode: 0644]
debian/ceph-mgr-modules-core.requires [new file with mode: 0644]
debian/ceph-mgr-rook.requires [new file with mode: 0644]
debian/ceph-mgr.requires [new file with mode: 0644]
debian/control
debian/py3dist-overrides
debian/rules