Setting for Autogenerated File Names?

Is there a way to specify parameters for the files that are generated by ROOT?

I mean files like: AutoDict*.cxx, *_C.d, *_C.so, and now the *.pcm files with ROOT6.

My working directory gets quite cluttered with these files, and it’d be nice to call them something starting with “.” so that they would be hidden by default (in the terminal and in e.g. OSX Finder). Alternatively, maybe the user could specify a directory (again with a name like .rootcache) that ROOT uses for these files, kind of like how Python does it now with their pycache directory.

Another alternative, for OSX users: could the auto-generated files automatically have the hidden flag activated? That would at least hide things in the graphical Finder windows. This might be generalizable to multiple platforms with a .rootrc option like “AutoGenFilesHidden true” that would use a platform-specific file-hiding technique if available.

Jean-François

Hi Jean-François,

I think that the feature you describe might eventually be useful in some cases, but I see this more as a job for the build system rather than for the dictionary generator.
E.g., nothing prevents some build system to clean the dictionary files and other automatically generated sources after having compiled them - which is by the way what in general the install step of a package normally does.

Cheers,
Danilo

ROOT has now also started producing Foo_C_ACLiC_dict######_dictContent.h and _dictUmbrella.h for Foo.C with the ###### seemingly some hash value.

It’s getting harder and harder to use wildcards to exclude these files from versioning, to delete when using “make clean”, and to hide from the GUI/ls list.

So far I have these:
*.so
*.o
*.d
*.cxx (my source files are all .C or .h)
*.pcm
*.plist
*.dSYM
*.pyc

and now I have to add, _ACLiC_dict I guess? I know not all of those are generated by ROOT (e.g. I think the plist files are from using clang++, and for sure .pyc are from python), but a lot of them are. I think I have more than most users because I am also using ROOT5 and ROOT6 on the same project (mostly try to use ROOT5, use 6 when something doesn’t work due to 21st century).

Another problem is that some of the names are not unique enough for the user to easily identify ROOT-generated files, I might have other .so or .d files that I don’t want to delete!

Can I make a request that ROOT add a reasonably unique fixed string to the filenames of auto-generated files? Then users could more easily identify files that can be “cleaned” or ignored.

Hi Jean-François,

you describe several behaviour in your post. Let’s review them one by one:

rootcling/genreflex produce those files in version 6 only in case of not recoverable failure for debugging purposes.

it depends on the extension. The goal of Aclic is to generate shared libraries (and behind the scenes dictionaries to use them interactively, but this is an implementation detail hidden from the user). If a library is created it usually means that it was done for a reason and it should be kept, shouldn’t it? :wink:

Another problem is that some of the names are not unique enough for the user to easily identify ROOT-generated files, I might have other .so or .d files that I don't want to delete!

Could you give an example? In any case, These names directly stem from the names of the source files :frowning:

Can I make a request that ROOT add a reasonably unique fixed string to the filenames of auto-generated files? Then users could more easily identify files that can be "cleaned" or ignored.

Could you provide an example for which the current naming scheme is not appropriate?

Cheers and thanks for the feedback,
Danilo