Clarion 11, Unconditional Generation doesn't create new EXE/DLLs for unchanged APPs

Using Build 13855. Is anyone else having trouble with this feature not creating new EXEs and DLLs for all APPs in a solution?

SV support is telling me to try to export APPs and then import into blank APPs. However, I see this happening even with the DLLTutor example, so I don’t think it’s a problem with my Solution. In my case, the AllFiles.dll does not get built though the other dlls and the exe does.

Hi,

Sometimes this happens to me with v11.1.13815 too…
As a workaround, delete the “map” and “obj” [sub]folders and build your solution.
This will force Clarion to build all the files.

1 Like

I routinely delete all .clw and .obj files if I want to be sure of a full rebuild. I’m using C10 and there is probably an option for full rebuild but I feel more certain by deleting the source files.

1 Like

Building consists of 3 steps. Generation, Compile, Link.

Your title says Unconditional Generation. That means the generation step is unconditional. It doesnt force a recompile or relink if the files have not changed. (There are other settings on the solution pad for that.)

Its common for programmers to delete their CLW files to force a recompile. But this is unnecessary. In the build meni is sn option “clean”. This deletes the OBJ files which is what forces a recompile. Deleting the CLWs forces a regenerate (which may be what they wanted - and since all the clws are new they get a recompile as well.)

(Aside : regenerate does not replace an existing Clw if the output is the same. This saves time in the compile stage.)

3 Likes

I followed your various suggestions and did testing. What I found was that, following the suggestions DID work for the DLLTutor solution. However, for my main solution that I support, it did not.

First thing I noticed is that when I select Clean Solution (Shift F8) with DLLTutor, it deletes all the EXE, DLL, and OBJ files. Selecting Rebuld Solution recreates all these files. However, with my solution it does not. It just shows “Build started…” and “Build Finished Successfully.” instantly. Manually deleting all those files and also the MAP and CLW files makes no difference.

But I go to the Application tab and choose “Generate and Build Selected” and have just one APP selected, it builds the app and creates the EXE or DLL – exactly what I’d expect and desire. Yet if I select more than one APP and choose Generate and Build Selected, it doesn’t work.

So I guess something must be botched in my Solution. Yet I find it really weird that Generate and Build Selected only works when one APP is selected, not two or more (with my Solution).

I did a search here on the Hub with different search terms and found others having the same or similar problem:

https://clarionhub.com/t/cant-build-or-rebuild-solution/6650

FWIW - I have seen this on a handcoded solution too.

In my case, the same solution works fine in C10 IDE, but not in C11.1 IDE using C10.

Will try to nail down the exact cause next week. Sometimes, what I think is the fix, doesn’t work on the next occurrence.

Yes, I could swear that this used to work fine with earlier Clarion versions, but I start to doubt myself after a while when SV says they aren’t seeing PTS reports on this problem. But I know I’m not the only person having this happen (but I will admit I myself have not created a PTS submission on it).

They also suggested Icetips Build Automator, which feels like a band-aid but does seem to provide some extra value which may be useful to me.

If you come up with anything I and I’m sure others would be grateful to hear about it :slight_smile:

In fact, a thank you to everyone here that has posted suggestions.

Is the file being modified or is it locked by the OS or something else like an AV program?

In file explorer right mouse click, choose properties and see if the modified date and time corresponds to when you did a generate and compile.

I can delete the files (exe, dll, clw, obj, etc.) and they are not being recreated, so I don’t think it’s a matter of the files being locked. Plus I’ve tried this on different computers and experience the same effects.

And if you stepped back a clarion version on the same machine it works perfectly then?

I had not tried that actually. But today I turned on my old computer, which still has C8, 9, and 10 on it. I loaded up my solution in C10 and I hit Generate and Build All, with Unconditional Generation checked ON. When it finished, all my EXEs and DLLs had an up-to-date time stamp. A few minutes later, I hit Generate and Build All and again, all EXEs and DLLs were updated. So I’m not imagining things. :slight_smile: It did work, exactly how I would expect it to work.

Now then, this was my Solution from a couple years ago so I don’t know what would happen if I loaded up my current solution in C10, which I don’t think is possible, is it?

It could be your current dev machine. I used to keep my old hard drives when they ran out of space and bang a bigger one in. Anyway periodically I’d need something off an old hard drive so I’d dig it out, slot it in and you’d be surprised at the number of viruses that the current AV were suddenly picking up on that old HD that werent detected at the time.

STUXNET showed the AV industry can be a year behind identifying some code is malicous, some youtube documentaries on Stuxnet show this. The updates are of known viruses, a new virus is rare and the “best” require reverse engineering by humans before they can decide its a virus or not. Just look at what our jobs are like getting familar with code from a contracting perspective. Sure the AV companies have teams to reverse engineer but some of these viruses use some very clever techniques like regexes. Just the other day I was wondering about ascii art and popular ascii memes that get sent in email or txt. Classic is this regex {.}{.} . Now could regexes cause an error in some software like av scanners or mobile phone networks (Cell masts) or phone software, even like the old nokia’s phone software. Ive seen some windows api act differently consistently when the wrong data is put into an api.
Mike Hanson ulonglong formula of the ngs which was changed years later when I downloaded the ngs server again is an example. The original formula I had in use in code and it was changed in the 2nd server download. But this only affected the file listing api’s.

There is mileage in fuzzing MS Windows api’s!

But believe it or not I think windows plays a part because theres some things even they MS cant control like the cpu fans kicking in when the cpu gets hot from being thrashed when windows is sat idle and noone is using it. Jam Software Treesize has highlight malware hiding in the exfat os which might explain why MS has announced fat32 will now go larger. MS defender never picked this malware up that Jam Software shows in its treesize app, and you can not see this malware in normal windows file explorer either!
YMMV

It’s not isolated to one or more certain computers. The computer with C10 on it also has C11 and if I do my testing with C11 on it, it exhibits the same problem as my new computer(s)

Also, there is another post on this forum where some other people are experiencing precisely the same problem.

1 Like

All Im saying is it might be bug, but Ive also seen computers act up.

Edit.
I have a laptop here, never been online since windows installed, yet an android phone has delivered KB5030509 and in the windows update history, it shows the wrong install date!

That Samsung android phone has only every been plugged into the laptop for battery charging purposes.

Largest companies on the planet cant make a secure product… lol.

I encountered a similar issue where I was inadvertently creating another application in a different path with the same name. This problem arose during a migration from version 6.3 to 10. It was quite difficult to identify as the generation process completed without any apparent errors. I suggest that you verify the paths of the .clw files within the project and, in addition to deleting the physical files from the working directory**, also delete the references to these files within the project.** I hope this information is helpful.

I’ll expand on my answer. When you change -or move it- the path of an App, it may be that the references to the files within the project are not updated and the targets are generated in the old destinations.

That’s not what’s happening here. In my case, even when the CLWs are newly created, the EXE is still not newly created…WHEN I select more than one app to “Generate and Build”. BUT, if I only select ONE app, it works perfectly. It’s what I’ve been doing for months now – manually selecting each app on the Application tab and pressing Generate and Make. But I’ve got about two-dozen apps and would really like to use the automatic G&B the way I used to. Though all the time I’ve spent trying to figure this out, I could’ve done it the manual way 20 times over :roll_eyes:

1 Like

I understand you clearly. I created a program in Clarion that generates a “make.cmd” file, with the list of applications to compile in the correct order. The order is important in my case.

I also added calls where copies are made, via RoboCopy, then compilation, then generation of the installer and finally a pack with all the files in a compressed file.

I leave you the link to my GitHub with the example code.

This can at least serve as a backup in case you can’t fix it.

https://github.com/gsaracca/ClarionMake/blob/main/make.clw

Just click on the Generate’s button right arrow and set to “Generate and Build in Batch” and “Generate and Build All”.
Then you only have to click on the Generate button once for the entire solution.

On the same Applications pad there is a button (one of the last buttons) “Modify generation and build order”.

The code generation has nothing to do with why the solution will not compile.

This is happening in a non-appgen solution on my machine, as well.

The SLN compiles in C10. No prob.

In C11.1 (using C10), it simply says that the compile was successful without doing anything at all. The response is immediate.

Setting output to verbose gives no more info.

Looking to get a chance to examine it soon.

FWIW, I have been working on this same solution for a over a year and only recently ran into this issue. I’m hoping it’s something simple.