Skip to content

the package hoodselector crasht while building with luaminifyer

luamin get problems with multicore building. Here is a log dump from a discussion between neoraider and tata:

below in german:

(22:34:42) neoraider: Ansonsten fällt mir noch auf, dass du in den Makefiles viel $(PKG_NAME) in anderen defines benutzt, was bei OpenWrt eigentlich nicht üblich ist (22:34:55) neoraider: Ich vermute nicht, dass das Probleme auslöst, aber möglich wäre es (22:35:05) neoraider: Kennst du den unterschied zwischen = und := in Make? (22:36:00) Tarek: nein (22:36:11) Tarek: warscheinlich ist := für listen oder so (22:36:28) neoraider: Nein, es hängt damit zusammen, wann Variablen aufgelöst werden (22:36:57) neoraider: Eine Variable, die mit := zugewiesen wird, wird sofort zu einem String aufgelöst (22:37:08) Tarek: Error: no such file. (Error: ENOENT: no such file or directory, open '') (22:37:11) Tarek: gepatch (22:37:17) neoraider: Eine, die mit = zugewiesen wird, behält ihre Variablen-Referenzen, und die werden erst bei der Verwendung aufgelöst (22:37:20) neoraider: Also z.B. (22:37:50) neoraider: FOO := foo FOO1 := $(FOO) FOO2 = $(FOO) FOO := bar (22:38:13) neoraider: Bei den Zuweisungen von FOO ist das := egal, da der zugewiesene Wert keine Variablen enthält (22:38:19) neoraider: Bei FOO1 und FOO2 macht es einen Unterschied (22:38:40) neoraider: FOO1 hat am Ende den Wert foo, FOO2 den Wert bar (solange FOO seinen Wert behält) (22:39:02) Tarek: soweit kann ich folgen (22:39:15) neoraider: Ein define ist erstmal einfach ein mehrzeiliges = (22:39:58) neoraider: Somit könnte es bei deiner Verwendung von $(PKG_NAME) passieren, dass irgendetwas magisches von den OpenWrt-Makefiles den Wert später verändert und die defines dann falsch sind (22:40:03) neoraider: Ich denke nicht, dass sowas passiert (22:40:07) neoraider: Aber möglich wäre es (22:40:42) neoraider: Wobei... du benutzt die Variable ja nur im Namen der defines, nicht im Wert, dann ist es eh egal (22:40:48) Tarek: z.b. ein package was paralel gebaut wird (22:41:03) neoraider: Nein, der parallele Build läuft in unabhängigen Prozessen (22:41:08) neoraider: Das sollte darauf keinen Einfluss haben (22:41:26) Tarek: Wobei... du benutzt die Variable ja nur im Namen der defines, nicht im Wert, dann ist es eh egal (22:41:33) Tarek: was meinst du im wert ? (22:42:20) neoraider: define Package/$(PKG_NAME) SECTION:=networke CATEGORY:=Freifunk Nordwest TITLE:=Select the hoods depending on the geo coordinate DEPENDS:=+lwtrace +ffnw-hoods +dkjson +gluon-mesh-batman-adv-15 +gluon-mesh-vpn-fastd endef z.B. setzt eine Variable namens Package/ffnw-hoodselector auf einen Wert mit 4 Zeilen (22:42:38) neoraider: Die Sache mit := vs. = hat nur auf den Wert der Variable eine Wirkung, nicht auf den Namen (22:44:20) neoraider: Ah, ich habe ein Problem gefunden (22:44:28) Tarek: ok d.h. ein befehl wie luamin -f (PKG_BUILD_DIR)/(PKG_NAME) > (PKG_BUILD_DIR)/(PKG_NAME)-min könnte ein problem werden (22:44:29) neoraider: Denke ich (22:44:29) Tarek: ? (22:44:53) neoraider: Hmm, wahrscheinlich nicht (22:45:15) neoraider: Aber staging_dir/host/bin/luamin ist ein absoluter Link, das sollte nicht (22:45:24) Tarek: ok und $(eval (call BuildPackage,(PKG_NAME))) auch nicht ? (22:45:26) neoraider: Aber das kann das Problem auch nicht auslösen (22:45:39) neoraider: Keine Ahnung, das könnte schon problematischer sein (22:46:16) neoraider: staging_dir/host/bin/luamin kannst du ja recht einfach in einen relativen Link umwandeln, das wäre glaube ich eine gute Idee (22:46:50) neoraider: Hast du mal vor dem luamin nen Check eingebaut, ob es die Eingabedatei gibt? (22:47:22) neoraider: Moment... (22:47:51) neoraider: luamin bekommt an der Stelle nen leeren String als Namen der Eingabedatei (22:48:27) Tarek: ok, ich kann dir nicht mehr ganz folgen (22:49:22) neoraider: Error: no such file. (Error: ENOENT: no such file or directory, open '') (22:49:25) neoraider: Da ist nen leerer String (22:49:34) neoraider: Und vorher, als da noch snippet stand, war das auch leer (22:50:04) Tarek: und woher könnte der leere string rühren ? (22:50:40) neoraider: Keine Ahnung, du könntest mal weiter oben in Luamin snippets ausgeben lassen, oder process.argv (23:04:16) Tarek: /home/tata/gluon/build/ar71xx-generic/openwrt/staging_dir/host/bin/luamin: symbolic link to /home/tata/gluon/build/ar71xx-generic/openwrt/staging_dir/host/lib/node_modules/luamin/bin/luamin (23:04:28) Tarek: also der link scheint zu funktionieren (23:07:07) Tarek: hm mir erschließt sich echt nicht wieso es ohne V=s nicht geht (23:07:21) Tarek: make package/hoodselector/compile GLUON_BRANCH=stable GLUON_RELEASE=0.9 GLUON_TARGET=ar71xx-generic (23:07:46) Tarek: bei einem core ist es übrigens auch das identische probel (23:08:35) Tarek: könnte es evtl. bei luamin -f $(PKG_BUILD_DIR)/hoodselector > $(PKG_BUILD_DIR)/hoodselector-min an den pfeil nach rechts liegen ? (23:10:20) neoraider: Ich denke nicht, dass es am Link liegt (23:10:22) neoraider: Äh (23:10:28) neoraider: Dass es am Pfeil liegt (23:10:32) neoraider: Am Link liegt es auch nicht (23:10:39) neoraider: Der sollte trotzdem lieber relativ sein (23:11:22) neoraider: Hmm (23:11:39) Tarek: https://git.nordwest.freifunk.net/ffnw-firmware/packages/commit/f87897761c8657dd77f37c59555722d046f92b16 (23:11:41) neoraider: Hast du mal probiert, in luamin noch mehr Debug-Ausgaben einzubauen? (23:12:15) Tarek: ich hab das früher schon mal in einem makefile gehabt evtl. haben die '' was zu bedeuten (23:12:57) neoraider: An sich werden die Variablen einfach von make ersetzt und das ganze durch sh -c ausgeführt (mit einem Shell-Aufruf pro Zeile des Makefiles) (23:13:14) neoraider: Also sollte das > und so einfach funktionieren (23:13:33) Tarek: jop (23:14:34) neoraider: Ich würde sehr empfehlen, in luamin mal process.argv anzuschauen (23:14:51) Tarek: ok (05/17/16 01:10:41) Tarek: hm ich muss mir das mal genauer anschune wie das in JS geht :S bin schlafen

Der output von luamin der variablen process.argv und snippets sollte zum debuggen in eine datei nach /tmp/ geschreiben werden um zu prüfen welchen inhalt diese haben.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information