I've encountered a scenario where I'm building a Perl module as part of another Build system on a Windows machine.  I use the --install_base option of Module::Build to specify a temporary directory to put module files until the overall build system can use them.  Unfortunately, that other Build system has a problem if any of its files that it depends on are read only - it tries to delete any generated files before rebuilding them, and it can't clean any read-only files (it tries to delete it, and it's read only, which gives an error.)  By default, Module::Build installs its libraries with the read-only bit enabled.
One option would be to make a new step in the build process that removes the read-only bit from the installed files, but due to the nature of the build tool that will require a second temporary directory...ugh.
Is it possible to configure a Module::Build based installer to NOT enable that read-only bit when the files are installed to the --install_base directory?  If so, how?
 
                        
No, it's not a configurable option. It's done in the
copy_if_modifiedmethod inModule::Build::Base:If you controlled the Build.PL, you could subclass
Module::Buildand overridecopy_if_modifiedto call the base class and thenchmodthe file writable. But I get the impression you're just trying to install someone else's module.Probably the easiest thing to do would be to install a copy of
Module::Buildin a private directory, then edit it to useoct(666)(or whatever mode you want). Then invokeperl -I /path/to/customized/Module/Build Build.PL. Or, (as you said) just use the standardModule::Buildand add a separate step to mark everything writable afterwards.Update: ysth is right; it's ExtUtils::Install that actually does the final copy.
copy_if_modifiedis for populatingblib. But ExtUtils::Install also hardcodes the mode to read-only. You could use a customized version of ExtUtils::Install, but it's probably easier to just have a separate step.