aboutsummaryrefslogtreecommitdiff
blob: e6ad1c299ea47cd2b4b33ed19fbcb468046ca930 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI="7"

PYTHON_COMPAT=( python3_7 )

inherit user readme.gentoo-r1 eutils distutils-r1 systemd

MY_PN="${PN/-bin/}"

DESCRIPTION="Home automation platform (Python 3 required)"
HOMEPAGE="https://home-assistant.io"
SRC_URI=""  # pip installs HA version $PV from PyPI

LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64"
IUSE="maint mysql"

PY_HA="3.7"

DEPEND="
	${PYTHON_DEPS}
	!app-misc/homeassistant
	dev-lang/python:${PY_HA}
	dev-python/pip[${PYTHON_USEDEP}]
	dev-python/virtualenv[${PYTHON_USEDEP}]
	mysql? ( dev-python/mysqlclient )
"
RDEPEND="
	${DEPEND}
	app-admin/logrotate
	maint? (
		app-crypt/certbot
		app-crypt/ssl-cert-check
		net-misc/dropbox-uploader
		virtual/logger
	)
"

INSTALL_DIR="/opt/${MY_PN}"

DISABLE_AUTOFORMATTING=1
DOC_CONTENTS="
 The HA interface listens on port 8123 - this _will_ take a minute or two to appear

 hass configuration is in: /etc/${MY_PN}
 For openrc daemon command line arguments are configured in: /etc/conf.d/${MY_PN}

 logging is to: /var/log/${MY_PN}/{server,errors,stdout}.log
 For HA logging configuration see: https://www.home-assistant.io/components/logger/

 The sqlite db is by default in: /etc/${MY_PN}
 To move it after ${MY_PN} has run once and while ${MY_PN} is stopped:
   - add /etc/${MY_PN}/recorder.yaml to /etc/${MY_PN}/configuration.yaml
   - mv /etc/${MY_PN}/home-assistant_v2.db /var/db/${MY_PN}

 support thread at:
	https://community.home-assistant.io/t/gentoo-homeassistant-0-59-2-ebuild/35577

 The script /usr/bin/update-homeassistant can be used to update homeassistant-bin (it keeps
 a backup of the previous virtualenv under /opt). The script is for openrc only at the moment.
"

S="${WORKDIR}"

pkg_setup() {
	enewgroup "${MY_PN}"
	enewuser "${MY_PN}" -1 -1 "$INSTALL_DIR" "${MY_PN}"

	elog "This ebuild requires network access for 'pip install $MY_PN'"
	elog "If the install fails due to name lookup retrying out, then try"
	elog "disabling the portage network-sandbox ; e.g. in /etc/portage/make.conf:"
	elog ""
	elog "FEATURES=\"-network-sandbox\""
	elog ""
	elog "The update-homeassistant script temporally disables the network-sandbox (and can"
	elog "also be used to do an initial install of ${PN})."
}

src_compile() {
	true
}

src_install() {
	dobin "${FILESDIR}/update-homeassistant"

	keepdir "$INSTALL_DIR"

	keepdir "/etc/${MY_PN}"
	insinto "/etc/${MY_PN}"
	doins "${FILESDIR}/recorder.yaml"
	fowners -R "${MY_PN}:${MY_PN}" "/etc/${MY_PN}"

	"python${PY_HA}" -m venv "${D}/$INSTALL_DIR"
	# for no output from pip add: --quiet
	# note the venv has a python3, but no python3.x
	VIRTUAL_ENV="$INSTALL_DIR" "${D}/$INSTALL_DIR/bin/python3" -m pip --no-cache-dir install "${MY_PN}==${PV}" || die
	sed -i "1c#!$INSTALL_DIR/bin/python3" "${D}/$INSTALL_DIR/bin/hass"

	# see: https://github.com/home-assistant/home-assistant/issues/28198#issuecomment-546300192
	VIRTUAL_ENV="$INSTALL_DIR" "${D}/$INSTALL_DIR/bin/python3" -m pip --no-cache-dir install "home-assistant-frontend" || die

	if use mysql ; then
		VIRTUAL_ENV="$INSTALL_DIR" "${D}/$INSTALL_DIR/bin/python3" -m pip --no-cache-dir install "mysqlclient" || die
	fi

	# this has to come after all of the package installs
	fowners -R "${MY_PN}:${MY_PN}" "$INSTALL_DIR"

	newconfd "${FILESDIR}/${MY_PN}.conf.d" "${MY_PN}"
	newinitd "${FILESDIR}/${MY_PN}.init.d" "${MY_PN}"

	insinto /etc/logrotate.d
	newins "${FILESDIR}/${MY_PN}.logrotate" "${MY_PN}"

	keepdir "/var/log/${MY_PN}/old"
	fowners -R "${MY_PN}:${MY_PN}" "/var/log/${MY_PN}"

	keepdir "/var/db/${MY_PN}"
	fowners -R "${MY_PN}:${MY_PN}" "/var/db/${MY_PN}"

	systemd_dounit "${FILESDIR}"/${MY_PN}.service

	readme.gentoo_create_doc
}

pkg_postinst() {
	elog "homeassistant requires python 3.5 (or later)"
	elog ""
	elog "This ebuild installs homeassistant into a virtualenv built for:"
	elog ""
	elog "   python ${PY_HA} (the current python 3.x in gentoo PYTHON_TARGETS)"
	elog ""
	elog "If you have previously run homeassistant with an older version of "
	elog "python, then it is recommended that you do a clean install on moving to"
	elog "python ${PY_HA}."

	readme.gentoo_print_elog
}

pkg_config() {
	"${INSTALL_DIR}/bin/hass" --script ensure_config
}