Compile Error Homegear git dev Branch

Hallo,

der Homegear dev Branch läßt sich nicht kompilieren / linken.
Auf dem System fehlen include Verzeichnisse. Und da die letzte Änderung an der Datei schon eine Weile her ist, vermute ich, das man vorher noch ein anderes Paket installieren muss.
Ich habe alle git Sourcen heruntergeladen und nach “nodejs-homegear” durchsucht.
Aber nichts passendes gefunden …

Baut man einen fake, so das die node.h beim Compile gefunden wird, haperts dann beim Link.

Beim Compile:

Nodejs/Nodejs.cpp:32:10: schwerwiegender Fehler: node.h: Datei oder Verzeichnis nicht gefunden
   32 | #include <node.h>
      |          ^~~~~~~~

Beim Link:

-lnodejs-homegear
/usr/bin/ld: cannot find -lnodejs-homegear

Welche Pakete werden benötigt um die fehlenden Dateien nachzuinstallieren?

Es kann ja auch sein, das Module betroffen sind, die nicht quelloffen sind. Das wäre ja auch ok. Aber ich würde erwarten, das man das wenigstens kommuniziert.
Vielleicht kann man ja eine Lizenz käuflich erwerben …

Obwohl auf github reglmäßig Änderungen an den homegear Source vorgenommen werden, reagiert Sathya auf keinerlei Anfragen. Fühlt sich so an, als wolle er einfach nicht mit mir kommunizieren :frowning:

VG
Henning

Hi @fow0ryl,

sieht so aus, als waere Node.js nicht installiert (siehe hier). Aber generell kann es bei der -dev Branch (== nightly) durchaus schon mal vorkommen, dass sich diese nicht uebersetzen laesst … es wird halt aktiv drin entwickelt.

Und keine Angst, sobald es seine Zeit zulaesst wird sich @sathya schon melden.

– Micha

Hallo,

@Micha
Erst mal vielen Dank für die spontane Antwort.
Mit dem “apt-get install nodejs-homegear” kann ich ja auf einem nicht Debian System nichts anfangen. Und auf meinem System gibt es ja auch schon eine nodejs Installation. Aber eben keine spezifische Homegear Variante.

Ich werde mal prüfen ob ich irgendwie beides integrieren kann.

VG
Henning

Hallo @fow0ryl,

wie das Debian-Paket kompiliert wird, findest du hier: Homegear/misc/Scripts/Docker Image Creation/Node.js Build at dev · Homegear/Homegear · GitHub

Im Wesentlichen (rauskopiert aus der rules):

#{{{ Rename libnode to libnodejs-homegear
# This actually renames the library
sed -i 's/libnode/libnodejs-homegear/g' $(CURDIR)/node.gyp
sed -i 's/libnode/libnodejs-homegear/g' $(CURDIR)/deps/npm/node_modules/node-gyp/lib/configure.js
# This only copies the built library. Without this change the script looks for libnode.so.<version>
sed -i "s/output_file = 'node'/output_file = 'nodejs-homegear'/g" $(CURDIR)/tools/install.py
#}}}
mkdir -p $(CURDIR)/build
./configure --shared --prefix $(CURDIR)/build
make install

Viele Grüße

Sathya

Hallo @sathya,

damit schlage ich mich heute schon den ganzen Tag herum …

Sourcen aus git heruntergeladen. Die Patche bzw. die “sed” Befehle habe eingebaut.
Der Compile von nodejs-homegear läuft dann auch durch. Es wird zumindest eine libnodejs-homegear.so.88 gebaut.

Nur das fertige Paket, quasi der “install” aus dem “make install” funktioniert dann nicht :frowning:
Ich weiß noch nicht genau woran es liegt, aber irgendwie möchte das Arch-Linux Paket die Sachen zwingend in das /usr/include/node an Stelle des /usr/include/nodejs-homegear Verzeichnis packen. Und da sind natürlich schon die Dateien der Standard nodejs Installation.

Kann man das .deb Paket für x86_64 eigentlich irgendwie einfach herunterladen?
Dann könnte ich mal vergleichen, ob wenigstens alle notwendigen Dateien da sind…

VG
Henning

https://apt.homegear.eu/Debian/

1 Like

So einfach kann’s sein…

Vielen Dank Patrik

1 Like

Hallo,

ich komme bei der Erstellung des Homegear Paketes einfach nicht weiter.
Damit man mal etwas sehen kann habe ich sowohl den ./configure als auch den make Aufruf etwas umgebaut:

./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc --libdir=/usr/lib 2>&1 | tee config.log 	
make  2>&1 | tee make.log 

Im log vom configure findet sich eine Fehlermeldung, deren Bedeutung ich bislang nicht verstanden habe. config.log (77,3 KB)

Das make scheint danach ohne Fehler durchzulaufen. make.log (43,1 KB)

Das make install geht dann aber kaputt:

make: *** Keine Regel, um „install“ zu erstellen.  Schluss.

Vielleicht kann mich ein Programmierer ja mal auf den richtigen Weg schubsen …

VG
Henning

Hallo,

@Sathya
Es scheint mit der 0.8.0-3269 bei “std::placeholders::3” einen neuen Fehler zu geben.

mv -f $depbase.Tpo $depbase.Po
FamilyModules/FamilyController.cpp: In Elementfunktion »void     Homegear::FamilyController::physicalInterfaceStartListening()«:
FamilyModules/FamilyController.cpp:714:40: Fehler: »using element_type = class   BaseLib::Systems::PhysicalInterfaces« {aka »class BaseLib::Systems::PhysicalInterfaces«} hat kein   Element namens »setRawPacketEvent«
  714 |       i->second->physicalInterfaces()->setRawPacketEvent(std::function<void(int32_t, const  std::string &, const BaseLib::PVariable &)>(std::bind(&FamilyController::rawPacketEvent, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)));
                ^~~~~~~~~~~~~~~~~
make[2]: *** [Makefile:943: FamilyModules/FamilyController.o] Fehler 1
make[2]: *** Es wird auf noch nicht beendete Prozesse gewartet....

Nachdem ich es gestern Abend noch hin bekommen habe, die 0.8.0-3262 zu bauen, wollte ich das noch mal verifizieren.
Zwischenzeitlich war eine Aktualisierung auf 0.8.0-3269 erfolgt. Und genau in dem Modul, das gegen Mitternacht geändert wurde, scheint es jetzt einen Compile Fehler zu geben.

VG
Henning

Hallo @fow0ryl,

die Funktion ist gestern neu dazugekommen. Mit der aktuellen libhomegear-base klappt auch das Kompilieren von Homegear wieder.

Viele Grüße

Sathya

Ok,
ich hatte zwar alles neu kompiliert, aber es wäre denkbar, das libhomegear-base zwar die gleiche Version, aber noch einen etwas älteren commit Stand hatte.
Baue einfach alles noch mal. Dauert auf meinem alten N3700 aber etwas …

VG
Henning

Jetzt werden vermutlich erst einmal keine “Breaking”-Änderungen mehr dazukommen.

Hallo,

es ist mir gelungen eine Reihe von Paketen aus den Quellen zu bauen und zu installieren. Es könnte natürlich sein, das mir die eine oder andere Datei in den Paketen noch fehlt, da ich die Kopierbefehle teilweise händisch einbauen musste. Auf Funktionalität habe ich auch noch nicht getestet.
Aber immerhin …

homegear 0.8.0_3271-1
homegear-management 0.8.0_3271-1
homegear-max 0.8.0_3271-1
homegear-nodejs 0.8.0-1
homegear-nodes-core 0.8.0_3271-1
homegear-nodes-ui 0.8.0_3271-1
homegear-philipshue 0.8.0_3271-1
homegear-homematicbidcos 0.8.0_3271-1
homegear-homematicwired 0.8.0_3271-1
homegear-insteon 0.8.0_3271-1
homegear-intertechno 0.8.0_3271-1
libhomegear-base 0.8.0_3271-1
libhomegear-ipc 0.1.2_43-1
libhomegear-node 0.1.8_58-1
nodejs-homegear 15.6.0-2
php8-homegear 8.0.1-2

Die nachfolgende Pakete habe ich automatisiert aus den nightly’s generiert, weil teilweise die Sourcen nicht verfügbar sind. Sie sind auch nicht ganz so aktuell, da die 3271er deb’s für amd64 noch nicht verfügbar sind.

homegear-adminui 0.8.0_3269-1
homegear-nodes-extra 0.8.0_3269-1
python3-homegear 0.8.0_3269-1
homegear-webssh 0.8.0_3269-2

Beim Bauen von homegear-ui 0.8.0_3271 hänge ich aber wieder fest:
Die Fehlermeldung bezüglich Babel ergibt für mich keinen richtigen Sinn. build.log (4,2 KB)
Und da ich noch nie etwas mit npm, npx, babel zu tun hatte, weiß ich erst mal wieder nicht weiter …
Das sagt das System zu installierten Versionen:

$ babel --version
7.12.10 (@babel/core 7.7.5)
$ npm --version
6.14.11
$ npx --version
6.14.11

VG
Henning

Hallo @fow0ryl,

funktioniert es, wenn du babel-cli installierst? Das hat babel abgelöst.

Viele Grüße

Sathya

Hallo @sathya

hier auf meinem System ist ein Paket “babel-cli 7.12.10-1” installiert. Da stecken rund 2000 Dateien/Verzeichnisse drin.
Als Voraussetzung für babel-cli musste ein Paket “babel-core 7.7.5-1” installiert weren, das seinerseits auch wieder rund 1700 Dateien enthält.

Und meine compile Versuche wurden genau mit diesen Paketen gemacht …

VG
Henning

Hallo @fow0ryl,

ich habe gerade noch einmal probiert - ein npm install im Verzeichnis von homegear-ui und ein anschließendes ./build.sh sollten ausreichen. Also komisch…

Viele Grüße

Sathya

Hallo @sathya,
ich habe jetzt mal gaaaanz von vorn angefangen…

  • leeres Verzeichnis /tmp/hgui angelegt
  • homegear-ui-dev.zip heruntergeladen und in /tmp/hgui/ entpackt
  • Verzeichnis nach Dateien durchsucht, die “6.26” enthalten
    • Ergebnis: es gibt nur die package.json, die diesen String enthält.
  • npm install aufgerufen
  • Verzeichnis nach Dateien durchsucht, die “6.26” enthalten
    • Ergebnis: Es gibt viele Dateien, die jetzt “6.26.3” enthalten.

Da ich minus Null Ahnung habe, was ein “npm” überhaupt macht, habe ich in einem zweiten Versuch einfach mal nach dem Download folgende Zeile in packages.json ersetzt.

   "babel-cli": "^6.26.0",

durch

 "@babel/cli": "^7.12.10",

Mit dieser Änderung läuft dann auch ein “npm run build” durch.

Kann man das einfach so machen?

Hallo @fow0ryl,

offen gestanden, keine Ahnung. Aber wenn es funktioniert, sollte es passen. Ich habe gerade mal @marwinh und Manuel gefragt, ob das so ok ist.

Viele Grüße

Sathya

Hallo @fow0ryl,

das “babel-cli”: “^6.26.0” kannst du getrost aus den Dependencies raus nehmen, da dass korrekte Paket “@babel/cli”: “^7.12.10” bereits in den devDependencies vorhanden ist. In den nächsten Builds ist das wieder bereinigt.

image

Beste Grüße
Marwin

2 Likes