CB1: Letzter Meilenstein: Verschiedene Makefile Fehler

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

CB1: Letzter Meilenstein: Verschiedene Makefile Fehler
Hi.
Wir sind, ob des momentanen Fehlers recht ratlos.
Die Implementierung vom letzten Meilenstein scheint zu funktionieren, wenn wir
dann aber make in der Testsuite ausführen bekommen wir immer
solche Fehlermeldungen:

./ttt.e.run > ttt.e.1.out.tmp < ttt.e.1.in
timeout: failed to run command ‘’: No such file or directory
--- ttt.e.1.res 2017-01-07 15:51:03.706771150 +0100
+++ ttt.e.1.res.tmp     2017-01-23 14:49:59.738903830 +0100
@@ -1 +1 @@
-0
+127
Makefile:93: recipe for target 'ttt.e.runstamp' failed
make: *** [ttt.e.runstamp] Error 1

Wenn wir per Hand ./ttt.e.run > ttt.e.1.out.tmp < ttt.e.1.in ausführen, ist das Ergebnis allerdings richtig und diff(1) gibt keinen
Fehler aus.
Unsere read{Char,Int} und write{Char,Int} benutzen write(2) und read(2).

Manchmal bekommen wir beim selben Setup auch diese Fehlermeldung:

make: *** No rule to make target 'ttt.e.runstamp', needed by 'run'.  Stop.

Hier kann ttt.e.run wohl nicht erzeugt werden?!
Wenn wir allerdings manuell ttt.e compilieren funktioniert das problemlos.

Lg Christian

1 „Gefällt mir“

Oha.
Es liegt wohl an ./bin/runbinary.

Wenn man das per Hand ausführt erhält man immer:

../bin/runbinary: line 18: exec: : not found

WTF.

1 „Gefällt mir“

Wenn man im Skript ein ‚eval‘ vor den ‚execs‘ voranstellt geht es anscheinend…

1 „Gefällt mir“

Ist bei mir auch kaputt, liegt wohl an dem Leeren „$IPREFIX“…

Merkwuerdigerweise existiert e.run bei mir hier immer, er beschwert sich aber dass er das eigentliche target .e.runstamp nicht findet!?
Scheint irgendwie eine raise-condition zu sein, es reicht dann ein weiteres ‚make‘ und es laeuft problemlos duch…


Der Fehler liegt wohl hier:

 timeout: failed to run command ‘’: No such file or directory  

Habt ihr /usr/bin/timeout nicht installiert? Steckt in den GNU Coreutils…


$programm.e.run ist das Executable.

Erfolgreiches Übersetzen erzeugt die .compstamp-Datei, Erfolgreiches Ausführen die .runstamp - Datei.

HTH


timeout ist im CIP installiert und es funktioniert trotzdem nicht.


Das liegt wohl eher daran, dass da ein Kommando ausgeführt werden soll, das aus einem leeren String besteht. Ich tippe auf ein Problem mit einer Variable, z. B. einen Vertipper im Variablennamen.


Ich habe runbinary nochmal angesehen… Es liegt an einem Fehler im Shell-Quoting.

Sollte jetzt gefixt sein, bitte meldet euch wenn’s immer noch kaputt ist.


Habe immernoch das Problem, dass das Makefile beim ersten Anlauf sagt:
make: *** No rule to make target ‘matmult_interactive.e.runstamp’, needed by ‘run’. Stop.
Wenn ich dann nochmal make aufrufe rattert der Rest (insbesondere auch matmult_interactive.e) durch.

1 „Gefällt mir“

Edit: Falscher Thread


Das Problem tritt bei mir auch auf, allerdings bei einem anderen Test
make: *** Keine Regel vorhanden, um das Ziel „test_assgn_arr.e.runstamp“, benötigt von „run“, zu erstellen. Schluss.

Ist es da in Ordnung, wenn mal zweimal make aufrufen muss? Oder hat jemand einen Fix dafür?


Ist in Ordnung, wenn es erst beim zweiten Aufruf von ‘make’ funktioniert. Da scheint irgendwas im Makefile kaputt zu sein :frowning: