new ebuild generation script + homeassistant-full-2024.11.3 #4126
Open
oo-stef
wants to merge 0 commits from
oo-stef/HomeAssistantRepository:genebuild
into master
pull from: oo-stef/HomeAssistantRepository:genebuild
merge into: onkelbeh:master
No Reviewers
Labels
Clear labels
Bug
Something is not working
Bump/Update
regular Bump/Update request
Cleanup
should take a closer look
Dupe
This issue or pull request already exists
Enhancement
New feature
File Collision
Detected file collision
Forked
Fork as Source Origin
Integration: abode
Integration: acaia
Integration: accuweather
Integration: acmeda
Integration: acomax
Integration: adax
Integration: adguard
Integration: ads
Integration: aemet
Integration: aep_ohio
Integration: aep_texas
Integration: agent_dvr
Integration: airgradient
Integration: airq
Integration: airthings
Integration: airthings_ble
Integration: airtouch5
Integration: airzone
Integration: airzone_cloud
Integration: aladdin_connect
Integration: alarmdecoder
Integration: amazon_polly
Integration: amberelectric
Integration: ambient_network
Integration: ambient_station
Integration: analytics_insights
Integration: androidtv
Integration: androidtv_remote
Integration: anel_pwrctrl
Integration: anova
Integration: anthropic
Integration: aosmith
Integration: apache_kafka
Integration: apcupsd
Integration: appalachianpower
Integration: apple_tv
Integration: apprise
Integration: aprilaire
Integration: aprs
Integration: aps
Integration: apsystems
Integration: aquacell
Integration: aranet
Integration: arcam_fmj
Integration: arris_tg2492lg
Integration: artsound
Integration: arve
Integration: aseko_pool_live
Integration: assist_pipeline
Integration: assist_satellite
Integration: asuswrt
Integration: august
Integration: aurora
Integration: aussie_broadband
Integration: autarco
Integration: aws
Integration: axis
Integration: azure_data_explorer
Integration: azure_devops
Integration: backup
Integration: balboa
Integration: bang_olufsen
Integration: blebox
Integration: blink
Integration: blue_current
Integration: bluesound
Integration: bluetooth
Integration: bmw_connected_drive
Integration: bosch_shc
Integration: braviatv
Integration: bring
Integration: broadlink
Integration: brother
Integration: brottsplatskartan
Integration: bryant_evolution
Integration: bsblan
Integration: bthome
Integration: buienradar
Integration: caldav
Integration: cambridge_audio
Integration: camera
Integration: canary
Integration: cast
Integration: ccm15
Integration: chacon_dio
Integration: cisco_webex_teams
Integration: cloud
Integration: cloudflare
Integration: co2signal
Integration: coautilities
Integration: coinbase
Integration: comelit
Integration: compensation
Integration: concord232
Integration: control4
Integration: conversation
Integration: cookidoo
Integration: coolmaster
Integration: crownstone
Integration: daikin
Integration: deako
Integration: debugpy
Integration: deconz
Integration: deluge
Integration: denonavr
Integration: devialet
Integration: devolo_home_control
Integration: dhcp
Integration: discord
Integration: discovergy
Integration: dlna_dmr
Integration: dlna_dms
Integration: dnsip
Integration: dominos
Integration: doods
Integration: doorbird
Integration: drop_connect
Integration: dsmr
Integration: duke_energy
Integration: duotecno
Integration: duquesne_light
Integration: dwd_weather_warnings
Integration: easyenergy
Integration: ecobee
Integration: ecoforest
Integration: econet
Integration: ecovacs
Integration: ecowitt
Integration: efergy
Integration: eheimdigital
Integration: electrasmart
Integration: elevenlabs
Integration: elgato
Integration: elkm1
Integration: elmax
Integration: elvia
Integration: emby
Integration: emoncms
Integration: emulated_kasa
Integration: emulated_roku
Integration: energenie_power_sockets
Integration: energyzero
Integration: enigma2
Integration: enphase_envoy
Integration: environment_canada
Integration: envisalink
Integration: epic_games_store
Integration: epion
Integration: eq3btsmart
Integration: esphome
Integration: evohome
Integration: ffmpeg
Integration: fibaro
Integration: fjaraskupan
Integration: flexit_bacnet
Integration: flic
Integration: flick_electric
Integration: flipr
Integration: flux_led
Integration: forecast_solar
Integration: foscam
Integration: freebox
Integration: fritzbox
Integration: fronius
Integration: frontend
Integration: fujitsu_anywair
Integration: fujitsu_fglair
Integration: fully_kiosk
Integration: fyta
Integration: garages_amsterdam
Integration: gardena_bluetooth
Integration: gdacs
Integration: generic
Integration: geo_json_events
Integration: geo_rss_events
Integration: geonetnz_quakes
Integration: geonetnz_volcano
Integration: gios
Integration: github
Integration: glances
Integration: go2rtc
Integration: goodwe
Integration: google
Integration: google_assistant_sdk
Integration: google_cloud
Integration: google_generative_ai_conversation
Integration: google_photos
Integration: google_pubsub
Integration: govee_ble
Integration: govee_light_local
Integration: gree
Integration: growatt_server
Integration: habitica
Integration: harvey
Integration: hassio
Integration: heatmiser
Integration: here_travel_time
Integration: hive
Integration: hko
Integration: holiday
Integration: home_connect
Integration: homekit
Integration: homekit_controller
Integration: homematicip_cloud
Integration: homewizard
Integration: homeworks
Integration: honeywell
Integration: hp_ilo
Integration: html5
Integration: http
Integration: huawei_lte
Integration: hue
Integration: hunterdouglas_powerview
Integration: husqvarna_automower
Integration: husqvarna_automower_ble
Integration: huum
Integration: hydrawise
Integration: iammeter
Integration: ibeacon
Integration: idasen_desk
Integration: ign_sismologia
Integration: image_upload
Integration: imap
Integration: imgw_pib
Integration: incomfort
Integration: indianamichiganpower
Integration: inkbird
Integration: insteon
Integration: intellifire
Integration: iotawatt
Integration: iotty
Integration: ipp
Integration: iqvia
Integration: iron_os
Integration: isal
Integration: iskra
Integration: islamic_prayer_times
Integration: israel_rail
Integration: ista_ecotrend
Integration: ituran
Integration: jewish_calendar
Integration: justnimbus
Integration: jvc_projector
Integration: keba
Integration: kef
Integration: kentuckypower
Integration: keymitt_ble
Integration: knocki
Integration: knx
Integration: kostal_plenticore
Integration: kraken
Integration: krispol
Integration: lacrosse_view
Integration: lamarzocco
Integration: lametric
Integration: launch_library
Integration: laundrify
Integration: lcn
Integration: ld2410_ble
Integration: leaone
Integration: led_ble
Integration: lektrico
Integration: lg_netcast
Integration: lg_thinq
Integration: life360
Integration: lifx
Integration: linear_garage_door
Integration: linkplay
Integration: litejet
Integration: litterrobot
Integration: livisi
Integration: local_calendar
Integration: local_todo
Integration: loqed
Integration: luci
Integration: lupusec
Integration: lutron
Integration: lutron_caseta
Integration: lyric
Integration: madeco
Integration: madvr
Integration: mastodon
Integration: matrix
Integration: matter
Integration: mealie
Integration: media_extractor
Integration: melcloud
Integration: mercury_nz
Integration: met
Integration: met_eireann
Integration: meteo_france
Integration: meteoalarm
Integration: meteoclimatic
Integration: metoffice
Integration: mfi
Integration: microbees
Integration: mill
Integration: minecraft_server
Integration: mini_connected
Integration: modbus
Integration: moehlenhoff_alpha2
Integration: monarch_money
Integration: monzo
Integration: mopeka
Integration: motion_blinds
Integration: motionblinds_ble
Integration: motionmount
Integration: music_assistant
Integration: myuplink
Integration: nam
Integration: nasweb
Integration: neato
Integration: nederlandse_spoorwegen
Integration: ness_alarm
Integration: nest
Integration: netatmo
Integration: netdata
Integration: nexia
Integration: nextbus
Integration: nextcloud
Integration: nextdns
Integration: nibe_heatpump
Integration: nice_go
Integration: niko_home_control
Integration: nina
Integration: nmap_tracker
Integration: nobo_hub
Integration: nordpool
Integration: norway_air
Integration: notion
Integration: nsw_rural_fire_service_feed
Integration: nuki
Integration: numato
Integration: nut
Integration: nws
Integration: nx584
Integration: nyt_games
Integration: ohme
Integration: ollama
Integration: oncue
Integration: ondilo_ico
Integration: onkyo
Integration: onvif
Integration: open_meteo
Integration: openai_conversation
Integration: openerz
Integration: openexchangerates
Integration: opensky
Integration: opentherm_gw
Integration: openweathermap
Integration: opower
Integration: orvibo
Integration: osoenergy
Integration: otbr
Integration: ourgroceries
Integration: overkiz
Integration: ovo_energy
Integration: p1_monitor
Integration: palazzetti
Integration: panasonic_viera
Integration: peblar
Integration: pegel_online
Integration: permobil
Integration: philips_js
Integration: pinecil
Integration: plaato
Integration: plex
Integration: plugwise
Integration: point
Integration: powerfox
Integration: powerwall
Integration: private_ble_device
Integration: prometheus
Integration: proxy
Integration: prusalink
Integration: psoklahoma
Integration: pulseaudio_loopback
Integration: pure_energie
Integration: purpleair
Integration: pvoutput
Integration: pyload
Integration: python_script
Integration: qbittorrent
Integration: qingping
Integration: qld_bushfire
Integration: qnap_qsw
Integration: qrcode
Integration: rabbitair
Integration: rachio
Integration: radio_browser
Integration: rainbird
Integration: rainforest_raven
Integration: rainmachine
Integration: rdw
Integration: recorder
Integration: refoss
Integration: renault
Integration: renson
Integration: reolink
Integration: rflink
Integration: rfxtrx
Integration: ridwell
Integration: ring
Integration: risco
Integration: roborock
Integration: roku
Integration: romy
Integration: roomba
Integration: roon
Integration: route53
Integration: rova
Integration: ruckus_unleashed
Integration: russound_rio
Integration: russound_rnet
Integration: rympro
Integration: samsam
Integration: samsungtv
Integration: sanix
Integration: schlage
Integration: scl
Integration: screenlogic
Integration: season
Integration: sense
Integration: sensibo
Integration: sensorpush
Integration: sensoterra
Integration: sentry
Integration: serial
Integration: seven_segments
Integration: seventeentrack
Integration: sfr_box
Integration: shelly
Integration: sighthound
Integration: signal_messenger
Integration: simplefin
Integration: simplisafe
Integration: sisyphus
Integration: sky_remote
Integration: sleepiq
Integration: slide
Integration: slide_local
Integration: slimproto
Integration: smart_meter_texas
Integration: smarttub
Integration: smarty
Integration: smhi
Integration: smlight
Integration: smud
Integration: snmp
Integration: solaredge
Integration: solarlog
Integration: solax
Integration: songpal
Integration: sonos
Integration: spotify
Integration: sql
Integration: squeezebox
Integration: ssdp
Integration: starlink
Integration: steamist
Integration: stookwijzer
Integration: stream
Integration: subaru
Integration: suez_water
Integration: sunweg
Integration: surepetcare
Integration: swepco
Integration: swiss_public_transport
Integration: switchbee
Integration: switchbot
Integration: switchbot_cloud
Integration: switcher_kis
Integration: syncthru
Integration: synology_dsm
Integration: system_bridge
Integration: tado
Integration: tailwind
Integration: tami4
Integration: tankerkoenig
Integration: tasmota
Integration: technove
Integration: tedee
Integration: telegram_bot
Integration: tellduslive
Integration: temper
Integration: tensorflow
Integration: tesla_fleet
Integration: teslemetry
Integration: tessie
Integration: thermobeacon
Integration: thermopro
Integration: thethingsnetwork
Integration: thread
Integration: tibber
Integration: tile
Integration: tolo
Integration: totalconnect
Integration: touchline_sl
Integration: tplink
Integration: tplink_omada
Integration: tplink_tapo
Integration: traccar
Integration: traccar_server
Integration: tractive
Integration: trafikverket_camera
Integration: trafikverket_ferry
Integration: trafikverket_train
Integration: trafikverket_weatherstation
Integration: transmission
Integration: trend
Integration: triggercmd
Integration: tuya
Integration: twentemilieu
Integration: twinkly
Integration: twitch
Integration: unifi
Integration: unifi_direct
Integration: unifiprotect
Integration: upb
Integration: upc_connect
Integration: upcloud
Integration: upnp
Integration: usgs_earthquakes_feed
Integration: utility_meter
Integration: uvc
Integration: v2c
Integration: vallox
Integration: valve
Integration: velbus
Integration: velux
Integration: vera
Integration: verisure
Integration: vesync
Integration: vicare
Integration: vilfo
Integration: vlc_telnet
Integration: vodafone_station
Integration: voip
Integration: vulcan
Integration: wallbox
Integration: waqi
Integration: watergate
Integration: waze_travel_time
Integration: weatherflow_cloud
Integration: weatherkit
Integration: webmin
Integration: webostv
Integration: weheat
Integration: wemo
Integration: whirlpool
Integration: withings
Integration: wled
Integration: wmspro
Integration: wolflink
Integration: workday
Integration: wyoming
Integration: xbox
Integration: xeoma
Integration: xiaomi_ble
Integration: xmpp
Integration: yale
Integration: yale_smart_alarm
Integration: yalexs_ble
Integration: yandex_transport
Integration: yeelight
Integration: yolink
Integration: youless
Integration: zabbix
Integration: zamg
Integration: zeroconf
Integration: zeversolar
Integration: zha
Integration: zhong_hong
Integration: zondergas
Integration: zoneminder
Integration: zwave_js
New Integration
Python 3.11
no support for Python 3.11 announced
Python 3.12
Python 3.13
Requirement vanished
...from main tree
Source Incomplete
requirements.txt is missing etc
SrcDir ${S} mismatch
The source directory '${S}' doesn't exist
TopLevelViolation
tries to install test/tests etc
Update required
request Update
cherry-picked
full
is used ONLY in 'full' Ebuilds
help wanted
Need some help
invalid
Something is wrong
med
is used in 'med' Ebuilds
min
is used in 'min' Ebuilds
question
More information is needed
requirement
A requirement is wrong or missing
slot-conflict
2 or more deps require different version in the sam slot
virtual
wontfix
This won't be fixed
No Label
Milestone
No items
No Milestone
Assignees
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: onkelbeh/HomeAssistantRepository#4126
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
No description provided.
Delete Branch "oo-stef/HomeAssistantRepository:genebuild"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hi,
I re-wrote the ebuild generation script in Python, with some added features (see below).
I would like to go a bit further in a future version (mainly reducing the installed size homeassistant, removing the integrations and translations that were not configured).
I used this script to generate the ebuild for home assistant-full-2024.11.3 which is included.
I also included the dependencies not yet in the tree that were required for my setup.
genebuild.py is based on genebuild.sh
usage: genebuild.py [-h] [version]
Signed-off-by: Stef Simoens stef.github@bisse.be
thanks, looks promising.
What about integrations that are handled by default_config in the configuration.yaml?
do you handle the required python versions automatically too?
Reducing the size of homeassistant was also something i wanted to test. have you already tested? if yes, how much is the size reduction?
Hello,
there are integrations that are loaded “by default” in bootstrap.py - these (and their requirements) are always pulled in. Examples are “frontend” but also “zone”. See line 204 in the script. And see bootstrap.py.
The integrations in “default_config” are optional but marked with + in the ebuild, so included by default, but they can be disabled by USE=“-dhcp” for example. (cf line 319 in the script).
The generated ebuild can be diff’ed against a previous ebuild. There should be less dependencies, and some dependencies are no longer pinned (e.g. the dependencies present in requirements.txt but in no other integration).
I’m using the 2024.11.3 (ebuild included in this PR as well), and I now have less dependencies and a happier emerge as less packages are pinned.
Regarding the size reduction:
Ideally I would like this PR to be merged before creating the improved script PR.
To answer your last question: this script does NOT list nor create missing dependency ebuilds. I was merging the package and manually adding the not found packages (some versions were already done by @onkelbeh (thanks!) - the missing packages for my config are included in this PR as well).
thanks for the clarifications.
in my case i'm running ha in a readonly filesystem that 8 want to keep small if possible.
in the past, not so long ago, i was only using the pyc files and deleted all the py files. it used to work but something broke after a release, most likely they changed the way they import modules. i was saving 50% of the size.
i also tried in the past to remove integrations that i don't need, but failed (don't remember the details but i think patching ha was necessary)
as long as you don't rely on dynamically added integrations it should be fine(like hacs)
about hacs, i've created a script that intgrates external integrations. I've ebuilds for adaptive lightings and mi-scale. it's very simple to add them but a bit specific to my system (symlinks to ha home folder to the folders were the integrations are installed)
Checkout
From your project repository, check out a new branch and test the changes.