rytilahti / python-miio

Python library & console tool for controlling Xiaomi smart appliances
https://python-miio.readthedocs.io
GNU General Public License v3.0
3.83k stars 563 forks source link

debian package #474

Open josch opened 5 years ago

josch commented 5 years ago

Hi,

I just opened the following Debian ITP https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=921345 and already have some proof-of-concept packaging done. I just wanted to announce here, that I plan to upload python-miio to Debian and maintain it there. As far as I can see nobody else packaged it yet for Debian or Ubuntu? This would avoid having to use virtualenv on Debian and derivatives.

Thanks!

cheers, josch

rytilahti commented 5 years ago

Hi Josch, that sounds great!

As I'm not seeing the dependencies on that wishlist, I'm not sure how many extra dependencies you need to package to make that happen, but if it helps, maybe there is some optimization we can do to simplify things (looking at #423 which is a no-brainer, but maybe others should also be checked). Please let me know if we can be of any help :-)

josch commented 5 years ago

Disabling pretty_cron (for now) was indeed simple and the only other change I did was to move the import of android_backup into the main() function so that it would only be required if a .ab file is encountered. Everything else was already packaged.

josch commented 5 years ago

I just uploaded the package to experimental and it's now waiting to have its copyright information reviewed in the NEW queue:

https://ftp-master.debian.org/new/python-miio_0.4.4-1.html

I split the python-miio source package into a miio-tools and python3-miio binary package.

There is still some trouble with the dependency on construct because python-miio fails to build with the version we currently have in Debian (2.8.16) and requires a newer version of construct (2.9.45). This in itself is no problem, because it was easy to update the Debian construct package from 2.8.16 to 2.9.45. The problem is, that there is another package which depends on construct and which fails to build from source with construct 2.9.45. I am unfamiliar with the construct library, so I reported the problem to construct upstream. If you know how to port ironic-inspector from construct 2.8.16 to 2.9.45 then this would speed up the inclusion of python-miio.

Lastly, here is the relevant part of the copyright file I wrote for python-miio:

Files: *
Copyright: 2017-2019 Teemu Rytilahti <tpr@iki.fi>
           2017-2019 Sebastian Muszynski <basti@linkt.de>
License: GPL-3

Files: miio/vacuum_mapparser.py
Copyright: Julius Vitkauskas <zadintuvas@gmail.com>
License: GPL-3

I only spotted miio/vacuum_mapparser.py during a more detailed review. Are there any other files that are not licensed under GPL3 with copyright by Teemu Rytilahti and Sebastian Muszynski and contributors?

rytilahti commented 5 years ago

If you know how to port ironic-inspector from construct 2.8.16 to 2.9.45 then this would speed up the inclusion of python-miio.

Unfortunately I cannot help you with there. The construct undergo earlier a lot of breaking changes, so depending on how widely the library is used by ironic-inspector, porting it may be a bit more involved than in the case of this library.

Lastly, here is the relevant part of the copyright file I wrote for python-miio:

Looks like the package I've been uploading contains local files that are not supposed to be there, this concerns the miio/vacuum_mapparser.py which I had forgotten to add into a separate branch when I was working on it. The next release (which is likely to be released pretty soon, this week or the next) will not contain that file anymore.

Other than that I think you are on point with the copyrights.

I create a couple of PRs to make packaging easier. I'm also contemplating on dropping the pytz dependency or moving it as an optional one -- it is only used in a single place for a non-common operation.

josch commented 5 years ago

Quoting Teemu R. (2019-02-05 14:04:16)

I create a couple of PRs to make packaging easier. I'm also contemplating on dropping the pytz dependency or moving it as an optional one -- it is only used in a single place for a non-common operation.

As far as Debian is concerned the dependency on pytz is not relevant because it's already packaged and thus doesn't cause any concern. I don't know if pytz is not packaged in other distributions?

josch commented 5 years ago

python-miio is no in Debian experimental: https://tracker.debian.org/pkg/python-miio

To be moved to unstable (and thus get a chance to be part of the next Debian release) I first need to solve the issue with construct.

I got one suggestion from the copyright review: If Sebastian Muszynski is indeed also copyright holder (as listed in the copyright snipped I posted above) then this information should also be reflected somewhere in the upstream (i.e. your) codebase and not only in Debian.

rytilahti commented 5 years ago

Nice to hear it's progressing! Yes, we definitely should add a contributors / authors file, according to git shortlog -s there are in total commits from 29 unique names, most of which have contributed single patches. Most of the commits are from me (164) and @syssi (167), leaving 44 commits from other contributors.