new Python 3.7 Status

This commit is contained in:
Andreas Billmeier 2019-11-06 14:20:57 +01:00
parent 6bee486379
commit f849c2fb34
Signed by: onkelbeh
GPG Key ID: E6DB12C8C550F3C0
7 changed files with 122 additions and 298 deletions

119
README.md
View File

@ -1,18 +1,16 @@
Home Assistant Gentoo Overlay
=============================
# Home Assistant Gentoo Overlay
Home Assistant without Docker & Virtual Environments
----------------------------------------------------
##Home Assistant without Docker & Virtual Environments
https://www.home-assistant.io/
https://github.com/home-assistant/home-assistant
"Open source home automation that puts local control and privacy first."
##Source
This was fork of https://cgit.gentoo.org/user/lmiphay.git/tree/app-misc/homeassistant-bin which seemed unmaintained to me, at first I just wanted to compile it for my personal use. This happed at 0.77 in September 2018. Some friends told me they wanted to use/see it, so i putted it on my gitea, and was caught by surprise of several hundred pageviews in the very first days. Try to keep it close to the official releases, might get slower during summer. After 3 months it had ~170 ebuilds, now (Nov 2019) > 1069 ebuilds in > 700 packages listed.
[Python 3.7 Migration](https://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/master/python3_7.md).
##ESPHome
Aside from Home Assistant it contains some related ebuilds I use with my Home Assistant:
* esphome (soon i'll throw away Tasmota...), thanks to Otto Winter for his fabulous idea and great work (https://github.com/esphome/esphome), really cool stuff, a bit complicated to get it started (mostly with DNS, it uses a weird *.local architecture, imho for mDNS, too complex for me to run it across Vlans), but as soon you got it running, a lot of ESP devices are very easy to deploy. It's integration in Home Assistant is easy and reacts fast on state changes. I begin to love it's Integration in Home Assistant, you have one single point where you define and name a switch or a sensor (instead of > three points using MQTT). Together with the possibility of OTA updates my sensors will have a unique name all over the system, and names can be changed very easily. In the meantime i migrated all my Magichome Controllers, very happy with it, and i have a couple of binary input arrays running with it without any problems. However, my Sonoff POW and POW R2 are still running with Tasmota.
@ -21,15 +19,111 @@ Aside from Home Assistant it contains some related ebuilds I use with my Home As
Since homeassistant-0.95.0_beta0 `esphome-1.13.6` can be run again in the same environment with homeassistant, because homeassistant does not insist on `dev-python/pyyaml-3.13` anymore.
esphome-1.14.1 wit platformio-4.0.3-r2 can be run on Python 3.7
If you have questions or suggestions don't hesitate to contact me, anyhelp is very welcome.
#### You will find this Repository at
## Git Server & Mirrors
You will find this Repository at
| Location | Web | Clone me here |
| ------ | ------ | ------ |
| Main | https://git.edevau.net/onkelbeh/HomeAssistantRepository | https://git.edevau.net/onkelbeh/HomeAssistantRepository.git |
| Mirror | https://github.com/onkelbeh/HomeAssistantRepository | https://github.com/onkelbeh/HomeAssistantRepository.git |
#### Installation is pretty easy:
Sure, you can file issues and pull requests on both sites
## Installation on Python 3.7
Home assistant will drop support for Python 3.6 with the first release after December 15, 2019:
- https://github.com/home-assistant/home-assistant/pull/27680
- https://github.com/home-assistant/architecture/blob/master/adr/0002-minimum-supported-python-version.md
First add the Overlay to `/etc/portage/repos.conf/homeassistant.conf`, make sure not to interfere with your gentoo repo, which is at `/usr/portage/gentoo` in my boxes, becaus\
e i _always_ have more than one repo active by default:
```
[HomeAssistantRepository]
location = /usr/portage/homeassistant
sync-type = git
sync-uri = https://git.edevau.net/onkelbeh/HomeAssistantRepository.git
auto-sync = yes
sync-rsync-verify-metamanifest = no
```
Sync it:
```sh
$ emerge --sync
```
Make sure you have a proper locale setting. I use
```sh
$ cat /etc/locale.gen
de_DE ISO-8859-1
de_DE@euro UTF-8
```
It will make things easier if you take the example files from `/etc/portage/package.accept_keywords/99_homeassistant` and `/etc/portage/package.use/60_homeassistant` and copy it to your `/etc/portage`, a lot of unstable ebuilds are needed, because some of the stable versions do *not* support Python 3.7.
Edit your `/etc/portage/make.conf` to set the new Python Targets:
```sh
USE_PYTHON="3.7 3.6 2.7"
# PYTHON_TARGETS="python3_7 python3_6 python2_7"
PYTHON_TARGETS="python3_7"
PYTHON_SINGLE_TARGET="python3_7"
```
Install it (as root)
```sh
$ emerge -tav app-misc/homeassistant
$ rc-update add homeassistant
```
## Upgrading to Python 3.7
Take the example files from `/etc/portage/package.accept_keywords/99_homeassistant` and `/etc/portage/package.use/60_homeassistant` and copy\
it to your `/etc/portage`, a lot of unstable ebuilds are needed, because some of the stable versions do *not* support Python 3.7. These files reflect some modules i use, adjust them to your needs.
Make sure your system is up to date:
```sh
$ emerge -tauvDUN @world
```
Install Python 3.7:
```sh
$ emerge -tav dev-lang/python:3.7
```
Edit your `/etc/portage/make.conf` to set the new Python Targets:
```sh
USE_PYTHON="3.7 3.6 2.7"
PYTHON_TARGETS="python3_7 python3_6"
PYTHON_SINGLE_TARGET="python3_7"
```
Run the Update:
```sh
# emerge --depclean
# emerge -1vUD @world
# emerge --depclean
```
Edit your `/etc/portage/make.conf` to remove old Python Targets:
```sh
USE_PYTHON="3.7 3.6 2.7"
PYTHON_TARGETS="python3_7"
PYTHON_SINGLE_TARGET="python3_7"
```
Run the Update again:
```sh
# emerge --depclean
# emerge -1vUD @world
# emerge --depclean
```
I had a lot of dependencies portage didn't respect, in some cases it seems not to know in which Python's site-packages modules are already installed. Install them manually (after compile errors). Once all packages are updated, you can remove the older targets in `package.use` and run another upgrade to remove support for Python 3.6.
Tools that might help:
```sh
$ eix --installed-with-use python_targets_python3_6
```
If you are clean, feel free to remove Python 3.6 (which i dod not yet).
## Installation on Python 3.6 (deprecated)
Installation is pretty easy:
First add the Overlay to `/etc/portage/repos.conf/homeassistant.conf`, make sure not to interfere with your gentoo repo, which is at `/usr/portage/gentoo` in my boxes, because i _always_ have more than one repo active by default:
```
@ -51,12 +145,12 @@ $ cat /etc/locale.gen
de_DE ISO-8859-1
de_DE@euro UTF-8
```
Take a look at [Python 3.7 Migration](https://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/master/python3_7.md).
Additional information can be found at https://wiki.gentoo.org/wiki//etc/portage/repos.conf.
Let me know if any initial depencies are missing, since i do not use all of the components myself, last good (full) compile test was August 3rd, 2019 with v0.97.0_beta1, while changing gentoo's profile to 17.1.
### Todos
## Todos
- **If it moves, compile it** :-)
- try/test this all with Python 3.7
- Add libraries if i need it or someone asks for
@ -64,7 +158,7 @@ Let me know if any initial depencies are missing, since i do not use all of the
- Write an installation page for the home-assistant.io Documentation an get it added.
- Convince more people to not run Home Assistant with Docker (see https://xkcd.com/1988/)
### some Background...
## some Background...
I have Home Assistant running on a virtual X64 box, 4GB RAM, 4 Cores of an older Xeon E5-2630 v2 @ 2.60GHz and 10GB Disk from a small FC SAN (HP MSA). Recorder writes to a separate mariadb machine, currently 10.3.16 without problems.
@ -96,6 +190,7 @@ Most of my devices are still connected via Eclipse Mosquitto (https://mosquitto.
* Axis Camera (1, a few more to come sometimes)
* yr.no weather (best reliable forecast you can get for low money) (https://www.yr.no/)
## Privacy
I have **no** Google, Amazon or Apple involved in my privacy (at least in this case) and I am not planning to let them in.
* Tried to get all Python installed systemwide under Gentoo's package management and keeping `/etc/homeassistant/deps` as small as possible.
@ -105,7 +200,7 @@ I have **no** Google, Amazon or Apple involved in my privacy (at least in this c
* python-3.6.9 is set as default target, also 2.7.16 is installed on my test server.
* Due to Home Assitant's architecture strategies we cannot wait any longer for a stable Python 3.7: [Python 3.7 Migration](https://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/master/python3_7.md)
### Licenses
## Licenses
The Repository itself is released under GPL-3, all work on the depending components under the Licenses they came from, which could be (as my grep told me):

View File

@ -25,7 +25,7 @@ EBUILD homeassistant-0.100.3.ebuild 11984 BLAKE2B dc24b2f4bd876d0850401f0910f27d
EBUILD homeassistant-0.101.0.ebuild 12006 BLAKE2B 2cde2aa0d25d8a4721e196e05754d11055544e61b1b7151a28d98fd6228018d13abc4ef63ccb897fb87d1d63a22553c94a083fb7b49bed463978ac8cd9c71270 SHA512 f23cc3b64d5b014375f2f44dab235a1c529aa1d91765663dd78482e19093ba3c38c6293594b61be7ecf844fe750e62bb58a3d5db1e4392a0b0bf5546521d87d6
EBUILD homeassistant-0.101.1.ebuild 12006 BLAKE2B 2cde2aa0d25d8a4721e196e05754d11055544e61b1b7151a28d98fd6228018d13abc4ef63ccb897fb87d1d63a22553c94a083fb7b49bed463978ac8cd9c71270 SHA512 f23cc3b64d5b014375f2f44dab235a1c529aa1d91765663dd78482e19093ba3c38c6293594b61be7ecf844fe750e62bb58a3d5db1e4392a0b0bf5546521d87d6
EBUILD homeassistant-0.101.2-r3.ebuild 11975 BLAKE2B 834ada779432d5de7e7f0bef35bc43dc7101d784efa507ef907c4a9ba51abab4ef87dc0b6e7775b8e2a34b92f819c72a78b41be7c788dfcb89df69b98b6127d4 SHA512 004a3b21041e5ff50d17982587a70a19cdf95905f6dc07a604663ffa4fe8a4a2a07276f65e1040162a945ccfb5f98d9bfcfb39c6d54e640713104bc8f663c3ad
EBUILD homeassistant-0.101.3.ebuild 11975 BLAKE2B 834ada779432d5de7e7f0bef35bc43dc7101d784efa507ef907c4a9ba51abab4ef87dc0b6e7775b8e2a34b92f819c72a78b41be7c788dfcb89df69b98b6127d4 SHA512 004a3b21041e5ff50d17982587a70a19cdf95905f6dc07a604663ffa4fe8a4a2a07276f65e1040162a945ccfb5f98d9bfcfb39c6d54e640713104bc8f663c3ad
EBUILD homeassistant-0.101.3.ebuild 11974 BLAKE2B 7d8f99e91a3026fb8a6e963f5a3b47824dffd6f00931c2dff8095ecfc7557cfffa004577804dcf04ff1cbee62a2d7b4503b85045d04c3f77d94b8aac2b5e0266 SHA512 067dbcd3750f44e1c8bcc815f904d1ed5759f3c7f2408095320f9dc07b6de791079be5305fd8241059e4ef8eefeb14ed0ab450ea8d403f094e0fda7b22e9bc53
EBUILD homeassistant-0.98.5.ebuild 11614 BLAKE2B 8701e2ee1ccdc026380e4748cf04f21137328abec3c5b79323f4d46da06ad38aba4951d66c75a7643805095ff9f35b6fc8ed540124929f706af5f081e040ff6a SHA512 256465b32eaaad6f7a05ac3244b327325f803c652b8ed27ababb2192a1fb92810dc9d858783afb95fecbb89fcbec5b6c04c475137d42cbeb6a0b93203622bbde
EBUILD homeassistant-0.99.2-r1.ebuild 11616 BLAKE2B 33eddd4d8bb93c40be90ae8e11bdc5d9d32df74e8cd4204a8f81117372800aca53664e9eb88ca729929bbddfd61880fb350592a0f935f43bfea3b22980486adb SHA512 a585fe6cf0aeb8300cf685c1be475f02a3629b46d54987ce5114811d4a5da136584a7febd8682f83081ab1d5c94e21bc4a5b247ee671da5666709245e4ad16d9
EBUILD homeassistant-0.99.3-r1.ebuild 11670 BLAKE2B 4ba7f41bab710e76626c2a88e1a68eabfcced5ae602a042b529d2bdd2519d850aaa3c74ffda94883d7167ed350f0397d229174f3b65ed07da58228fec9a2e2d4 SHA512 bbcc1c24b9b0ee278fe266d97e54db36000fb0d93c9590a7e76bf2b2cc2bfd1a8988e27441a31289271d1e4235b0897b1c61f2e952ec78d6bc24f6a82b0e941e

View File

@ -162,7 +162,7 @@ RDEPEND="${PYTHON_DEPS}
roku? ( ~dev-python/roku-3.1[${PYTHON_USEDEP}] )
rxv? ( =dev-python/rxv-0.6.0[${PYTHON_USEDEP}]
~dev-python/defusedxml-0.6.0[${PYTHON_USEDEP}] )
samsungtv? ( >=dev-python/samsungctl-0.7.1[${PYTHON_USEDEP}] )
samsungtv? ( =dev-python/samsungctl-0.7.1[${PYTHON_USEDEP}] )
sma? ( ~dev-python/pysma-0.3.4[${PYTHON_USEDEP}] )
socat? ( net-misc/socat )
sonos? ( >=dev-python/pysonos-0.0.24[${PYTHON_USEDEP}] )

View File

@ -1,4 +1,4 @@
=dev-embedded/esphome-1.14.1-r1 ~amd64
=dev-embedded/esphome-1.14.1 ~amd64
=dev-embedded/esptool-2.7-r1 ~amd64
=dev-embedded/platformio-4.0.3-r2
=dev-python/bottle-0.12.16 ~amd64

View File

@ -1,9 +1,6 @@
=app-crypt/acme-0.32.0 ~amd64
=app-crypt/certbot-0.29.1 ~amd64
=app-misc/esphomeyaml-1.10.1 ~amd64
=app-portage/gemato-14.3 ~amd64
=dev-embedded/esphome-9999 ~amd64
=dev-embedded/esptool-2.7 ~amd64
=dev-embedded/platformio-4.0.3 ~amd64
=dev-lang/python-3.7.5-r1 ~amd64
=dev-libs/xml-security-c-2.0.2-r1 ~amd64
@ -31,11 +28,11 @@
=dev-python/astral-1.10.1 ~amd64
=dev-python/async_timeout-3.0.0 ~amd64
=dev-python/async-upnp-client-0.14.3 ~amd64
=dev-python/attrs-19.2.0 ~amd64
~dev-python/attrs-19.2.0-r1 ~amd64
=dev-python/bcrypt-3.1.7 ~amd64
=dev-python/beautifulsoup-4.8.1 ~amd64
=dev-python/bimmer-connected-0.5.3 ~amd64
=dev-python/blessings-1.7 ~amd64
=dev-python/blinkpy-0.14.2 ~amd64
~dev-python/boto3-1.9.233 ~amd64
=dev-python/botocore-1.12.115 ~amd64
@ -57,8 +54,7 @@
=dev-python/coverage-4.5.2-r1 ~amd64
=dev-python/cryptography-2.8 ~amd64
=dev-python/curve25519-donna-1.3 ~amd64
=dev-python/cython-0.29.13 ~amd64
=dev-python/cython-0.29.1 ~amd64
=dev-python/cython-0.29.14 ~amd64
=dev-python/dateparser-0.7.1 ~amd64
=dev-python/discord-py-1.2.2 ~amd64
=dev-python/distro-1.4.0 ~amd64
@ -100,12 +96,13 @@
=dev-python/libusb1-1.7 ~amd64
=dev-python/lomond-0.1.14 ~amd64
=dev-python/lxml-4.3.3 ~amd64
=dev-python/mako-1.0.7 ~amd64
~dev-python/markupsafe-1.0 ~amd64
=dev-python/Mastodon-py-1.4.5 ~amd64
=dev-python/maxcube-api-0.1.0 ~amd64
=dev-python/multidict-4.5.2 ~amd64
=dev-python/netdisco-2.6.0 ~amd64
=dev-python/numpy-1.17.3-r1 ~amd64
~dev-python/numpy-1.17.3 ~amd64
=dev-python/openwebifpy-3.1.1 ~amd64
=dev-python/open-zwave-hass-0.1.4 ~amd64
=dev-python/OPi-GPIO-0.3.6 ~amd64
@ -126,7 +123,6 @@
=dev-python/PyChromecast-4.0.1 ~amd64
=dev-python/pycparser-2.19 ~amd64
=dev-python/pycryptodome-3.7.3 ~amd64
=dev-python/pydispatcher-2.0.5-r1 ~amd64
=dev-python/pydispatcher-2.1.2 ~amd64
=dev-python/pyelftools-0.25 ~amd64
=dev-python/PyFronius-0.4.6 ~amd64
@ -142,6 +138,8 @@
=dev-python/pyotp-2.3.0 ~amd64
=dev-python/pypandoc-1.4 ~amd64
=dev-python/pyparsing-2.4.0 ~amd64
=dev-python/pypy3-7.2.0-r1 ~amd64
=dev-python/pypy-7.2.0 ~amd64
=dev-python/PyQRCode-1.2.1 ~amd64
=dev-python/pyrsistent-0.14.4 ~amd64
=dev-python/pyserial-3.4 ~amd64
@ -172,7 +170,7 @@
=dev-python/RPi-GPIO-0.6.5 ~amd64
=dev-python/rsa-4.0 ~amd64
=dev-python/ruamel-yaml-0.15.100 ~amd64
=dev-python/samsungctl-0.8.0_beta0 ~amd64
=dev-python/samsungctl-0.7.1 ~amd64
=dev-python/semantic_version-2.8.2 ~amd64
=dev-python/setuptools-41.5.1 ~amd64
=dev-python/setuptools_scm-1.15.7 ~amd64
@ -196,7 +194,6 @@ dev-python/sphinx_rtd_theme ~amd64
=dev-python/tellduslive-0.10.10 ~amd64
=dev-python/text-unidecode-1.3 ~amd64
=dev-python/toml-0.10.0 ~amd64
=dev-python/toml-0.9.6 ~amd64
=dev-python/total-connect-client-0.28 ~amd64
=dev-python/tox-3.12.1 ~amd64
=dev-python/tox-travis-0.11 ~amd64
@ -228,4 +225,6 @@ dev-python/sphinx_rtd_theme ~amd64
~dev-python/zope-interface-4.6.0 ~amd64
=media-libs/mutagen-1.42.0 ~amd64
=sys-apps/portage-2.3.78-r2 ~amd64
=virtual/pypy3-7.2.0 ~amd64
=virtual/pypy-7.2.0 ~amd64
=www-servers/tornado-5.1.1 ~amd64

View File

@ -1,203 +1,6 @@
app-misc/homeassistant androidtv darksky enigma esphome fronius growl musiccast mikrotik mysql mqtt tradfri rxv samsungtv socat sonos ssl atv maxcube frontend qnap z-wave
app-misc/homeassistant androidtv darksky enigma esphome fronius growl musiccast mikrotik mysql mqtt tradfri rxv samsungtv socat sonos ssl atv maxcube frontend qnap wwlln z-wave
dev-lang/python sqlite
dev-libs/libxslt python
dev-python/sqlalchemy mysql sqlite
dev-python/pytest-mock PYTHON_TARGETS: -* python3_7
app-crypt/acme PYTHON_TARGETS: -* python3_7
app-crypt/certbot PYTHON_TARGETS: -* python3_7
app-misc/home-assistant-cli PYTHON_TARGETS: -* python3_7
app-misc/home-assistant-frontend PYTHON_TARGETS: -* python3_7
app-misc/homeassistant PYTHON_TARGETS: -* python3_7
dev-libs/gobject-introspection PYTHON_TARGETS: -* python3_7
media-gfx/graphviz PYTHON_TARGETS: -* python3_7
media-libs/mutagen PYTHON_TARGETS: -* python3_7
net-analyzer/speedtest-cli PYTHON_TARGETS: -* python3_7
virtual/mysql PYTHON_TARGETS: -* python3_7
virtual/python-cffi PYTHON_TARGETS: -* python3_7
dev-python/abodepy PYTHON_TARGETS: -* python3_7
dev-python/adb-shell PYTHON_TARGETS: -* python3_7
dev-python/aioasuswrt PYTHON_TARGETS: -* python3_7
dev-python/aiocoap PYTHON_TARGETS: -* python3_7
dev-python/aioesphomeapi PYTHON_TARGETS: -* python3_7
dev-python/aioharmony PYTHON_TARGETS: -* python3_7
dev-python/aiohttp-cors PYTHON_TARGETS: -* python3_7
dev-python/aiohue PYTHON_TARGETS: -* python3_7
dev-python/aiounify PYTHON_TARGETS: -* python3_7
dev-python/aiowwlln PYTHON_TARGETS: -* python3_7
dev-python/androidtv PYTHON_TARGETS: -* python3_7
dev-python/aresponses PYTHON_TARGETS: -* python3_7
dev-python/asn1crypto PYTHON_TARGETS: -* python3_7
dev-python/astral PYTHON_TARGETS: -* python3_7
dev-python/async_timeout PYTHON_TARGETS: -* python3_7
dev-python/attrs PYTHON_TARGETS: -* python3_7
dev-python/aurorapy PYTHON_TARGETS: -* python3_7
dev-python/avea PYTHON_TARGETS: -* python3_7
dev-python/bcrypt PYTHON_TARGETS: -* python3_7
dev-python/beautifulsoup PYTHON_TARGETS: -* python3_7
dev-python/bellows-homeassistant PYTHON_TARGETS: -* python3_7
dev-python/blinkpy PYTHON_TARGETS: -* python3_7
dev-python/boto3 PYTHON_TARGETS: -* python3_7
dev-python/botocore PYTHON_TARGETS: -* python3_7
dev-python/buienradar PYTHON_TARGETS: -* python3_7
dev-python/caldav PYTHON_TARGETS: -* python3_7
dev-python/casttube PYTHON_TARGETS: -* python3_7
dev-python/cdu PYTHON_TARGETS: -* python3_7
#dev-python/certifi PYTHON_TARGETS: -* python3_7
dev-python/cffi PYTHON_TARGETS: -* python3_7
dev-python/chardet PYTHON_TARGETS: -* python3_7
dev-python/ciscomobilityexpress PYTHON_TARGETS: -* python3_7
dev-python/click-log PYTHON_TARGETS: -* python3_7
dev-python/click PYTHON_TARGETS: -* python3_7
dev-python/colorlog PYTHON_TARGETS: -* python3_7
dev-python/configargparse PYTHON_TARGETS: -* python3_7
dev-python/configobj PYTHON_TARGETS: -* python3_7
dev-python/contextvars PYTHON_TARGETS: -* python3_7
dev-python/convertdate PYTHON_TARGETS: -* python3_7
dev-python/cookies PYTHON_TARGETS: -* python3_7
dev-python/cryptography PYTHON_TARGETS: -* python3_7
dev-python/curve25519-donna PYTHON_TARGETS: -* python3_7
dev-python/dateparser PYTHON_TARGETS: -* python3_7
dev-python/decorator PYTHON_TARGETS: -* python3_7
dev-python/defusedxml PYTHON_TARGETS: -* python3_7
dev-python/denonavr PYTHON_TARGETS: -* python3_7
dev-python/distro PYTHON_TARGETS: -* python3_7
dev-python/docopt PYTHON_TARGETS: -* python3_7
dev-python/docutils PYTHON_TARGETS: -* python3_7
dev-python/dtlssocket PYTHON_TARGETS: -* python3_7
dev-python/ecdsa PYTHON_TARGETS: -* python3_7
dev-python/ed25519 PYTHON_TARGETS: -* python3_7
dev-python/envoy-reader PYTHON_TARGETS: -* python3_7
dev-python/envs PYTHON_TARGETS: -* python3_7
dev-python/ephem PYTHON_TARGETS: -* python3_7
dev-python/future PYTHON_TARGETS: -* python3_7
dev-python/gntp PYTHON_TARGETS: -* python3_7
dev-python/gpiozero PYTHON_TARGETS: -* python3_7
dev-python/gTTS-token PYTHON_TARGETS: -* python3_7
dev-python/guzzle_sphinx_theme PYTHON_TARGETS: -* python3_7
dev-python/hass-nabucasa PYTHON_TARGETS: -* python3_7
dev-python/hbmqtt PYTHON_TARGETS: -* python3_7
dev-python/homeassistant-pyozw PYTHON_TARGETS: -* python3_7
dev-python/homekit-python PYTHON_TARGETS: -* python3_7
dev-python/homematicip PYTHON_TARGETS: -* python3_7
dev-python/idna PYTHON_TARGETS: -* python3_7
dev-python/idna-ssl PYTHON_TARGETS: -* python3_7
dev-python/ifaddr PYTHON_TARGETS: -* python3_7
dev-python/immutables PYTHON_TARGETS: -* python3_7
dev-python/importlib-metadata PYTHON_TARGETS: -* python3_7
dev-python/jdatetime PYTHON_TARGETS: -* python3_7
dev-python/jinja PYTHON_TARGETS: -* python3_7
dev-python/jmespath PYTHON_TARGETS: -* python3_7
dev-python/josepy PYTHON_TARGETS: -* python3_7
dev-python/jose PYTHON_TARGETS: -* python3_7
dev-python/jsonpath-rw PYTHON_TARGETS: -* python3_7
dev-python/jsonrpc-async PYTHON_TARGETS: -* python3_7
dev-python/jsonrpc-base PYTHON_TARGETS: -* python3_7
dev-python/jsonrpc-websocket PYTHON_TARGETS: -* python3_7
dev-python/librouteros PYTHON_TARGETS: -* python3_7
dev-python/lxml PYTHON_TARGETS: -* python3_7
dev-python/maxcube-api PYTHON_TARGETS: -* python3_7
dev-python/multidict PYTHON_TARGETS: -* python3_7
dev-python/mysqlclient PYTHON_TARGETS: -* python3_7
dev-python/mysql-python PYTHON_TARGETS: -* python3_7
dev-python/namespace-google PYTHON_TARGETS: -* python3_7
dev-python/netdisco PYTHON_TARGETS: -* python3_7
dev-python/netifaces PYTHON_TARGETS: -* python3_7
dev-python/nose PYTHON_TARGETS: -* python3_7
dev-python/numpy PYTHON_TARGETS: -* python3_7
# dev-python/olefile PYTHON_TARGETS: -* python3_7
dev-python/openwebifpy PYTHON_TARGETS: -* python3_7
dev-python/openwrt-luci-rpc PYTHON_TARGETS: -* python3_7
dev-python/paho-mqtt PYTHON_TARGETS: -* python3_7
dev-python/passlib PYTHON_TARGETS: -* python3_7
dev-python/pbr PYTHON_TARGETS: -* python3_7
dev-python/pillow PYTHON_TARGETS: -* python3_7
dev-python/protobuf-python PYTHON_TARGETS: -* python3_7
dev-python/psutil PYTHON_TARGETS: -* python3_7
dev-python/pubnubsub-handler PYTHON_TARGETS: -* python3_7
dev-python/pure-python-adb-homeassistant PYTHON_TARGETS: -* python3_7
dev-python/pyasn1 PYTHON_TARGETS: -* python3_7
dev-python/pyatmo PYTHON_TARGETS: -* python3_7
dev-python/pyatv PYTHON_TARGETS: -* python3_7
dev-python/PyChromecast PYTHON_TARGETS: -* python3_7
dev-python/pycparser PYTHON_TARGETS: -* python3_7
dev-python/pycryptodome PYTHON_TARGETS: -* python3_7
dev-python/pycrypto PYTHON_TARGETS: -* python3_7
dev-python/pydaikin PYTHON_TARGETS: -* python3_7
dev-python/pydispatcher PYTHON_TARGETS: -* python3_7
dev-python/pyeverlights PYTHON_TARGETS: -* python3_7
dev-python/PyFronius PYTHON_TARGETS: -* python3_7
dev-python/pygraphviz PYTHON_TARGETS: -* python3_7
dev-python/pyhaversion PYTHON_TARGETS: -* python3_7
dev-python/pyheos PYTHON_TARGETS: -* python3_7
dev-python/pyhomematic PYTHON_TARGETS: -* python3_7
dev-python/pyHS100 PYTHON_TARGETS: -* python3_7
dev-python/pyjwt PYTHON_TARGETS: -* python3_7
dev-python/pymusiccast PYTHON_TARGETS: -* python3_7
dev-python/pynacl PYTHON_TARGETS: -* python3_7
dev-python/pyotp PYTHON_TARGETS: -* python3_7
dev-python/PyQRCode PYTHON_TARGETS: -* python3_7
dev-python/pyrfc3339 PYTHON_TARGETS: -* python3_7
dev-python/pysma PYTHON_TARGETS: -* python3_7
dev-python/pysmi PYTHON_TARGETS: -* python3_7
dev-python/pysnmp PYTHON_TARGETS: -* python3_7
dev-python/pysonos PYTHON_TARGETS: -* python3_7
dev-python/python-dateutil PYTHON_TARGETS: -* python3_7
dev-python/python-forecastio PYTHON_TARGETS: -* python3_7
dev-python/python-hpilo PYTHON_TARGETS: -* python3_7
dev-python/python-jose-cryptodome PYTHON_TARGETS: -* python3_7
dev-python/python-miio PYTHON_TARGETS: -* python3_7
dev-python/python-slugify PYTHON_TARGETS: -* python3_7
dev-python/pytradfri PYTHON_TARGETS: -* python3_7
dev-python/pytz PYTHON_TARGETS: -* python3_7
dev-python/pyubee PYTHON_TARGETS: -* python3_7
dev-python/pyvera PYTHON_TARGETS: -* python3_7
dev-python/pywemo PYTHON_TARGETS: -* python3_7
dev-python/pyyaml PYTHON_TARGETS: -* python3_7
dev-python/qnapstats PYTHON_TARGETS: -* python3_7
dev-python/requests PYTHON_TARGETS: -* python3_7
dev-python/requests-toolbelt PYTHON_TARGETS: -* python3_7
dev-python/responses PYTHON_TARGETS: -* python3_7
dev-python/RestrictedPython PYTHON_TARGETS: -* python3_7
dev-python/roku PYTHON_TARGETS: -* python3_7
dev-python/rsa PYTHON_TARGETS: -* python3_7
dev-python/ruamel-yaml PYTHON_TARGETS: -* python3_7
dev-python/rxv PYTHON_TARGETS: -* python3_7
dev-python/s3transfer PYTHON_TARGETS: -* python3_7
dev-python/samsungctl PYTHON_TARGETS: -* python3_7
dev-python/shodan PYTHON_TARGETS: -* python3_7
dev-python/six PYTHON_TARGETS: -* python3_7
dev-python/snitun PYTHON_TARGETS: -* python3_7
dev-python/sphinx* PYTHON_TARGETS: -* python3_7
dev-python/sqlalchemy PYTHON_TARGETS: -* python3_7
dev-python/tabulate PYTHON_TARGETS: -* python3_7
dev-python/transitions PYTHON_TARGETS: -* python3_7
dev-python/typing PYTHON_TARGETS: -* python3_7
dev-python/tzlocal PYTHON_TARGETS: -* python3_7
dev-python/ua-parser PYTHON_TARGETS: -* python3_7
dev-python/urllib3 PYTHON_TARGETS: -* python3_7
dev-python/user-agents PYTHON_TARGETS: -* python3_7
dev-python/vobject PYTHON_TARGETS: -* python3_7
dev-python/voluptuous PYTHON_TARGETS: -* python3_7
dev-python/voluptuous-serialize PYTHON_TARGETS: -* python3_7
dev-python/wakeonlan PYTHON_TARGETS: -* python3_7
dev-python/warrant PYTHON_TARGETS: -* python3_7
dev-python/websocket-client PYTHON_TARGETS: -* python3_7
dev-python/websockets PYTHON_TARGETS: -* python3_7
dev-python/wheel PYTHON_TARGETS: -* python3_7
dev-python/withings-api PYTHON_TARGETS: -* python3_7
dev-python/xknx PYTHON_TARGETS: -* python3_7
dev-python/xmltodict PYTHON_TARGETS: -* python3_7
dev-python/yarl PYTHON_TARGETS: -* python3_7
dev-python/youtube_dl PYTHON_TARGETS: -* python3_7
dev-python/zeroconf PYTHON_TARGETS: -* python3_7
dev-python/zha-quirks PYTHON_TARGETS: -* python3_7
dev-python/zigpy-deconz PYTHON_TARGETS: -* python3_7
dev-python/zigpy-homeassistant PYTHON_TARGETS: -* python3_7
dev-python/zigpy-xbee-homeassistant PYTHON_TARGETS: -* python3_7
dev-python/zigpy-zigate PYTHON_TARGETS: -* python3_7
dev-python/zm-py PYTHON_TARGETS: -* python3_7
dev-python/zope-component PYTHON_TARGETS: -* python3_7
dev-python/zope-event PYTHON_TARGETS: -* python3_7
dev-python/zope-interface PYTHON_TARGETS: -* python3_7
dev-libs/libxml2 python_targets_python2_7

View File

@ -1,73 +0,0 @@
# Python 3.7 Support
## Why?
Home assistant will drop support for Python 3.6 with the first release after December 15, 2019:
- https://github.com/home-assistant/home-assistant/pull/27680
- https://github.com/home-assistant/architecture/blob/master/adr/0002-minimum-supported-python-version.md.
This code is already merged in the [dev branch](https://github.com/home-assistant/home-assistant/pull/27680/commits/a5eca20845e6825682d1b01c1be3c9c245b311e1):
if sys.version_info[:3] < (3, 7, 0):
msg = (
"Python 3.6 support is deprecated and will "
"be removed in the first release after December 15, 2019. Please "
"upgrade Python to 3.7.0 or higher."
)
_LOGGER.warning(msg)
hass.components.persistent_notification.async_create(
msg, "Python version", "python_version"
)
- It's a bit extensive, but possible to run Python 3.7 on Gentoo Linux.
- Starting with 0.101.2-r2, i got it running on my testbox.
- A lot of dependencies are fulfilled with ebuilds from the main repository, and a couple of Gentoo's stable ebuilds do not yet have support for Python 3.7.
- The unstable ebuild will grow your `package.accept_keywords` a bit.
## Testbox
The current setup of my testbox: [python37dev](https://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/python37dev). Take a closer look in the [/etc/portage/](https://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/python37dev/etc/portage) folder. It compiles without errors, and Home Assistant starts on `python-3.7.5-r1`, made no other test up to now.
## package.accept_keywords
Except a very few packages, unstable ebuilds are supporting Python 3.7, i have my current package.accept_keywords here: [package.accept_keywords](https://git.edevau.net/onkelbeh/HomeAssistantRepository/raw/branch/python37dev/etc/portage/package.accept_keywords/99_homeassistant). Main repo's packages *without* Python 3.7 support have been copied to my repo & patched.
## package.use
After some experiments, i decided to compile the required modules **only for Python 3.7**. You will find my *current* package.use from the dev branch here: [package.use](https://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/python37dev/etc/portage/package.use). I have a dedicated box for Home Assistant, so this list looks clean, no bigger hacks. It will get more complicated if you have to compile some of the modules for other Python versions.
## Migration
was easier as i thought.
- unlock Python 3.7 code in /etc/portage/profile/use.stable.mask (see example)
` -python_targets_python3_7
-python_single_target_python3_7`
- take [package.accept_keywords](https://git.edevau.net/onkel\
beh/HomeAssistantRepository/raw/branch/python37dev/etc/portage/package.accept_keywords/99_homeassistant) and [package.use](http\
s://git.edevau.net/onkelbeh/HomeAssistantRepository/src/branch/python37dev/etc/portage/package.use) from my dev box and copy it to `/etc/portage`
- install Python 3.7, run `eselect python` to put Python 3.7 on postition 2
- start `emerge --ask --changed-use --deep @world`
- already installed packages could require 2.7 and 3.6 targets, OK, i had to allow 18 of them, we'll clean this up later:
` /etc/portage/package.use/99_local:
>=dev-python/asn1crypto-0.24.0 python_targets_python2_7 python_targets_python3_6
>=dev-python/async_timeout-3.0.1 python_targets_python3_6
=dev-python/attrs-19.2.0 python_targets_python2_7 python_targets_python3_6
>=dev-python/cffi-1.12.2 python_targets_python2_7 python_targets_python3_6
>=dev-python/chardet-3.0.4 python_targets_python3_6
>=dev-python/cryptography-2.8 python_targets_python2_7 python_targets_python3_6
>=dev-python/future-0.17.1 python_targets_python2_7 python_targets_python3_6
>=dev-python/idna-2.8 python_targets_python3_6
>=dev-python/idna-ssl-1.1.0 python_targets_python3_6
>=dev-python/lxml-4.3.3 python_targets_python2_7 python_targets_python3_6
>=dev-python/multidict-4.5.2 python_targets_python3_6
>=dev-python/pbr-5.1.3 python_targets_python2_7 python_targets_python3_6
>=dev-python/pycparser-2.19 python_targets_python3_6 python_targets_python2_7
>=dev-python/pyyaml-5.1.2 python_targets_python2_7 python_targets_python3_6
>=dev-python/six-1.12.0 python_targets_python2_7 python_targets_python3_6
>=dev-python/yarl-1.3.0 python_targets_python3_6
>=dev-python/zope-interface-4.6.0 python_targets_python2_7 python_targets_python3_6`
- emerge/portage does not know in which Python's site-packages modules are already installed, some could still be missing in Python 3.7's site-packages, install them manually (after compile errors), in my case i had to install:
- pyyaml
- setuptools
- setuptools_scm
- restart `emerge --ask --changed-use --deep @world` after adding the missing tools and libraries
- Once all packages are updated, you can remove the older targets in `package.use` and run another upgrade to remove support for Python 3.6.