PDA

View Full Version : .BAT in "Execute after" pitfall



Chebmaster
30-07-2018, 06:16 AM
I was using .bat / .sh files instead of makefiles since forever.

It turns out, lots of my problems were because [Erroneous statement removed] So, if you, say, set an envvar from inside an if () block it fails silently and without warning!

Cost me tons of headache and pointless debugging due to executables being compiled with wrong keys.

And all that time I was thinking FPC 3.x was glitchy fecal matter! Which is untrue, as it turns out!

Ñuño Martínez
17-08-2018, 11:47 AM
I use GCC make and it works like a charm. Even on Windows seems to work quite well. I know make has a lot of options and stuff, but you can still take a big advantage with basic functionality.

Chebmaster
20-08-2018, 07:26 AM
Update: this was not the case. The problem was with .bat language quirk: if you change an environment variable inside an if () block, the value you read back from it won't change until after that if () block.

Chebmaster
18-04-2020, 05:15 PM
Update: *both* Lazarus and MSEide use custom built-in .BAT interpreters with limited functionality. They do not allow changing envvars once set! They fail silently at that, no warning.
The only exception as far as I can tell is PATH.

Chebmaster
21-10-2020, 11:15 PM
Addendum:
should have used

cmd /c build.bat
instead of

.\build.bat
right from the start.
Lzarus invoking cmd.exe works perfectly, the script executes as designed finally allowing me to use loops and other advanced syntax.

Ñuño Martínez
23-10-2020, 05:40 PM
This reminds me that I was thinking about drop makefiles from my Pascal projects and use sh/bat/cmd scripts instead. Since I've learned how to do conditionals in bat/cmd files it seems more possible.

de_jean_7777
23-10-2020, 09:02 PM
Since both sh and cmd have their own quirks, I tend to avoid them. sh is more usable than cmd though. At work I use python instead of either. But personally, I have simple sh/cmd scripts to just build a simple pascal executable which does the rest. With instafpc or so should be a lot easier to make setup/build scripts than with sh/cmd. I've found, especially when one is doing redundant things, that duplicating functionality accross sh or cmd is bothersome.

Ñuño Martínez
24-10-2020, 12:06 PM
I always forget that Pascal can be used as a shell script as well. I have to see how does it work on Windows though.