# Maintainer: Jo Bates <jo@valvesoftware.com>
# Maintainer: Manuel A. Fernandez Montecelo <mafm@igalia.com>

pkgname=vpower
pkgver=1.5.7
pkgrel=2
pkgdesc="Service that calculates battery metrics and handles critical battery scenarios"
url=https://gitlab.steamos.cloud/jupiter/vpower
arch=(x86_64)
license=(MIT)
depends=(gcc-libs lm_sensors systemd-sysvcompat)
makedepends=(rust git openssh)
source=("git+ssh://git@gitlab.steamos.cloud/jupiter/vpower.git#tag=$pkgver"
        crate-async-broadcast-0.7.2.tar.gz::https://static.crates.io/crates/async-broadcast/0.7.2/download
        crate-async-channel-2.3.1.tar.gz::https://static.crates.io/crates/async-channel/2.3.1/download
        crate-async-executor-1.13.2.tar.gz::https://static.crates.io/crates/async-executor/1.13.2/download
        crate-async-io-2.4.0.tar.gz::https://static.crates.io/crates/async-io/2.4.0/download
        crate-async-lock-3.4.0.tar.gz::https://static.crates.io/crates/async-lock/3.4.0/download
        crate-async-process-2.3.0.tar.gz::https://static.crates.io/crates/async-process/2.3.0/download
        crate-async-recursion-1.1.1.tar.gz::https://static.crates.io/crates/async-recursion/1.1.1/download
        crate-async-signal-0.2.10.tar.gz::https://static.crates.io/crates/async-signal/0.2.10/download
        crate-async-task-4.7.1.tar.gz::https://static.crates.io/crates/async-task/4.7.1/download
        crate-async-trait-0.1.88.tar.gz::https://static.crates.io/crates/async-trait/0.1.88/download
        crate-atomic-waker-1.1.2.tar.gz::https://static.crates.io/crates/atomic-waker/1.1.2/download
        crate-autocfg-1.4.0.tar.gz::https://static.crates.io/crates/autocfg/1.4.0/download
        crate-bitflags-2.9.1.tar.gz::https://static.crates.io/crates/bitflags/2.9.1/download
        crate-blocking-1.6.1.tar.gz::https://static.crates.io/crates/blocking/1.6.1/download
        crate-cfg-if-1.0.0.tar.gz::https://static.crates.io/crates/cfg-if/1.0.0/download
        crate-cfg_aliases-0.2.1.tar.gz::https://static.crates.io/crates/cfg_aliases/0.2.1/download
        crate-concurrent-queue-2.5.0.tar.gz::https://static.crates.io/crates/concurrent-queue/2.5.0/download
        crate-crossbeam-utils-0.8.21.tar.gz::https://static.crates.io/crates/crossbeam-utils/0.8.21/download
        crate-endi-1.1.0.tar.gz::https://static.crates.io/crates/endi/1.1.0/download
        crate-enumflags2-0.7.11.tar.gz::https://static.crates.io/crates/enumflags2/0.7.11/download
        crate-enumflags2_derive-0.7.11.tar.gz::https://static.crates.io/crates/enumflags2_derive/0.7.11/download
        crate-equivalent-1.0.2.tar.gz::https://static.crates.io/crates/equivalent/1.0.2/download
        crate-errno-0.3.11.tar.gz::https://static.crates.io/crates/errno/0.3.11/download
        crate-event-listener-5.4.0.tar.gz::https://static.crates.io/crates/event-listener/5.4.0/download
        crate-event-listener-strategy-0.5.4.tar.gz::https://static.crates.io/crates/event-listener-strategy/0.5.4/download
        crate-fastrand-2.3.0.tar.gz::https://static.crates.io/crates/fastrand/2.3.0/download
        crate-futures-core-0.3.31.tar.gz::https://static.crates.io/crates/futures-core/0.3.31/download
        crate-futures-io-0.3.31.tar.gz::https://static.crates.io/crates/futures-io/0.3.31/download
        crate-futures-lite-2.6.0.tar.gz::https://static.crates.io/crates/futures-lite/2.6.0/download
        crate-getrandom-0.3.3.tar.gz::https://static.crates.io/crates/getrandom/0.3.3/download
        crate-hashbrown-0.15.3.tar.gz::https://static.crates.io/crates/hashbrown/0.15.3/download
        crate-hermit-abi-0.4.0.tar.gz::https://static.crates.io/crates/hermit-abi/0.4.0/download
        crate-hex-0.4.3.tar.gz::https://static.crates.io/crates/hex/0.4.3/download
        crate-indexmap-2.9.0.tar.gz::https://static.crates.io/crates/indexmap/2.9.0/download
        crate-lazy_static-1.5.0.tar.gz::https://static.crates.io/crates/lazy_static/1.5.0/download
        crate-libc-0.2.172.tar.gz::https://static.crates.io/crates/libc/0.2.172/download
        crate-linux-raw-sys-0.4.15.tar.gz::https://static.crates.io/crates/linux-raw-sys/0.4.15/download
        crate-linux-raw-sys-0.9.4.tar.gz::https://static.crates.io/crates/linux-raw-sys/0.9.4/download
        crate-memchr-2.7.4.tar.gz::https://static.crates.io/crates/memchr/2.7.4/download
        crate-memoffset-0.9.1.tar.gz::https://static.crates.io/crates/memoffset/0.9.1/download
        crate-nix-0.30.1.tar.gz::https://static.crates.io/crates/nix/0.30.1/download
        crate-once_cell-1.21.3.tar.gz::https://static.crates.io/crates/once_cell/1.21.3/download
        crate-ordered-stream-0.2.0.tar.gz::https://static.crates.io/crates/ordered-stream/0.2.0/download
        crate-parking-2.2.1.tar.gz::https://static.crates.io/crates/parking/2.2.1/download
        crate-pin-project-lite-0.2.16.tar.gz::https://static.crates.io/crates/pin-project-lite/0.2.16/download
        crate-piper-0.2.4.tar.gz::https://static.crates.io/crates/piper/0.2.4/download
        crate-polling-3.7.4.tar.gz::https://static.crates.io/crates/polling/3.7.4/download
        crate-proc-macro-crate-3.3.0.tar.gz::https://static.crates.io/crates/proc-macro-crate/3.3.0/download
        crate-proc-macro2-1.0.95.tar.gz::https://static.crates.io/crates/proc-macro2/1.0.95/download
        crate-quote-1.0.40.tar.gz::https://static.crates.io/crates/quote/1.0.40/download
        crate-r-efi-5.2.0.tar.gz::https://static.crates.io/crates/r-efi/5.2.0/download
        crate-rustix-0.38.44.tar.gz::https://static.crates.io/crates/rustix/0.38.44/download
        crate-rustix-1.0.7.tar.gz::https://static.crates.io/crates/rustix/1.0.7/download
        crate-serde-1.0.219.tar.gz::https://static.crates.io/crates/serde/1.0.219/download
        crate-serde_derive-1.0.219.tar.gz::https://static.crates.io/crates/serde_derive/1.0.219/download
        crate-serde_repr-0.1.20.tar.gz::https://static.crates.io/crates/serde_repr/0.1.20/download
        crate-signal-hook-registry-1.4.5.tar.gz::https://static.crates.io/crates/signal-hook-registry/1.4.5/download
        crate-slab-0.4.9.tar.gz::https://static.crates.io/crates/slab/0.4.9/download
        crate-static_assertions-1.1.0.tar.gz::https://static.crates.io/crates/static_assertions/1.1.0/download
        crate-syn-2.0.101.tar.gz::https://static.crates.io/crates/syn/2.0.101/download
        crate-tempfile-3.20.0.tar.gz::https://static.crates.io/crates/tempfile/3.20.0/download
        crate-toml-0.5.8.tar.gz::https://static.crates.io/crates/toml/0.5.8/download
        crate-toml_datetime-0.6.9.tar.gz::https://static.crates.io/crates/toml_datetime/0.6.9/download
        crate-toml_edit-0.22.26.tar.gz::https://static.crates.io/crates/toml_edit/0.22.26/download
        crate-tracing-0.1.41.tar.gz::https://static.crates.io/crates/tracing/0.1.41/download
        crate-tracing-attributes-0.1.28.tar.gz::https://static.crates.io/crates/tracing-attributes/0.1.28/download
        crate-tracing-core-0.1.33.tar.gz::https://static.crates.io/crates/tracing-core/0.1.33/download
        crate-uds_windows-1.1.0.tar.gz::https://static.crates.io/crates/uds_windows/1.1.0/download
        crate-unicode-ident-1.0.18.tar.gz::https://static.crates.io/crates/unicode-ident/1.0.18/download
        crate-wasi-0.14.2+wasi-0.2.4.tar.gz::https://static.crates.io/crates/wasi/0.14.2+wasi-0.2.4/download
        crate-winapi-0.3.9.tar.gz::https://static.crates.io/crates/winapi/0.3.9/download
        crate-winapi-i686-pc-windows-gnu-0.4.0.tar.gz::https://static.crates.io/crates/winapi-i686-pc-windows-gnu/0.4.0/download
        crate-winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz::https://static.crates.io/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download
        crate-windows-sys-0.59.0.tar.gz::https://static.crates.io/crates/windows-sys/0.59.0/download
        crate-windows-targets-0.52.6.tar.gz::https://static.crates.io/crates/windows-targets/0.52.6/download
        crate-windows_aarch64_gnullvm-0.52.6.tar.gz::https://static.crates.io/crates/windows_aarch64_gnullvm/0.52.6/download
        crate-windows_aarch64_msvc-0.52.6.tar.gz::https://static.crates.io/crates/windows_aarch64_msvc/0.52.6/download
        crate-windows_i686_gnu-0.52.6.tar.gz::https://static.crates.io/crates/windows_i686_gnu/0.52.6/download
        crate-windows_i686_gnullvm-0.52.6.tar.gz::https://static.crates.io/crates/windows_i686_gnullvm/0.52.6/download
        crate-windows_i686_msvc-0.52.6.tar.gz::https://static.crates.io/crates/windows_i686_msvc/0.52.6/download
        crate-windows_x86_64_gnu-0.52.6.tar.gz::https://static.crates.io/crates/windows_x86_64_gnu/0.52.6/download
        crate-windows_x86_64_gnullvm-0.52.6.tar.gz::https://static.crates.io/crates/windows_x86_64_gnullvm/0.52.6/download
        crate-windows_x86_64_msvc-0.52.6.tar.gz::https://static.crates.io/crates/windows_x86_64_msvc/0.52.6/download
        crate-winnow-0.7.10.tar.gz::https://static.crates.io/crates/winnow/0.7.10/download
        crate-wit-bindgen-rt-0.39.0.tar.gz::https://static.crates.io/crates/wit-bindgen-rt/0.39.0/download
        crate-zbus-5.7.0.tar.gz::https://static.crates.io/crates/zbus/5.7.0/download
        crate-zbus_macros-5.7.0.tar.gz::https://static.crates.io/crates/zbus_macros/5.7.0/download
        crate-zbus_names-4.2.0.tar.gz::https://static.crates.io/crates/zbus_names/4.2.0/download
        crate-zvariant-5.5.3.tar.gz::https://static.crates.io/crates/zvariant/5.5.3/download
        crate-zvariant_derive-5.5.3.tar.gz::https://static.crates.io/crates/zvariant_derive/5.5.3/download
        crate-zvariant_utils-3.2.0.tar.gz::https://static.crates.io/crates/zvariant_utils/3.2.0/download
       )
sha256sums=('SKIP'
            '435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532'
            '89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a'
            'bb812ffb58524bdd10860d7d974e2f01cc0950c2438a74ee5ec2e2280c6c4ffa'
            '43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059'
            'ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18'
            '63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb'
            '3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11'
            '637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3'
            '8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de'
            'e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5'
            '1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0'
            'ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26'
            '1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967'
            '703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea'
            'baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd'
            '613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724'
            '4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973'
            'd0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28'
            'a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf'
            'ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147'
            'fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79'
            '877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f'
            '976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e'
            '3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae'
            '8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93'
            '37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be'
            '05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e'
            '9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6'
            'f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532'
            '26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4'
            '84b26c544d002229e640969970a2e74021aadf6e2f96372b9c58eff97de08eb3'
            'fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc'
            '7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70'
            'cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e'
            'bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe'
            'd750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa'
            'd26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab'
            'cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12'
            '78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3'
            '488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a'
            '74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6'
            '42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d'
            '9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50'
            'f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba'
            '3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b'
            '96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066'
            'a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f'
            'edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35'
            '02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778'
            '1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d'
            '74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5'
            'fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154'
            'c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266'
            '5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6'
            '5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00'
            '175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c'
            '9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410'
            '8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67'
            'a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f'
            '8ce2b7fc941b3a24138a0a7cf8e858bfc6a992e7978a068a5c760deb0ed43caf'
            'e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1'
            'a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa'
            '3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3'
            '310068873db2c5b3e7659d2cc35d21855dbafa50d1ce336397c666e3cb08137e'
            '784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0'
            '395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d'
            'e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c'
            '89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9'
            '5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512'
            '9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3'
            '5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419'
            'ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6'
            '712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f'
            '1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b'
            '9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973'
            '32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3'
            '09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469'
            '8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b'
            '0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66'
            '240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66'
            '147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78'
            '24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d'
            '589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec'
            'c06928c8748d81b05c9be96aad92e1b6ff01833332f281e8cfca3be4b35fc9ec'
            '6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1'
            '88232b74ba057a0c85472ec1bae8a17569960be17da2d5e5ad30d5efe7ea6719'
            '6969c06899233334676e60da1675740539cf034ee472a6c5b5c54e50a0a554c9'
            '7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97'
            '9d30786f75e393ee63a21de4f9074d4c038d52c5b1bb4471f955db249f9dffb1'
            '75fda702cd42d735ccd48117b1630432219c0e9616bf6cb0f8350844ee4d9580'
            'e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34'
           )

prepare() {
  # Mark crates as already checksummed
  for x in */.cargo_vcs_info.json \
           vpower/Cargo.toml \
           ./winapi-{i686,x86_64}-pc-windows-gnu-0.4.0/.
  do
    echo '{"files":{}}' > "$(dirname "$x")"/.cargo-checksum.json
  done
  rm vpower/Cargo.lock

  # Tell rust to use the pre-vendored crates
  cd vpower
  mkdir -p .cargo
  touch .cargo/config.toml
  if ! grep -E '^\s*\[source\.crates-io\]\s*' .cargo/config.toml
  then
      cat << EOF >> .cargo/config.toml
    [source.crates-io]
    replace-with = "vendored-sources"

    [source.vendored-sources]
    directory = "${srcdir}"
EOF
  fi
}

build() {
  cd vpower
  cargo build --offline --release
}

package() {
  cd vpower
  install -Dm 755 target/release/vpower -t "$pkgdir/usr/lib"
  install -Dm 644 vpower.toml -t "$pkgdir/etc"
  install -Dm 644 vpower.service -t "$pkgdir/usr/lib/systemd/system"
  install -dm 755 "$pkgdir/usr/lib/systemd/system/graphical.target.wants"
  ln -s ../vpower.service "$pkgdir/usr/lib/systemd/system/graphical.target.wants/vpower.service"
}
