dj-nitehawk / Hybrid-Inverter-Monitor

Monitoring application for hybrid inverters using the Voltronic communication protocol & JK BMS via USB port.
MIT License
82 stars 23 forks source link

Build documentation #2

Closed Saentist closed 1 year ago

Saentist commented 1 year ago

Is it possible to be added simple steps for building binary needed dependencies etc.

I try to build it on AlpinLinux 32bit without success.

Matching /dev/hidraw* devices with physical devices

#!/bin/bash

FILES=/dev/hidraw*
for f in $FILES
do
  FILE=${f##*/}
  DEVICE="$(cat /sys/class/hidraw/${FILE}/device/uevent | grep HID_NAME | cut -d '=' -f2)"
  printf "%s \t %s\n" $FILE "$DEVICE"
done
dj-nitehawk commented 1 year ago

alpine deps for .net: https://docs.microsoft.com/en-us/dotnet/core/install/linux-alpine

after installing the deps and then .net sdk, try to publish the InverterMon.Server project with following:

dotnet publish -r linux-musl-arm --self-contained

can't help you anymore than that as i don't have a 32bit alpine device to try stuff on.

dj-nitehawk commented 1 year ago

i added an automated build pipeline which produces for a couple of common linux architectures. try them out to see if it works with your arch: https://github.com/dj-nitehawk/Hybrid-Inverter-Monitor/releases/tag/v1.2

Saentist commented 1 year ago

i added an automated build pipeline which produces for a couple of common linux architectures. try them out to see if it works with your arch: https://github.com/dj-nitehawk/Hybrid-Inverter-Monitor/releases/tag/v1.2

ARM 32 bit exist but Linux x86 not ???

wafer:~$ neofetch
       .hddddddddddddddddddddddh.          saen@wafer
      :dddddddddddddddddddddddddd:         ----------
     /dddddddddddddddddddddddddddd/        OS: Alpine Linux v3.16 i686
    +dddddddddddddddddddddddddddddd+       Host: Uknown 1.0
  `sdddddddddddddddddddddddddddddddds`     Kernel: 5.15.54-0-lts
 `ydddddddddddd++hdddddddddddddddddddy`    Uptime: 1 day, 2 hours, 41 mins
.hddddddddddd+`  `+ddddh:-sdddddddddddh.   Packages: 385 (apk)
hdddddddddd+`      `+y:    .sddddddddddh   Shell: ash
ddddddddh+`   `//`   `.`     -sddddddddd   Terminal: /dev/pts/5
ddddddh+`   `/hddh/`   `:s-    -sddddddd   CPU: Intel Celeron 400MHz (1) @ 400MHz
ddddh+`   `/+/dddddh/`   `+s-    -sddddd   GPU: 01:00.0 Trident Microsystems CyberBlade/i1
ddd+`   `/o` :dddddddh/`   `oy-    .yddd   Memory: 24MiB / 486MiB
hdddyo+ohddyosdddddddddho+oydddy++ohdddh
.hddddddddddddddddddddddddddddddddddddh.
 `yddddddddddddddddddddddddddddddddddy`
  `sdddddddddddddddddddddddddddddddds`
    +dddddddddddddddddddddddddddddd+
     /dddddddddddddddddddddddddddd/
      :dddddddddddddddddddddddddd:
       .hddddddddddddddddddddddh.
dj-nitehawk commented 1 year ago

aparrantly dotnet publish does not support building for linux-x86 out of the box. didn't find much clear info on how to do it for 32bit alpine. most likely you'd have to build the whole .net sdk yourself. will keep you posted if i find the proper way to do it.

Saentist commented 1 year ago

Only way as I understand is to use 64bit version to build 32bit Linux binary. https://github.com/dotnet/runtime/issues/7335